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

Documents pareils