Download - ASFWS 2011 : Sécurité du web embarqué
Sécurité du Web embarqué
Nicolas RUFF
EADS Innovation Works
nicolas.ruff (à) eads.net
Contexte
• Vous connaissez …
Contexte
• … mais connaissez-vous ?
– nginx
– lighttpd
– Allegro RomPager
– Virata EmWeb
– …
Contexte
• Attention !
– Ceci n'est pas une conférence à propos de la sécurité d'Internet
Contexte
• … quoique …
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
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
Exemple - OWASP TOP 10
• Pas la peine d'épiloguer …
Exemple - épuisement de ressources
• Le déni de service le plus facile du monde
– Une seule thread SSL côté serveur …
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/
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
(...)
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
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
Exemple - injection de commandes
Exemple - failles d'implémentation triviales
• Démo !
– Si Dieu veut
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 …