École de technologie supérieure (Éts) dép. génie …...• qu’est-ce qu’une attaque par...
TRANSCRIPT
Vulnérabilités logicielles
1
MGR850
École de technologie supérieure (ÉTS)
Dép. Génie logiciel et des TI
Quiz
• Pourquoi la sécurité des systèmes connectés au réseau
Internet constitue-t-elle un problème majeur difficile à
résoudre?
• Au début, les attaques informatiques étaient effectuées
par des amateurs. Cependant, les attaques de nos jours
sont beaucoup plus motivées par des intérêts
monétaires et autres! Ce changement de motifs a
certainement engendré des changements dans la nature
des attaques et leur façon de faire : citez deux de ces
changements avec justification.
2
Quiz • Qu'est-ce que l'ingénierie sociale, donnez une technique
d'attaque appartenant à cette famille ?
• Quelles sont les principales propriétés de sécurité?
• Qu’est-ce qu’une attaque par machines zombies?
• Quelle est la différence principale entre une approche
holistique et une approche traditionnelle. Afin de
contrecarrer les vulnérabilités d’un système?
3
Plan • Motivations & contexte
• Top 10/25/.. péchés capitaux
• Buffer/Stack Overflow
• OWASP :
– Injection
– Cross-Site Scripting (XSS)
• Mitigation (remède)
• Conclusion
4
MGR850
• Vulnérabilité
– Faille dans un actif ou dans une mesure de
sécurité qui peut être exploitée par une menace
(source ISO 27000 )
5
Motivations & Contexte
MGR850
Pourquoi les logiciels?
• Les erreurs de codage et de conception représentent déjà
une réalité du métier.
• On a fait du progrès .. MAIS pas de solutions
magiques!
• Les mêmes ingénieurs faillibles développent les mêmes
logiciels vulnérables .. Cependant,
• Il y a de plus en plus d’ennemis!
6
MGR850
Motivations & Contexte
C’est quoi une vulnérabilité? Un aspect considéré « non pertinent » auparavant
Exemple : Un hacker peut-il attaquer ta voiture?
o Réponse: Oui http://www.examiner.com/article/studies-show-a-car-s-
computer-system-vulnerable-to-hacking
https://www.youtube.com/watch?v=oqe6S6m73Zw
« Sans aucune connaissance particulière sur les voitures, les
chercheurs ont réussi à prendre le contrôle du verrouillage des
portes, de désactiver les freins et même arrêter son moteur,
entre autres choses. »
o http://www.autosec.org/publications.html
L’Internet des objets !
7
MGR850
Motivations & Contexte
C’est quoi une vulnérabilité?
• Effet surprise:
Cheval de Troie
8
MGR850
Motivations & Contexte
C’est quoi une vulnérabilité?
• Effet surprise:
Traversée des Alpes
(Hannibal 218 av. J.-C)
• Chemins non empruntés
auparavant
9
MGR850
Motivations & Contexte
10
MGR850 -
Motivations & Contexte Une vulnérabilité peut être fatale ..
• Vulnérabilité WEP: TJX http://www.cbsnews.com/videos/hi-tech-heist-50063093/
• …
.. ou inoffensive!
• Défense en profondeur (Defense in depth)
• Probabilité d’exploitation: très faible
11
MGR850 -
Motivations & Contexte
Top 10/25 .. 19 Sins .. Principales sources!
• CWE/SANS Top 25 Most Dangerous Software Errors
http://cwe.mitre.org/top25/#Listing (orienté erreurs)
• OWASP Top 10 Application Security Risks (orienté
domaine):
https://www.owasp.org/index.php/Top_10_2010-Main
• 19/24 Deadly Sins of Software Security:
Programming Flaws and How to Fix Them
(livre) (orienté erreurs) 12
MGR850
Top 10/25 .. 19 Sins .. Comment choisir la liste?
C’est une question d’analyse de risque:
Vraisemblance
Impact
13
Top 10/25 .. 19 Sins ..
MGR850
Source: http://www.owasp.org/index.php/Top_10
3
2
1
Méthodologie de classement du risque
14
Schéma de
classification
Top 10/25 .. 19 Sins ..
MGR850
Méthodologie de classement du risque
3
2
1
Exemple: injection 3 2 2 3
7 évaluation du risque
2.33 * 3
15 Source: http://www.owasp.org/index.php/Top_10
Top 10/25 .. 19 Sins .. Les gagnants sont …
• OWASP TOP 10
16
MGR850
Top 10/25 .. 19 Sins .. Les gagnants sont ..
• CWE/SANS Top 25 http://cwe.mitre.org/top25/
• Interactions non-sécurisées entre les composantes
17
MGR850
Top 10/25 .. 19 Sins .. Les gagnants sont ..
• Gestion risquée des ressources
18
MGR850 - A12 Chamseddine Talhi, ÉTS
Top 10/25 .. 19 Sins .. Les gagnants sont ..
• Défense poreuse
19
MGR850
Top 10/25 .. 19 Sins .. Les gagnants sont ..
• 19 péchés capitaux
[1] Débordement de tableaux
[2] Problème de format de chaînes
[3] Dépassement de capacité d’entier
[4] Injection SQL
[5] Injection de commandes
[6] Cas d’erreurs non traités
[7] Injection de scripts à distance
[8] Trafic non protégé
[9] URL magique et champs caché
[10] Mauvaise utilisation de SSL/TLS
20
MGR850 - A12
[11] Mauvaise utilisation de mot de passe
[12] Donnée non protégée
[13] Fuite d’information
[14] Accès erroné à un fichier
[15] Mauvaise résolution d’une adresse réseau
[16] Concurrence critique
[17] Échange de clés non authentifié
[18] Générateur pseudo-aléatoire faible
[19] Méthode non conviviale
Buffer/Stack Overflow
• Les structures de données reçoivent des données qui
peuvent dépendre des entrées des utilisateurs.
• Le débordement de tampon est une erreur de
programmation qui se déclenche lorsqu’une zone
délimitée en mémoire réservée pour une variable (de
longueur fixe) est remplie avec un contenu de
longueur qui dépasse la limite.
• Le contenu déborde donc de la zone mémoire qui lui
est attribuée.
21
C’est quoi un débordement de tampon?
MGR850
Buffer/Stack Overflow Risques
• Meilleur des cas:
Arrêt brutal de l’application.
• Pire des cas:
Exécution d’un code injecté durant le débordement de la
zone mémoire
Escalade des privilèges systèmes
Prise de contrôle du système
22
MGR850
Buffer/Stack Overflow C’est quoi?
23
void copy (char *in)
{ char buf[16];
strcpy (buf, in);
...
}
int main (int argc, char *argv[])
{
...
copy (argv[1]);
...
}
Cas typique
Ne jamais faire confiance
aux données provenant
des utilisateurs!
Buffer/Stack Overflow Exploitation
1. Traquer les fonctions manipulant les données reçues
en entrée:
Directement
Quelque part sur un chemin d’exécution où les valeurs des
paramètres de la fonction ont été influencées par les
données de l’attaquant
2. Identifier les fonctions vulnérables
3. « Fabriquer » les données requises pour provoquer le
débordement au niveau de la fonction vulnérable
ciblée.
4. Place au génie
24
MGR850
25
Structure de la mémoire
Buffer/Stack Overflow
Variables locales
Adresse de retour
Paramètres passés
Stack
Frame
copy
Buff[0] Buff[1]
Buff[2] Buff[..] Buff[15]
Vers le haut
De la pile
(adresses
basses)
Variables locales
Adresse de retour
Paramètres passés
….
Stack
Frame
main
Suite de la pile
Source : http://www.matthieuamiguet.ch/media/documents/MA-SECU-02-Logiciels.pdf
void copy (char *in)
{ char buf[16];
strcpy (buf, in);
}
…
int main (int argc,
char *argv[])
{ copy (argv[1]);}
Source : http://www.matthieuamiguet.ch/media/documents/MA-SECU-02-Logiciels.pdf
MGR850
26
Structure de la mémoire
Buffer/Stack Overflow
Variables locales
Adresse de retour
(écrasée)
Paramètres passés
Stack
Frame
copy
Buff[0] Buff[1]
Buff[2] Buff[..] Buff[15]
Vers le haut
De la pile
(adresses
basses)
Variables locales
Adresse de retour
Paramètres passés
….
Stack
Frame
Suite de la pile
Source : http://www.matthieuamiguet.ch/media/documents/MA-SECU-02-Logiciels.pdf
void copy (char *in)
{ char buf[16];
strcpy (buf, in);
}
…
int main (int argc,
char *argv[])
{ copy (argv[1]);}
Source : http://www.matthieuamiguet.ch/media/documents/MA-SECU-02-Logiciels.pdf
Buff[16]
Buff[17]
Buff[..]
Buff[..]
MGR850
27
Structure de la mémoire
Buffer/Stack Overflow
Variables locales
Adresse de retour
(écrasée)
Paramètres passés
Stack
Frame
copy
Buff[0]
Buff[1]
Buff[2]
Buff[..]
Buff[15]
Vers le haut
De la pile
(adresses
basses)
Variables locales
Adresse de retour
Paramètres passés
….
Stack
Frame
Suite de la pile
Source : http://www.matthieuamiguet.ch/media/documents/MA-SECU-02-Logiciels.pdf
void copy (char *in)
{ char buf[16];
strcpy (buf, in);
}
…
int main (int argc,
char *argv[])
{ copy (argv[1]);}
Source : http://www.matthieuamiguet.ch/media/documents/MA-SECU-02-Logiciels.pdf
Buff[16]
Buff[17]
Buff[..]
Buff[..]
• Comment le code ci-dessus peut-il être utilisé pour exécuter du code
arbitraire ?
• Réponse: • Concevoir le argv[1] du programme de manière à ce que:
Il écrase l’adresse de retour avec l’adresse du début du buffer
Le début du buffer contient le code que l’on veut exécuter.
Code arbitraire
MGR850
Buffer/Stack Overflow Exemple réel (KVM)
• Contexte: KVM (Kilo Virtual Machine): Machine virtuelle Java
embarquée.
Langage de programmation: C et assembleur
Vulnérabilité: fonction standard C vulnérable
• Faille: • Les fonctions en code natif (C, assembleur) n’étaient pas
encore permises par la plateforme .. MAIS
• Pouvaient être déclarées comme interfaces ET
• L’interprète de la KVM lève une exception s’il ne trouve
pas l’implémentation de l’interface native.
28
MGR850
Buffer/Stack Overflow Exemple réel (KVM)
29
MGR850 - A12 Chamseddine Talhi, ÉTS
Code vulnérable
Données de test
OWASP Top 10
Injection
Cross-Site Scripting
30
OWASP Top 10 – 2010
The Open Web Application Security Project
31
MGR850
OWASP Top 10 – 2010
The Open Web Application Security Project
32
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Chamseddine Talhi, ÉTS
33
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
+
+
- -
=
=
=
=
34
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Top 10
35
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Top 10
36
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #1 Injection
37
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #1 Injection
• Tromper une application en incluant des commandes non désirées dans les données envoyées à un interprète
Injection
• Prend une chaîne de caractère en entrée et l’interprète comme une commande
• SQL, OS Shell, LDAP, XPath, Hibernate, etc…
Interprètes
• Toujours, beaucoup d’applications souffrent de cette vulnérabilité (ne sachant vraiment pas pourquoi)
• Pourtant, la vulnérabilité est souvent très simple à prévenir!
Injection SQL est encore assez répandue!
• Habituellement grave: lire ou modifier des bases de données entières
• Peut également permettre d’avoir le schéma complet d’une base de données, l'accès à un compte utilisateur ou même l'accès au niveau SE!
Impact typique
38
MGR850 - A12
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #1 Injection – Attaque -
Fir
ewal
l
Hardened OS
Web Server
App Server
Fir
ewal
l
Dat
abas
es
Leg
acy S
yst
ems
Web
Ser
vic
es
Dir
ecto
ries
Hum
an R
esrc
s
Bil
ling
Custom Code
APPLICATION
ATTACK
Net
wo
rk L
ayer
A
pp
lica
tio
n L
ayer
Acc
ounts
Fin
ance
Ad
min
istr
atio
n
Tra
nsa
ctio
ns
Co
mm
unic
atio
n
Kno
wle
dge
Mgm
t
E-C
om
mer
ce
Bus.
Funct
ions
HTTP
request
SQL
query
DB Table
HTTP
response
"SELECT * FROM accounts
WHERE acct=‘’ OR 1=1--’"
1. Application presents a form to
the attacker
2. Attacker sends an attack in the
form data
3. Application forwards attack to
the database in a SQL query
Account Summary
Acct:5424-6066-2134-4334
Acct:4128-7574-3921-0192
Acct:5424-9383-2039-4029
Acct:4128-0004-1234-0293
4. Database runs query
containing attack and sends
encrypted results back to
application
5. Application decrypts data
as normal and sends results
to the user
Account:
SKU:
Account:
SKU:
39
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #1 Injection – Prévention -
40
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #2 Cross-Site Scripting (XSS)
41
MGR850 -
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
MGR850 - A12 Chamseddine Talhi, ÉTS
Vulnérabilité #2 XSS – Attaque -
Application with
stored XSS
vulnerability
3
2
Attacker sets the trap – update my profile
Attacker enters a
malicious script into a
web page that stores the
data on the server
1
Victim views page – sees attacker profile
Script silently sends attacker Victim’s session cookie
Script runs inside
victim’s browser with full
access to the DOM and
cookies
Custom Code
Acc
ounts
Fin
ance
Ad
min
istr
atio
n
Tra
nsa
ctio
ns
Co
mm
unic
atio
n
Kno
wle
dge
Mgm
t
E-C
om
mer
ce
Bus.
Funct
ions
42 Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #2 XSS – Attaque -
43
MGR850
Source: http://www.owasp.org/index.php/Top_10
OWASP Top 10 – 2010
Vulnérabilité #2 XSS – Prévention -
44
MGR850
Source: http://www.owasp.org/index.php/Top_10
Mitigation • Développer un code sécurisé
– Suivre les meilleures pratiques du guide de l’organisme (OWASP) pour le
développement d'applications Web sécurisées:
• http://www.owasp.org/index.php/Guide
– Utiliser le standard de l’organisme (OWASP) pour la vérification de la sécurité
des applications :
• http://www.owasp.org/index.php/ASVS
– Utiliser les composants de sécurité standards qui répondent aux besoins de votre
organisation:
• Utilisez l’API OWASP’s « ESAPI » comme une base des composants standards:
• http://www.owasp.org/index.php/ESAPI
• Analysez vos applications
– Faites appel à une équipe d’experts
– Analysez vos applications vous-même en suivant les lignes directrices d’un
organisme (OWASP)
• OWASP Code Review Guide: http://www.owasp.org/index.php/Code_Review_Guide
• OWASP Testing Guide: http://www.owasp.org/index.php/Testing_Guide
45
MGR850
Source: http://www.owasp.org/index.php/Top_10
Conclusion • Vulnérabilités:
Une vulnérabilité n’est qu’une porte d’entrée
L’exploitation d’une vulnérabilité est un travail de longue
haleine
MAIS les attaquants peuvent être agréablement surpris
• Contremesures:
• Ne jamais faire confiance aux données des utilisateurs
• Il faut être conservateur: éliminer le maximum de
vulnérabilités.
• Veille technologique
46
MGR850
47
Références
• https://www.owasp.org/index.php/OWASP
_Risk_Rating_Methodology
• https://www.owasp.org/index.php/Categor
y:OWASP_Download
48