Un retour d’expérience sur les pires audits d’applications Web – et en général il s’agit souvent d’applications embarquées. Outils, méthodes et résultats concrets seront abordés dans cette présentation.
Application Security Forum 2011
27.10.2011 - Yverdon-les-Bains (Suisse)
Conférencier: Nicolas Ruff
6. Les contraintes de l'embarqué
• Serveurs Web "allégés"
– Souvent à thread unique
• Pas de langage de script
– Utilisation massive de CGI
– Ou à défaut des langages "maison"
• Ressources limitées
– Il existe des alternatives à OpenSSL
• Et je ne parle pas de GnuTLS
7. Les risques de l'embarqué
• Toutes les failles que vous connaissez
– OWASP TOP 10
• Mais aussi …
– Epuisement de ressources
– Secrets stockés "en dur"
– Logiciels archaïques
– Injection de commandes
– Failles d'implémentation triviales
9. Exemple - épuisement de ressources
• Le déni de service le plus facile du monde
– Une seule thread SSL côté serveur …
10. Exemple - secrets stockés "en dur"
• Secrets:
– Page d'administration ou de débogage
• Souvent non documentée
– Compte
• Parfois non documenté
– Clé secrète
• Ex. clé SSH ou partie privée d'un certificat SSL
• Un mythe ?
– Malheureusement non …
• https://code.google.com/p/littleblackbox/
11.
12. Exemple - logiciels archaïques
• En 2008, cet équipement est vulnérable au ver
Slapper …
– http://www.cert.org/advisories/CA-2002-27.html
C:> dir
(...)
11/06/2008 17:21 22 756 003 avc
(...)
C:> strings avc | grep -i openssl
Stack part of OpenSSL 0.9.6a 5 Apr 2001
ASN.1 part of OpenSSL 0.9.6a 5 Apr 2001
Big Number part of OpenSSL 0.9.6a 5 Apr 2001
(...)
13. Exemple - injection de commandes
• Prendre le contrôle de n'importe quel script
CGI en 2 temps …
/var/www/cgi/admin$ fgrep system *
(…)
Binary file pt_settings.cgi matches
Binary file reboot.cgi matches
Binary file recorder_status.cgi matches
Binary file recorder_test.cgi matches
(…)
/var/www/cgi/admin$ grep "%s" recorder_test.cgi
recorder_test.cgi: TinyDBError %s
recorder_test.cgi: umount %s
recorder_test.cgi: mkdir -p %s
recorder_test.cgi: smbmount //%s/%s %s -o username=%s,password=%s
recorder_test.cgi: touch %s
14. Exemple - injection de commandes
• Rapport complet
– http://newsoft-tech.blogspot.com/2010/09/d-
link-dcs-2121-and-state-of-embedded.html
• Qui est épargné ?
– Probablement personne …
• Cf. slide suivant
16. Exemple - failles d'implémentation
triviales
• Démo !
– Si Dieu veut
17. Conclusion
• Le TOP 10 de l'OWASP, c'est bien …
• … mais le Web embarqué, c'est pire !
– En 2011, on trouve encore des équipements avec
une implémentation SSL ou HTTP-AUTH
vulnérable à des débordements de buffer …