Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Sécurité informatique sur le Web
  3. Panorama de la sécurité web
Extrait - Sécurité informatique sur le Web Apprenez à sécuriser vos applications (management, cybersécurité, développement et opérationnel)
Extraits du livre
Sécurité informatique sur le Web Apprenez à sécuriser vos applications (management, cybersécurité, développement et opérationnel)
1 avis
Revenir à la page d'achat du livre

Panorama de la sécurité web

Introduction

Ce chapitre a pour but de mettre en lumière les aspects, outils et services ainsi que le vocabulaire utilisés dans le monde de la sécurité des applications web.

À des fins pédagogiques, il sera ici question des aspects techniques et de gouvernance préalables à la mise en pratique d’un cycle de développement sécurisé. Les différentes normes, lois, bibliothèques, analyses de code et modèles de maturité seront abordés afin de pouvoir les utiliser dans les prochains chapitres. Le but est de faire apparaître un corpus générique de la sécurité des applications web.

Les normes et référentiels

1. ISO/IEC 27034

Il existe un grand nombre de normes internationales concernant une multitude de branches métier. Les plus célèbres sont les normes ISO (International Organization for Standardization) qui définissent des exigences pour assurer la conformité des matériaux, processus et services dans une organisation.

Les normes les plus utilisées sont ISO/IEC 9000 pour la qualité, ISO/IEC 22000 pour la gestion de la sécurité des denrées alimentaires et ISO/IEC 50001 pour le management de l’énergie. Toutes ces normes sont créées par des comités dont les membres sont choisis par les organisations de normalisation leaders dans leur pays telles que l’AFNOR (Association française de normalisation) pour la France par exemple.

Les avantages des normes internationales sont nombreux ; elles assurent généralement le bon fonctionnement d’un service et permettent la certification des entreprises, ce qui est un gage de qualité dans certains métiers.

Parmi les normes les plus pratiquées figurent les séries ISO/IEC 27000 et ISO/IEC 31000 relatives au management de la sécurité de l’information. Sans entrer dans les détails, ces normes ont pour objectif d’améliorer la protection contre le vol, l’altération et la perte de données, et de maîtriser le risque au sein d’un système d’information. Ci-après, quelques exigences de l’ISO/IEC 27001 et 27002 :

Index

Titre

Description

A.14.2.1

Politique de développement sécurisé

Des règles de développement des logiciels et des systèmes doivent être établies et appliquées au développement de l’organisation.

A.14.2.4

Restrictions relatives aux changements apportés aux progiciels

Les modifications des progiciels ne doivent pas être encouragées, doivent être limitées aux changements nécessaires et tous les changements doivent strictement être contrôlés.

A.14.2.7

Développement externalisé

L’organisation doit superviser et contrôler l’activité de développement du système externalisé.

A.14.2.6

Environnement de développement sécurisé...

Les bibliothèques, projets et recommandations

1. MITRE CWE

Le MITRE (Common Weakness Enumeration) est une organisation américaine qui a pour objectif la recherche et le développement dans les domaines de l’aviation, du judiciaire, de la santé, des systèmes civils et de la cybersécurité.

Cette organisation à but non lucratif soutenue par la division cybersécurité des États-Unis (National Cyber Security Division) est surtout connue pour ses deux listes de diffusions, CVE (Common Vulnerabilities and Exposures) et CWE (Common Weakness Enumeration).

La première (CVE) est une liste d’informations regroupant différentes vulnérabilités trouvées par les organisations et personnes du monde de la sécurité informatique, le but étant de fournir un identifiant commun à une vulnérabilité, et de partager des connaissances afin d’améliorer la sécurité des applications, systèmes d’exploitation, etc.

La deuxième (CWE) est une liste d’informations contenant les failles et faiblesses dans la conception et l’architecture d’une application. Contrairement à la CVE, la CWE est essentiellement centrée sur la cause, le pourquoi d’une vulnérabilité et non pas l’exploitation.

Voici le contenu d’une entrée CWE :

  • numéro d’identification et nom de la faille

  • description générale

  • description du comportement de la faille

  • probabilité d’exploitation de la faille

  • conséquences

  • potentielles atténuations

  • relation avec d’autres identifiants

  • taxonomie

  • exemple de codes

  • relation avec des CVE

  • références

Prenons maintenant un bref exemple d’une faiblesse connue comme "l’injection SQL" qui a pour identifiant CWE-89 :

Neutralisation d’ajout d’éléments spéciaux non conformes pour une commande SQL

ID

CWE - 89

Description

Un logiciel utilisant le langage SQL peut parfois comporter des entrées externes pouvant modifier la commande SQL construite au préalable.

Probabilité d’exploitation

Très haute

Exemple en PHP

$id = $_COOKIE["mid"]; mysql_query("SELECT MessageID, Subject FROM messages WHERE MessageID = ’$id’");

Potentielles atténuations...

Les guides et bonnes pratiques

1. OWASP TOP 10

L’Open Web Application Security Project, dont nous avons déjà introduit le projet OpenSAMM, est une organisation à but non lucratif créée en 2011.

Son but est la création de projets autour de la sécurisation des applications web et mobiles.

Présente dans le monde entier, l’organisation est composée de "chapitres" locaux (groupes de travail) regroupés par pays et organisant de façon indépendante des conférences (talks) et projets (projects) sur la sécurité applicative.

Parmi les projets les plus connus, le TOP 10 OWASP a pour but de regrouper les dix vulnérabilités les plus rencontrées sur les applications web. Pour arriver à ce résultat, l’OWASP organise une enquête mondiale sur les différentes vulnérabilités relevées par les contributeurs de l’enquête et ainsi, établit un classement dont les items sont les suivants :

  • injection (SQL, LDAP, Xpath, etc.)

  • violation de gestion d’authentification et de session

  • Cross-Site Scripting (XSS)

  • références directes non sécurisées à un objet

  • mauvaise configuration de sécurité

  • exposition de données sensibles

  • manque de contrôle d’accès au niveau fonctionnel

  • falsification de requête intersite (CSRF)

  • utilisation de composants avec des vulnérabilités connues

  • redirections et renvois non validés

Chaque vulnérabilité du TOP 10 OWASP est ensuite décrite sur un aspect risque :

Agents de menace

Correspondant à la description de l’attaquant (qui ?)

Vecteur d’attaque

Exploitabilité de la vulnérabilité (facile, moyenne, difficile)

Prévalence

La vulnérabilité est-elle courante (commune, répandue, très répandue) ?

Détectabilité

Est-il facile de détecter la vulnérabilité de façon proactive (facile, moyenne, difficile) ?

Impact technique

Quelles sont les conséquences et la finalité de l’exploitation de la vulnérabilité ?

Impact métier

Quel est l’impact (en termes de réputation, commercial, légal, juridique, etc.) ?

Suis-je vulnérable...

Les technologies liées à la sécurité web

1. Analyse de code statique (SAST)

L’analyse de code statique, en anglais SAST (Static Application Security Testing), est un élément essentiel dans un cycle de développement sécurisé ainsi que les méthodes d’intégration continue telles que le DevOps. Son objectif est de lire et d’analyser le code afin d’y trouver d’éventuels bugs et vulnérabilités avant la mise en production d’une application.

De nombreux outils existent sur le marché, des solutions cloud et des logiciels, ainsi que des scripts qui sont adaptés à beaucoup de langages de programmation. Voici une liste des utilitaires d’analyse de codes statiques classés par langage :

Java

FindBugs

Gratuit

Interface graphique et plugin pour Eclipse

Sonarqube

Gratuit

Plugin Eclipse, Jenkins, Maven et application web

Veracode application security platform

Payant

Solution SaaS & on premise

Checkmarx static code analysis

Payant

Solution SaaS & on premise

Source code analysis (HP/Fortify)

Payant

Solution SaaS & on premise

PHP

RATS

Gratuit

Script

RIPS

Gratuit

Application web

Veracode application security platform    

Payant

Solution SaaS & on premise

Checkmarx static code analysis

Payant

Solution SaaS & on premise

Source code analysis (HP/Fortify)

Payant

Solution SaaS & on premise

.NET

FxCop

Gratuit

Interface graphique

VCG

Gratuit

Interface graphique

Veracode application security platform    

Payant

Solution SaaS & on premise

Checkmarx static code analysis

Payant

Solution SaaS & on premise

Source code analysis (HP/Fortify)

Payant

Solution SaaS & on premise

Il existe bien d’autres outils d’analyse de code et certains, comme SonarQube, sont capables de comprendre plusieurs langages.

Si l’analyse de code est un outil fondamental pour la sécurité d’une application, elle n’est néanmoins pas suffisante car elle comporte parfois des faux positifs et ne trouve pas toutes les vulnérabilités.

L’idéal est de coupler une analyse statique (SAST) à une analyse dynamique (DAST) que nous allons introduire dans la prochaine section.

Une autre question sur la souveraineté des données peut se poser avec l’utilisation des outils cloud. En effet, certaines...

La sécurité des navigateurs et serveurs web

1. SOP, CORS

Pour introduire la sécurité des navigateurs, il est essentiel de parler de la Same Origin Policy (SOP) contenue dans tous les navigateurs récents.

La Same Origin Policy restreint la manière dont un script, image, vidéo ou iframe chargé depuis une origine peut interagir avec une autre origine.

Les deux origines correspondent si le protocole, le port et l’hôte sont identiques et peuvent donc communiquer. Voici un exemple avec l’URL : http://www.exemple.com/eni/page.html

URL

Validation

Description

http://www.exemple.com/eni/page2.html

Ok

Mêmes protocole, hôte et port

http://www.exemple.com/eni/sec/page3.html

Ok

Mêmes protocole, hôte et port

https://www.exemple.com/eni/page2.html

Non

Protocole différent

http://www.exemple.com:8080/eni/page2.html

Non

Port différent

http://exemple.com/eni/page2.html

Non

Hôte différent

images/02EP11.png

Le but de cette SOP est de protéger des scripts malicieux parfois placés volontairement ou involontairement dans une application web.

Imaginons une campagne de publicité Internet utilisée par des milliers de sites web infectés par du code malicieux. Il est très simple d’insérer une campagne publicitaire dans une page web car un script JavaScript suffit, par exemple :


<script async src="http://publicite.com/js/script.js"></script>
 

Dans notre exemple ci-dessus, le domaine est censé être de confiance mais le script (campagne publicitaire) est infecté par un cybercriminel. Il pourrait par exemple voler les cookies de l’utilisateur et les utiliser ensuite à mauvais escient, ou bien envoyer des requêtes forgées pour forcer l’utilisateur à exécuter une action, tel un virement bancaire par exemple. C’est donc dans ces circonstances que la SOP intervient et permet de protéger la communication entre domaines dans une même page web.

La SOP n’a pas pour intention de bloquer tous les scripts, images, iframes venant de l’extérieur mais seulement si ceux-ci désirent obtenir ou importer de l’information d’une page web en temps réel avec des méthodes AJAX (XMLHttprequest) par exemple.

Petit aparté, dans le cas de l’utilisation de sous-domaines dans un même...