Sécurité des applications
Enseignant : Riadh Harizi
Classes : BTP (SIG); Niveau: 2 (G1&G2)
Enseignant : Riadh Harizi
01
02
Plan de cours Plan 03
04
05
06
Enseignant : Riadh Harizi
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
La sécurité constitue un enjeu majeur dans l’utilisation mais également dans le
développement des applications web.
Quelles peuvent être les conséquences d’une application mal sécurisée ?
Quels risques prennent les entreprises à exposer des applications dont
la sécurité est mal maîtrisée ?
Dans cette première partie, je vous propose de prendre conscience des
risques que les sociétés subissent au travers de quelques exemples récents,
de voir ce qu’est la sécurité et quelles sont les fonctions qu’elle doit assurer.
Pour finir, nous verrons ce qu’est une application web et comment les
principes de la sécurité s’y appliquent.
Dans ce chapitre, j’aimerais vous présenter l’importance de la sécurité dans
le développement de vos applications web et des
potentielles conséquences qu’aurait une sous-estimation du danger. Pour
cela, étudions ensemble quelques exemples récents.
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
Vous connaissez sans doute la société Yahoo! qui est une compagnie américaine qui
offre des services sur Internet comme un moteur de recherche, des boites emails, une
messagerie instantanée et de l’hébergement web.
Cette société importante du paysage Internet mondial, en dépit de son poids financier
colossal de 62 milliards de dollars, a connu par le passé de nombreux déboires de
sécurité, dont le plus important est le suivant.
Récemment, Yahoo annonçait avoir subi en 2014 une cyberattaque ayant affecté 3 milliards de
comptes utilisateurs. Les données frauduleusement acquises comprennent les adresses e-mail,
dates de naissance, les numéros de téléphone et les mots de passe. En bref, toutes les
informations dont les criminels ont besoin pour usurper une identité.
Les causes de ce dysfonctionnement majeur seraient liées à un accès mal sécurisé au centre de
contrôle des comptes Yahoo!. Les conséquences pour l’entreprise ont été particulièrement
néfastes : le cours de bourse s’est effondré et Yahoo! a été rachetée par un concurrent.
Dans cet exemple, c’est la sécurité des accès qui était en jeu. Nous
étudierons ensemble comment on peut sécuriser les accès de vos
applications.
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
Les Sud-Coréens apprennent en janvier 2014 que les données de 100 millions de cartes de
crédit ont été volées depuis plusieurs années. 20 millions de comptes bancaires ont également
été piratés.
Le voleur de données était en fait un employé du Korea Credit Bureau (KCB), une société d’étude
de solvabilité. Celui-ci volait les informations personnelles de clients de sociétés émettrices de
carte de crédit lorsqu’il travaillait pour elles comme consultant. Il avait tout simplement copié les
données sur un disque dur externe au fil des mois et les a ensuite revendues à des sociétés
de marketing.
Vous l’aurez compris, cet exemple met en lumière des failles dans
l’authentification et les autorisations aux applications. Nous verrons ensemble
quelles sont les bonnes pratiques à mettre en œuvre pour réduire ces
vulnérabilités.
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
Les étiquettes d’identification radio sont des puces sans contact transmettant des données à distance par
moyens radioélectriques. Ce type de puces est utilisé dans le système Navigo dans les transports en Île-
de-France ou pour le marquage des animaux. Au-delà de ces exemples proches de nous, les utilisations
potentielles de cette technologie sont nombreuses : gestion de stocks, grands magasins, télépéages
d’autoroutes, jusqu’aux nouveaux passeports.
Avec des moyens de détection un
peu sophistiqués, la distance
d’accès effective aux étiquettes
RFID peut atteindre plusieurs
dizaines, voire centaines de
mètres. La plupart des dispositifs
ne chiffrant pas (ou mal) les
données transmises, les
informations peuvent donc
être interceptées à cette distance.
Quel est l’élément concerné par une faille de sécurité dans ce cas ? Il s’agit bien
sûr du canal de communication qui n’est pas sûr. Nous aborderons
également ce point dans le cours.
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
VTech est une compagnie américaine qui pèse plusieurs milliards de dollars à la bourse de New York
et qui vend du matériel informatique. Un jour en 2015, un journaliste les a appelés pour leur apprendre
qu’il avait accès à toute leur base de données clients.
Vtech vend aussi des téléphones et possède évidemment un magasin en ligne. La plupart des objets
et jouets vendus par VTech sont capables de se connecter au Cloud et permettent de stocker des
images et des enregistrements de voix sur les serveurs de la société.
Un hacker a découvert quelques failles de sécurité dans les applications web de VTECH et notamment
celles liées aux injections de code malicieux. Il s’agit d’une technique qui consiste à injecter des
données dans une application pour en modifier le comportement.
Les dommages causés par le hacker sont estimés à plusieurs millions de dollars. Et ne parlons pas
de la réputation de l’entreprise dont les clients représentent 5 millions de parents.
Ici, les éléments en défaut est la mauvaise manipulation de données non
fiables.
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
vous voyez à quel point les failles de sécurité d’applications ou de technologies
peuvent avoir un impact néfaste sur le business des sociétés.
Néanmoins, ces exemples ne représentent que la partie émergée de l’iceberg.
Rendez-vous compte :
•Au niveau mondial, une étude faite que le coût cumulé des failles de
sécurité concernant les données pourrait représenter 8 trillions de dollars entre 2017 et
2022 ;
•Gemalto, un des leaders mondiaux en cybersécurité, estime qu'environ 5,6 millions de
données personnelles (adresse mail, mot de passe, numéro de carte bleue…) sont
dérobées chaque année ;
Enseignant : Riadh Harizi Apprivoisez les vulnérabilités des applications et
leurs conséquences
En résumé
Dans ce chapitre, nous avons vu que :
•Les exemples de failles de sécurité sont monnaie courante à l’heure actuelle.
Les plus grandes entreprises sont touchées ;
•Toutes les dimensions des applications sont concernées.
En particulier : les accès, le canal de communication ou bien encore la manipulation des
entrées utilisateur.
Dans ce contexte global fortement marqué par une forte expansion des attaques et des
impacts potentiels sur les entreprises et les particuliers
Dans le prochain chapitre, à voir ce qu’est la sécurité et quelles sont les fonctions à
préserver.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
Dans le chapitre précédent, vous avez pris conscience des impacts négatifs
d’applications mal sécurisées pour les sociétés et les utilisateurs et de
l’importance de se protéger.
Dans ce contexte, qu’est-ce que la sécurité et quelles sont ses missions ?
Maîtrisez le concept de sécurité
Au sens large, la sécurité c’est l’ensemble des moyens (techniques, organisationnels,
humains, légaux) pour minimiser la surface d'exposition d'une application ou d'un
système contre les menaces :
•Passives visant à écouter ou copier des informations illégalement ;
•Actives consistant à altérer des informations ou le bon fonctionnement d’un service.
Le risque zéro n’existe pas. Éviter tous les risques n’est pas possible mais on
peut réduire la surface de l’application ou du système exposé aux
vulnérabilités.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
Sécuriser une application, c’est s’intéresser notamment aux accès ou bien encore
aux données qui communiquent avec l’extérieur.
Au-delà de ces notions importantes, la sécurisation d’une application ou d’un système
s’attache aux 6 aspects suivants :
•L’authentification ;
•Le contrôle d’accès ;
•L’intégrité des données ;
•La confidentialité des données ;
•La non-répudiation ;
•La protection contre l’analyse du trafic.
Voyons-les en détail !
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
L’authentification
L’authentification consiste à savoir lier, grâce à une caractéristique discriminante (un mot de
passe par exemple) une identité à une entité donnée d’un système (la partie administration
d’un site, un processus en particulier ou 1 ordinateur par exemple).
Elle s’applique à l’utilisateur, à l’émetteur d’un message ou à l’auteur d’un document.
Pour implémenter ces fonctions, plusieurs approches sont possibles :
authentification par identifiant et mot de passe, authentification par certificat,
authentification par carte,
authentification multimodale qui associent plusieurs des méthodes précédentes.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
L’authentification est probablement la notion la plus simple à comprendre, mais en tant que
développeur, c’est une de celles qui vous demanderont le plus de travail d’implémentation.
Les problèmes potentiels à gérer sont nombreux :
•Dé personnification : Comment s’assure-t-on que notre utilisateur est bien la
personne qu’il prétend être ?
•Rejeu : Comment lutter contre l’espionnage, la capture et la réutilisation des mots de
passe par exemple ?
•Rebond : Comment lutter contre l’espionnage, la capture et la réutilisation des mots
de passe dans une autre partie du système ou sur autre application par exemple ?
•Altération des messages entre les différents acteurs du système : Comment
s’assure-t-on que personne ne s'approprie une signature illégalement ?
•Transférabilité du mot de passe : comment lutter contre les comportements du type
: « Tiens, voilà mon mot de passe » ?
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
Le contrôle d’accès
Une fois authentifié, l’utilisateur souhaite accéder à des fonctionnalités offertes
par l’application. Au préalable, il faut contrôler s’il a le droit d’y accéder.
Assurer cette fonction c’est avoir la capacité de lier une ressource (une base de
données par exemple) avec des droits d’accès à cette ressource et une entité.
Pour gérer cette problématique, on attribue souvent à l’utilisateur
un rôle (utilisateur, éditeur, administrateur par exemple) qui va lui octroyer
des privilèges sur des ressources manipulées par l’application.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
L’intégrité
Il s’agit ici de prévenir l’altération volontaire ou accidentelle d’une donnée
ou des services d’un système. Elle s’applique à la phase
de communication entre composants, au flux, au stockage des
données (altérations de contenu) et au système (détection d’intrusion).
Les moyens technologiques principaux pour y parvenir sont le calcul
d’une signature unique et caractéristique d’une ressource. Les fonctions
de hachage ou le calcul de sommes de contrôle peuvent être utiles dans
ce contexte.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
La confidentialité des données
La confidentialité des données doit être assurée lors d’échange
de données sensibles (mot de passe, données bancaires ou
médicales.) Il s’agit de garantir que des données acquises
illégalement soient inutilisables.
Au-delà des mesures organisationnelles que l’on peut mettre en
œuvre (marquage, gestion particulière), les moyens technologiques
principaux pour mettre la confidentialité en œuvre reposent sur
des mécanismes de chiffrement qui permettent de protéger
l’échange et le stockage des données.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
La non-répudiation
Cette fonction consiste à s’assurer que l’envoi et la réception d’un
message sont incontestables. En d’autres termes, l’émetteur ou le
récepteur d’une donnée ne doit pas être en mesure de nier son
implication en cas de litige. Le moyen technologique repose sur les
certificats, que nous verrons plus en détail plus loin dans le cours.
Cette mesure est particulièrement complexe à mettre en œuvre, car
il est difficile de remettre en cause la bonne foi d’une personne
prétextant qu’elle s’est fait dérober son identité.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
Protection contre l’analyse du trafic
La sécurité des communications repose sur des mécanismes déjà abordés et
que nous approfondirons ensuite :
mécanisme d’authentification, de chiffrement et de hachage. L’exemple le
plus emblématique est l’utilisation des protocoles SSL (Secure Socket Layer)
et TLS (Transport Layer Security) dans les échanges sur le Web grâce au
protocole HTTPS dont vous avez évidemment entendu parler.
Enseignant : Riadh Harizi Identifiez les aspects de la sécurité d’une application
En résumé
La sécurité, c’est l’ensemble des moyens (techniques, organisationnels, humains, légaux)
pour minimiser une application ou un système contre les menaces :
•Passives visant à écouter ou copier des informations illégalement ;
•Actives consistant à altérer des informations ou le bon fonctionnement d’un service.
La sécurisation d’une application ou d’un système s’attache à 6 aspects primordiaux :
•L’authentification ;
•Le contrôle d’accès ;
•L’intégrité des données ;
•La confidentialité des données ;
•La non-répudiation ;
•La protection contre l’analyse du trafic.
Dans cette partie, vous avez appris ce qu’est la sécurité et quelles sont les fonctions à
assurer pour minimiser l’impact des différentes menaces qui pèsent sur vos systèmes. Mais
comment cela s’applique-t-il dans nos applications ? Nous le voyons en détail tout de suite
dans le prochain chapitre.
Enseignant : Riadh Harizi La sécurité appliquée aux applications web
Depuis le début du cours, vous entendez parler de sécurité applicative. Pour
autant, nous n’avons pas défini clairement ce qu’est une application ni dans quels
domaines s’applique la sécurité.
C’est ce que je vous propose de voir pour clore ce chapitre introductif.
Qu’est-ce qu’une application ?
C’est un programme qui est capable de réaliser tous les traitements autorisés par le
langage utilisé pour le concevoir. Les besoins d’une application sont :
•D’interagir avec l’utilisateur ;
•De traiter les demandes ;
•D’accéder aux données.
Et une application web alors ?
C’est une application qui répond à la même définition et qui connaît les mêmes besoins qu’une
application classique. Pour autant, il y a une subtilité de taille : elle formate obligatoirement sa
réponse en HTML !
Pour se représenter une application web et comprendre sur quels composants s’appliquent les
fonctions du concept de sécurité, utilisons le schéma suivant :
Enseignant : Riadh Harizi
La sécurité dans une application web
Enseignant : Riadh Harizi
Comme vous le voyez, la sécurité affecte chaque composant d’une application :
•L’interaction avec l’utilisateur (authentification, échanges de données,
données envoyées par formulaires) oblige les développeurs à être vigilants ;
•Le traitement des demandes requiert également d’être attentif (données
d’entrée non fiables par exemple) ;
•L’accès aux données nécessite également la mise en place de règles de
sécurité spécifiques.
Enseignant : Riadh Harizi
En résumé
Dans ce chapitre, nous avons vu qu'une application web est un programme qui est
capable de réaliser tous les traitements autorisés par le langage utilisé pour le concevoir,
et qui doit obligatoirement formater sa réponse en HTML. La sécurité s’applique à tous
ses composants.
Cette partie introductive vous a permis d’appréhender les risques auxquels font
face les applications et systèmes. Il est donc crucial de mettre en place la sécurité au
cœur de vos développements. Vous avez également appris ce qu’est la sécurité et
quelles fonctions elle doit remplir pour être efficace. Enfin, vous avez appréhendé le
fonctionnement des applications web et comment les fonctions précédentes s’appliquent.
Dans la prochaine partie, je vous propose de voir comment implémenter ces principes
dans vos applications.
Enseignant : Riadh Harizi Sécurisez vos communications avec TLS
Imaginez que vous vous connectiez à un routeur sans fil non fiable, comme un accès
Wi-Fi public gratuit. Vous essayez alors d’accéder à votre compte en banque via le site
de votre banque en ligne. Dans la plupart des cas, vous auriez obtenu une erreur de
certificat vous indiquant que le site de votre banque ne possède pas les certificats
appropriés
En d’autres termes, le navigateur vous prévient que le site de votre banque ne
possède pas de « carte d’identité » valide (faille sur la fonction authentification).
Vous ne faites pas attention et vous acquittez le message d’erreur. Vous vous connectez
à votre compte avec vos identifiants, vous réalisez quelques opérations : tout semble
normal !
En réalité, une personne malveillante a pu mettre en place un serveur qui ressemble à
celui de votre banque. Quand vous vous y connectez, ce serveur rapatrie la page web
de votre banque, la modifie un peu et vous la présente. Lorsque vous vous connectez, ce
serveur intermédiaire enregistre les détails de votre compte, se connecte à votre place,
accède aux détails de votre compte et vous en envoie une copie. Il s'agit d'une faille sur
la fonction confidentialité.
Enseignant : Riadh Harizi Sécurisez vos communications avec TLS
On appelle ce type de malversation, une attaque de l’homme du milieu, en
faisant référence à ce serveur intermédiaire qui se fait passer pour votre banque.
Les axes de protection
L’exemple précédent met en évidence les fonctions de sécurité compromises :
la confidentialité des données échangées, leur intégrité et l’authentification.
Pour se protéger, la mise en place de protocoles de sécurisation de données comme TLS
(Transport Layer Security), successeur de SSL (Secure Socket Layer), est recommandée.
L’objectif initial de TLS était la sécurisation du protocole HTTP, mais son champ
d’application s’est élargi depuis : protection d’autres services comme SMTP ou LDAP,
création de réseaux privés virtuels (VPN), sécurisation de réseaux sans fil (EAP-TLS).
TLS assure 3 fonctions majeures pour la sécurité des communications inter-
applications : la confidentialité, l'intégrité et l'authentification
Enseignant : Riadh Harizi Sécurisez vos communications avec TLS
La confidentialité
Pour éviter l’écoute par un tiers, les informations échangées ne doivent pas pouvoir
être espionnées. Cette fonctionnalité est assurée par des algorithmes de
chiffrement symétriques pour l’échange des données (AES 256, RC4, DES,
BlowFish) et asymétriques (RSA, DSA, Diffie Helmann) dans la phase
d’authentification et d’échange de la clé secrète.
L’intégrité
Le client et le serveur doivent pouvoir s’assurer que les messages transmis ne sont
pas altérés et qu’ils proviennent bien de l’expéditeur attendu. Dans le cas de TLS,
ces fonctionnalités sont assurées par la signature des données (HMAC, MD5,
RIPEMD, SHA-1).
L’authentification
Ce point important permet de s’assurer de l’identité du programme, de la personne ou
de l’entreprise avec laquelle on communique. Cette fonctionnalité est implémentée
grâce à l’utilisation de certificats X.509.
Enseignant : Riadh Harizi Sécurisez vos communications avec TLS
En résumé
Dans ce chapitre, vous avez appris que :
•Le canal de communication qu’utilisent les applications est vulnérable face
aux attaques de l’homme du milieu ou à l’analyse des trames ;
•Pour se protéger, il faut mettre en place une méthode qui garantit
la confidentialité, l’intégrité des données et l'authentification des
interlocuteurs, personnes ou systèmes ;
•L’ANSSI recommande l'utilisation du protocole TLS.
Vous l’aurez compris, le canal de communication doit être sécurisé pour
échanger des données en toute quiétude.
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
L'authentification et les risques associés
Le mécanisme d’authentification consiste à établir un lien irréfutable entre une
personne et une identité numérique qui est souvent stockée dans un serveur d’annuaire,
une base de données ou un Active Directory de Windows.
Aujourd’hui, la plupart des applications utilisent encore le mot de passe comme moyen
d'assurer l’authentification. Or, cette méthode doit être considérée comme peu sûre.
En effet, il assez simple de s’attaquer à ses vulnérabilités :
•Attaque facilitée par le caractère prédictif du mot de passe : certains de vos utilisateurs
utilisent leur date de naissance, ou le nom de leur femme ou encore 123456 ;
•Attaque par force brute : par dictionnaire par exemple ;
•Attaque sur des bases de données contenant des mots de passe mal sécurisés ;
•Attaque par phishing
Souvenez-vous que si un utilisateur malveillant réussit à obtenir un mot de passe, il
aura accès à de nombreuses informations, car souvent les utilisateurs choisissent
le même mot passe pour des applications différentes.
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
Sécurisez le stockage des mots de passe
Un des points les plus sensibles du mécanisme d’authentification est la manière dont
les applications enregistrent les mots de passe de leurs utilisateurs.
Elles comportent toutes une vulnérabilité au moins !
• Stockez les mots de passe en clair
• Stockez une signature du mot de passe
• Stockez les mots de passe avec un sel
Mettez en place les bonnes pratiques
Authentification par élément physique
Biométrie de l’utilisateur
Authentification multifactorielle
Coupler avec des mécanismes de contrôle d’accès ou
d’authentification robuste
Enseignant : Riadh Harizi
En résumé
•Le mécanisme d’authentification consiste à établir un lien irréfutable entre
une personne et une identité numérique ;
•Les mécanismes classiques de stockage de mots de passe (en clair, haché
et avec sel) comportent des faiblesses ;
•Pour rendre ce mécanisme robuste, on doit utiliser des fonctions à fort coût
de calcul comme bcrypt, disponibles dans de nombreux langages ;
•Pour renforcer encore le mécanisme d‘authentification, les
approches multifactorielles sont à privilégier.
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
Authentification sur un site Web
Objectif de l’activité
Réaliser un module d’authentification d’un utilisateur sur un site Web.
Le dispositif doit être permettre à un utilisateur de s’authentifier de manière
sécurisée :
•il demande un formulaire de connexion ou d’enregistrement s’il n’est pas
encore enregistré,
•il remplit le formulaire avec son identifiant (son email par exemple) et son mot
de passe,
•il accède à des pages à accès limité sur le site,
•il peut se déconnecter,
•il est automatiquement déconnecté après un certain temps sans activité.
Enseignant : Riadh Harizi Mettre en place un mécanisme d’authentification
Enseignant : Riadh Harizi
Enseignant : Riadh Harizi
01
02
03
04