CSI4139 / CEG4399 Design of Secure Computer Systems
Transcription
CSI4139 / CEG4399 Design of Secure Computer Systems
CSI4139 / CEG4399 Design of Secure Computer Systems Sécurité logiciel: quelques exemples
Prepared by Guy-‐Vincent Jourdan
Web Applica7ons 1.
2.
3.
4.
5.
6.
IP TCP (SSL/TLS) HTTP (HTTPS) HTML Browser’s scrip7ng engines Quelques faits 1. Aucun contrôle côté client 2. HTTP protocole stateLESS => u7lise les « session ID » 1. Vous êtes votre ID 2. Géneralement, les ID sont dans les « cookies » 3. Les applica7ons Web contournent les pare-‐
feux (les WAF ne sont pas très effec7fs non plus) OWASP The Open Web Applica7on Security Project hep://owasp.org Le “top 10” pour 2010 : hep://owasptop10.googlecode.com/files/
OWASP%20Top%2010%20-‐%202010.pdf OWASP top ten – 2010 •
•
•
•
•
•
•
•
•
•
A1-‐Injec7on A2-‐Cross Site Scrip7ng (XSS) A3-‐Broken Authen7ca7on and Session Management A4-‐Insecure Direct Object References A5-‐Cross Site Request Forgery (CSRF) A6-‐Security Misconfigura7on A7-‐Insecure Cryptographic Storage A8-‐Failure to Restrict URL Access A9-‐Insufficient Transport Layer Protec7on A10-‐Unvalidated Redirects and Forwards OWASP top ten – 2010 A1-‐Injec7on && A2-‐Cross Site Scrip7ng (XSS) • 2 aspects du même problème • Il s’agit des vulnérabilités plus communes – SQL, LDAP – HTML – XSS – “deuxième ordre” OWASP top ten – 2010 A4-‐Insecure Direct Object References • Un paramètre est envoyé côté client de façon non sécuritaire – Modifica7on de données (e.g. changement de prix) – Contournement des mécanismes de contrôle d’accès (e.g. accès à un élément qui n’est pas à moi) OWASP top ten – 2010 A5-‐Cross Site Request Forgery (CSRF) • Exploite la logique des cookies et HTML OWASP top ten – 2010 A8-‐Failure to Restrict URL Access • Time of Check to Time of Use (TOCTOU) • Directory browsing OWASP top ten – 2010 A9-‐Insufficient Transport Layer Protec7on • Par7al use of SSL/ mixed pages • “Secure” cookies (SSL only) Autres • Clickjacking heps://www.owasp.org/index.php/Clickjacking “out of context” data disclosure Source: http://blog.quaji.com/2009/08/facebook-csrf-attack-full-disclosure.html
Software Security Seminar
Browser fingerprin7ng Electronic Frontier Foundation (eff.org) : est ce que
votre browser vous identifie ?
http://panopticlick.eff.org/
Voir aussi:
https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy
Buffer overflow Imaginons la fonction suivante :
Function f(int A, int B){
Int someVariable[50];
…
}
Dans le code, la fonction est appelée :
…
f(1,2);
Ce code, une fois compilé, va contenir l’appel,
…
qui va être loadé à une adresse, disons
@1234 :
…
@1233
PUSH something
@1234
CALL f(1,2)
@1235
…
Buffer overflow . L’appel va empiler l’adresse de retours (@1234), les paramètres (1 et
2), puis les variables local statiques ( int someVariable[50])
Pile:
someVariable[0]
…
someVariable[48]
someVariable[49]
2
1
@1234
Buffer overflow En écrivant au-delà de someVariable[49], on commence à écraser
d’abord les paramètres, puis l’adresse de retours.
Pile avant:
Pile après:
someVariable[0]
…
someVariable[48] => (address: @xyz)
someVariable[49]
2
1
@1234
someVariable[0]
…
Some really => (address: @xyz)
Scary nasty
Code
1
@xyz
Buffer overflow Solutions:
• OO code
• Non executable stack
• stackguard
Logique malicieuse Malwares:
Sous unix, créer le script nommé “ls” suivant:
- augmente mes droits, crée un compte etc..
- rm ./ls
- ls $*
=> Ne pas mettre “.” au début du path
Logique malicieuse Processus lapins :
- while fork();
- while !fork();
- while true {
Mkdir x
Chdir x
}
Logique malicieuse • Cheval the Troie : voir l’article de Ken Thompson
• Vers: se propage tout seul. Voir “internet Worm” (Morris worm) en 88
• Virus
• Résidents
• “stealth”
• Polymorphiques: virus chiffrés
• Antivirus : white list vs black list