Zozzle et Blade Defender : deux outils de détection de codes malveillants

Date : 02 Février 2011

On assiste de nos jours à de plus en plus d'attaques utilisant du code JavaScript malicieux. Ces attaques reposent sur l'insertion de code malicieux dans des sites web légitimes, afin d'exploiter les faiblesses des navigateurs.

Pour faire face à ces attaques, plusieurs approches sont déjà utilisées, par exemple :
  • Les filtres (listes blanches ou listes noires) permettent aux internautes d'éviter les sites dangereux (comme Google Safe Browsing),
  • ou des bacs à sable (sandbox) intégrés dans le navigateur pour isoler l'application du système d'exploitation (ou même isoler la page web des autres pages web chargées).

Dans cet article nous présentons deux nouvelles initiatives :
  • Zozzle de Microsoft,
  • et le projet universitaire Blade Defender.

Zozzle : le nouvel outil de détection de code JavaScript malicieux de Microsoft


Contexte

Microsoft a développé un nouvel outil nommé Zozzle. Il s'agit d'un outil de détection de code JavaScript malicieux qui a vocation à être intégré dans le navigateur. Il s'agit d'un outil expérimental, non encore distribué par Microsoft. Le présent article vous en présente les grandes lignes.

Principe de Zozzle

Zozzle est un détecteur "quasi-statique", capable de déterminer si une page web contient une attaque par débordement de tas (de type "heap spraying exploit") :
  • Il utilise tout d'abord le moteur JavaScript du navigateur web pour contourner les problèmes d'obfuscation et récupérer le code JavaScript généré dynamiquement.
  • Puis il effectue une analyse purement statique de ce code JavaScript.
L'analyse statique repose quant à elle sur la représentation du JavaScript sous forme "d'arbres de syntaxe abstraite" (AST) puis sur une analyse statistique (bayésienne) de ces AST afin d'identifier les éléments statistiquement malveillants.
Pour l'analyse bayésienne, une phase d'apprentissage a été réalisée en s'appuyant sur les échantillons de pages malveillantes identifiées grâce à l'outil Nozzle de Microsoft.

Evaluation

Les chercheurs Microsoft ont évalué l'efficacité de l'outil, en répondant aux questions suivantes :
  • Quel est le degré d'efficacité de Zozzle pour classifier le code JavaScript inoffensif et malicieux ?
  • Quel est l'avantage d'inclure l'arbre de syntaxe abstraite lors de la classification ?
  • Comment se positionne Zozzle pour la détection des codes malicieux par rapport aux autres approches ?
  • Quelle est la charge en termes de performance d'inclure Zozzle dans un navigateur ?
Les conclusions de cette évaluation sont que Zozzle obtiendrait un taux de faux-positifs très faible (moins de 1%), tout en étant capable d'analyser 1 kilo-octet de code JavaScript en 3 ms.

Conclusions

Les développeurs de l'outil suggèrent d'utiliser Zoozle à la fois au sein du navigateur, (pour détecter dynamiquement les pages web malveillantes) et hors-ligne (pour construire ou maintenir des listes noires de pages malveillantes). Cet outil, toujours en phase de développement, constitue en tout cas une approche intéressante et pourrait très bien être utilisé en complément des autres techniques utilisées actuellement.


Pour plus d'information sur Zozzle :

Zozzle : Low-overhead Mostly Static JavaScript Malware Detection :
http://research.microsoft.com/pubs/141930/tr.pdf
Nozzle : A defense against heap-spraying code injection attacks :
http://research.microsoft.com/pubs/76528/tr-2008-176.pdf


Blade Defender : outil de détection d'attaques de type " drive-by download"

Principe de Blade

Blade est un projet de recherche développé par le Georgia Institute of Technology et la société SRI International. Il s'agit d'une initiative un peu plus ancienne que Zozzle puisque les résultats ont été publiés début 2010 (voir par exemple l'article publié sur KrebsOnSecurity.com en février 2010). Blade (Block All Drive-by Download Exploit) a une approche totalement différente de Zozzle (il ne s'intéresse pas à Javascript) mais il est une autre illustration des travaux de recherche qui sont actuellement menés dans le domaine de la lutte contre les attaques visant les navigateurs web.

L'objectif de Blade est d'empêcher les attaques appelées " Drive-by download " (expression que l'on peut traduire par " téléchargement en passant ") : c'est-à-dire les attaques dans lesquelles la visite d'un site infecté provoque le téléchargement automatique sur le poste du visiteur d'un exécutable malveillant.

Blade est indépendant du navigateur web et de l'attaque utilisée par le pirate : il n'utilise pas de base de signature (comme un IDS ou un antivirus) ou ne recherche pas des "patterns" suspects (comme Zozzle). Blade se présente comme une extension du noyau du système d'exploitation et surveille l'activité des processus que l'on souhaite protéger (typiquement le navigateur web). Dès que Blade identifie qu'un processus surveillé cherche à créer un fichier, alors :
  • il détourne cette opération d'entrée/sortie pour créer le fichier dans un espace confiné (un répertoire particulier sur disque qui sert de zone de quarantaine),
  • sauf si Blade identifie que l'utilisateur a juste auparavant accepté explicitement le téléchargement de ce fichier (en cliquant " oui " dans une fenêtre popup de téléchargement).
Pour tous les fichiers placés en zone de quarantaine, Blade interdit ensuite les opérations de type "exécution de fichier".

 

Evaluation

Blade a été implémenté sur Windows et les résultats publiés pour les expérimentations sont très positifs :
  • 100% des attaques lancées par des sites web infectés (visités lors de l'expérimentation) ont été détectées et stoppées. Lors de ces campagnes de test Blade a visité de façon automatique près de 2000 sites réels infectés. Les résultats sont disponibles sur la page d'évaluation du projet.
  • Aucun des codes d'exploits publiés pour des attaques 0-day récentes n'a permis de mettre en défaut la protection apportée par Blade.
  • Aucun faux-positif ne s'est produit.

Conclusions

L'initiative Blade donne des résultats extrêmement encourageants. Cependant, depuis février 2010 (date de publication des premiers résultats), le projet ne semble pas avoir évolué et affiche un message laconique disant " Download BLADE v1.0: Coming Soon ".

Blade Defender ne s'attaque pas vraiment à la source de l'attaque mais plutôt à sa conséquence la plus courante : le déclenchement du téléchargement d'un exécutable sur le poste de la victime. Si l'outil est très efficace aujourd'hui il pourrait l'être moins demain si les attaquants conçoivent des codes d'attaques prévus pour contourner Blade. Le projet lui-même identifie également des schémas d'attaques que Blade ne sait pas détecter : exécution de code sans téléchargement d'un exécutable sur disque (exécution tout en mémoire, utilisation d'un langage de script plutôt qu'un exécutable) ou si l'attaquant parvient à convaincre la victime d'accepter explicitement le téléchargement de l'exécutable malveillant.

Blade reste néanmoins une initiative intéressante par son ingéniosité et par son efficacité sur des attaques réelles. On ne peut que souhaiter que ce projet de recherche inspire d'autres travaux dans ce domaine.


Pour plus d'information sur Blade Defender :

Page officielle de Blade : http://www.blade-defender.org/
Précedent Précedent Suivant Suivant Imprimer Imprimer