Vous êtes sur la page 1sur 30

SÉCURITÉ DU WEB ET DES

APPLICATIONS
DISTRIBUÉES

SEDDIK ILIAS
SÉCURITÉ WEB
Introduction
• Les applications web se complexifient et les bibliothèques, les langages, les plateformes permettant de
contribuer à la création d’une application web sont de plus en plus nombreux et populaires.
• De nombreuses technologies et protocoles viennent ajouter à la surface d’attaque possible pour les
Hackers (Cloud computing, peer-to-peer, IoT, APIs…etc)
SÉCURITÉ WEB
Introduction
SÉCURITÉ WEB
Évaluation des risques selon OWASP (Open Web Application Security Project)

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

Vecteur d’attaque (exploitabilité) 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é (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.) ?
SÉCURITÉ WEB
Principales vulnérabilités
SÉCURITÉ WEB
Principales vulnérabilités
1. Violation d’authentification et de session (hijacking)

• La violation de session et d’authentification permet à un cybercriminel de capturer ou contourner les


méthodes d’authentification utilisées par une application web.
• Les attaques de ce type sont dues à des défauts de conception lors de la création de l’application ou au
manque de chiffrement réseau ou des mots de passe.
• Les risques d’une telle attaque sont importants car elle touche directement à la protection des données des
utilisateurs et à leur vie privée mais aussi aux administrateurs des entreprises avec le risque que des
cybercriminels accèdent à des comptes non autorisés.
SÉCURITÉ WEB
Principales vulnérabilités
1. Violation d’authentification et de session (hijacking)
SÉCURITÉ WEB
Principales vulnérabilités
2. Les attaques XSS (Cross Site Scripting Attack)

Le XSS permet à un cybercriminel d’envoyer du code JavaScript à l’aide d’une entrée utilisateur
(formulaire, en-tête HTTP, query string, etc.) mal protégée, afin de récupérer des identifiants de
sessions, de hameçonner, d’enregistrer les touches frappées par l’utilisateur, etc.

L'exploitation d'une faille de type XSS permettrait à un intrus de réaliser les opérations suivantes :
• Redirection (parfois de manière transparente) de l'utilisateur (souvent dans un but d'hameçonnage)
• Vol d'informations, par exemple sessions et cookies.
• Actions sur le site faillible, à l'insu de la victime et sous son identité (envoi de messages,
suppression de données…)
• Rendre la lecture d'une page difficile
SÉCURITÉ WEB
Principales vulnérabilités
2. Les attaques XSS (Cross Site Scripting Attack)
SÉCURITÉ WEB
Principales vulnérabilités
3. Cross Site Request Forgery (CSRF)
Dans ce type d’attaque, le Hacker va forcer la victime à lancer une requête (en général HTTP) à son insu.
L’objectif peut être de changer son mot de passe, acheter sur un site marchand ou le déconnecter d’une
application. Mais elles sont également souvent utilisées pour accéder à un serveur ou la victime est autorisée
(on parle alors d’attaque par rebond)
Le vecteur de l’attaque peut être un faux email, une messagerie mal sécurisée, un accès à un site
dangereux…
SÉCURITÉ WEB
Principales vulnérabilités
3. Cross Site Request Forgery (CSRF)
SÉCURITÉ WEB
Principales vulnérabilités
4. Erreurs de configuration ou humaines
• Références directes non sécurisées à un objet: Une
erreur dans l’application permet à quelqu’un d’accéder à
une ressource alors qu’il ne devrait pas être autorisé (par
exemple en copiant l’URL directement)
• Exposition de données sensibles: concerne surtout les
attaques cryptographiques, voire le manque de
chiffrement sur les réseaux et données stockées. Selon
l’OWASP, la prévalence et l’exploitabilité de ce risque
sont faibles. En revanche, l’impact technique, quant à lui,
est sévère.
• Redirections et renvois non validés: une vulnérabilité
profitant d’une faiblesse dans le code et dont l’objectif
est de rediriger l’utilisateur sur une page malveillante ou
administrative du site web.
SÉCURITÉ WEB
Principales vulnérabilités
5. Le phishing
Regroupe des technique d’ingénierie sociale utilisées par les cybercriminels pour inciter des
utilisateurs peu méfiants à leur envoyer leurs données confidentielles, infectant ainsi leurs
ordinateurs avec des programmes malveillants ou ouvrant des liens vers des sites infectés.
Dans le cas du Web, cela peut être dû à des ouvertures de site ou d’email piégés, à des
téléchargements non sécurisés.
SÉCURITÉ WEB
Principales vulnérabilités
6. Les injections
Au premier rang du classement des dangers selon l’OWASP, ou un certain code ou des données
seront injecter par l’attaquant directement sur l’application (plutôt coté serveur), afin de modifier
son comportement.
Il existe une multitude d’attaques par injection telles que LDAP, XPath, NoSQL, OS, etc. La plus
connue est sûrement l’injection SQL, qui permet de tronquer des commandes SQL, afin de
récupérer des informations ou de les corrompre au niveau du serveur.
SÉCURITÉ WEB
Principales vulnérabilités
6. Les injections SQL
SÉCURITÉ WEB
Certaines mesures à prendre (utilisateurs)
• Ne transmettre des données sensibles (less mots de passe ou les numéros de carte de crédit par
exemple) qu’à des site utilisant des protocoles sécurisés comme HTTPS

• Installer de petits logiciels destinés à mieux sécuriser les navigateur. Exp Chrome :
https://chrome.google.com/webstore/category/extensions

• Utiliser le mode "incognito" (ou le mode "navigation privée") du navigateur pour les tâches ou
il y aura des données sensibles.
SÉCURITÉ WEB
cycle de développement sécurisé
SÉCURITÉ WEB
cycle de développement sécurisé
SÉCURITÉ WEB
cycle de développement sécurisé
SÉCURITÉ WEB
cycle de développement sécurisé
SÉCURITÉ WEB
cycle de développement sécurisé
SÉCURITÉ WEB
cycle de développement sécurisé
SÉCURITÉ WEB
Protocoles de transmission sécurisée
SSL signifie Secure Sockets Layer et son équivalent actuel TLS signifie Transport Layer Security. Ils sont
tous les deux des protocoles situés entre le niveau Transport et Application et servent au chiffrement et à
l’authentification sur le Web.
SÉCURITÉ WEB
Protocoles de transmission sécurisée
SSL et TLS proposent les fonctionnalités suivantes :

Authentification
– Le client doit pouvoir s’assurer de l’identité du serveur. Depuis SSL 3.0, le serveur peut aussi
demander au client de s’authentifier. Cette fonctionnalité est assurée par l’emploi de certificats.
Confidentialité
– Le client et le serveur doivent avoir l’assurance que leur conversation ne pourra pas être écoutée par
un tiers. Cette fonctionnalité est assurée par un algorithme de chiffrement.
Identification et intégrité
– Le client et le serveur doivent pouvoir s’assurer que les messages transmis ne sont ni tronqués ni
modifiés (intégrité), qu’ils proviennent bien de l’expéditeur attendu. Ces fonctionnalités sont assurées par la
signature des données.
AUTHENTIFICATION ET AUTORISATION

L'authentification est la vérification des informations d'identification lors de la


tentative de connexion. Ce processus consiste à envoyer les informations
d'identification du client au serveur d'accès distant sous forme de texte brut ou crypté à
l'aide d'un protocole d'authentification.

L'autorisation est la vérification que la tentative d’accès à une ressource ou un service


est autorisée. L'autorisation survient après une authentification réussie.
AUTHENTIFICATIONS
Authentification basique
 Celle-ci ne demande qu'un nom d'utilisateur et un mot de passe. Le client prend ces
deux identifiants et les transforme en une valeur unique, qu'il passe dans la requête
grâce à un header HTTP appelé Authorization.

Obligation d’utiliser un
cryptage (comme SSL)
pour éviter les attaques
Man in the Middle ce qui
consomme des ressources,
en plus du risque de
sessions restées ouvertes
AUTHENTIFICATIONS
Authentification par une clé API

Dans cette approche, une valeur générée unique est attribuée à chaque utilisateur pour
la première fois, ce qui signifie que l'utilisateur est connu. Lorsque l'utilisateur tente de
revenir dans le système, sa clé unique (parfois générée à partir de la combinaison
d’informations matériel et de données IP, et parfois générée de manière aléatoire par le
serveur qui les connaît) est utilisée pour prouver qu'il s'agit du même utilisateur
qu'auparavant.
Ce système est très bon en terme de performance et facile à mettre en place, c’est
pourquoi il est très utilisé par les Web APIs.
Cependant c’est une solution peu sécurisée étant donné que tout dépend d’une clé qui
peut-être récupérée sur le réseau (par sniffing) ou une machine non sécurisée (par un
spyware par exp)
AUTHENTIFICATIONS

Open Authorization (OAuth)

Cette fois, l'utilisateur se connecte à un système. Ce système demandera alors


l'authentification, généralement sous la forme d'un jeton, ou d’un username/password.
L'utilisateur transmettra ensuite cette demande à un serveur d'authentification, qui
rejettera ou autorisera cette authentification. À partir de là, le jeton est fourni à
l'utilisateur, puis au demandeur (le service à sécuriser). Un tel jeton peut ensuite être
vérifié à tout moment, indépendamment de l'utilisateur par le demandeur, aux fins de
validation, et peut être utilisé dans le temps avec une portée et une période de validité
strictement limitées pour OAuth2.

Le fait d’avoir un serveur tiers et un renouvellement


des jetons permet une vraie sécurité et l’introduction
de la notion d’autorisations
AUTORISATIONS
Open Authorization (OAuth) constitue une bonne solution à mettre en place pour
gérer les droits des utilisateurs en lecture/écriture.

Les SESSIONS
Un mécanisme permettant à certains types de serveurs (comme eux utilisant PHP) de
gérer l’identité des utilisateurs.
Il peut être efficace dans des réseaux limités ou pour un nombre d’utilisateurs restreints,
mais ils obligent les serveurs à conserver des informations en mémoire ce qui peut-être
problématique au cas ou le nombre de clients deviendrait trop important, et c’est contre
le principe stateless des Api Rest.
En plus les systèmes de sessions utilisent les web COOKIES pour identifier le client,
ce qui peut constituer une vulnérabilité à des attaques par sidejacking ou XSS par
exemple.
RESSOURCES COMPLÉMENTAIRES

• Principales attaques WEB en 2020 (OWASP)


• Répertoire utilisé pour les ateliers sécurité Web (solution5)

Vous aimerez peut-être aussi