Toutes les solutions anti-malware ne sont pas égales Internet est désormais le premier vecteur d'infection par malware. Sophos détecte une nouvelle page infectée presque toutes les secondes. Ce livre blanc rappelle des points importants sur le JavaScript et les mesures à prendre pour préserver une sécurité optimale. Fraser Howard, Chercheur principal, Sophos Livre blanc Sophos Novembre 2009
Toutes les solutions anti-malware ne sont pas égales Internet est désormais le premier vecteur d'infection par malware. Les SophosLabs ont analysé 23 500 nouvelles pages Web infectées par jour en 2009. Cela correspond à une nouvelle page toutes les quatre secondes environ, soit quatre fois plus qu'à la même période l'année précédente. Pour lancer le processus d'infection, les auteurs de malwares utilisent une méthode très efficace : la corruption de sites légitimes populaires qui génèrent un traffic important [2]. Les utilisateurs d'un site piraté n'ont aucun moyen de savoir s'il est infecté ou non car le code malveillant est invisible. Il s'exécute néanmoins dès l'ouverture de la page Web. En général, le code va ensuite chercher une charge virale encore plus malveillante sur un site tiers par «cross-site scripting» puis utilise l un des nombreux faire-valoir du navigateur ou du système d exploitation pour l infecter, le transformer en botnet ou détourner des données. Il est important de ne pas sous estimer l étendue de ces attaques. En effet, tous types de sites Web peuvent en être victimes, des sites gouvernementaux à ceux de l éducation nationale en passant par des portails d informations très fréquentés, des blogs et des sites de réseautage social. Pour ne pas se faire prendre, les auteurs de malwares font évoluer leur code malveillant à mesure que les éditeurs de logiciels l'intègrent dans leurs solutions de détection. Depuis que la chasse aux malwares s'est intensifiée, les pirates se sont tournés vers le JavaScript pour mener à bien leurs campagnes. Pourquoi? Le JavaScript est un outil universel très puissant dont les innombrables facultés sont prises en charge dans tous les navigateurs et systèmes d'exploitation. Sa polyvalence permet de cacher ou de camoufler le code malveillant. Dans le cas A, une simple balise HTML iframe a été injectée sur la page, entraînant le chargement de contenu malveillant provenant d'un site distant donné lors de l ouverture de la page en question. Dans le cas B : un code JavaScript court a été injecté sur la page. Une technique simple permet de camoufler la charge virale, la rendant invisible au premier abord. Mais en fait, la charge virale est identique dans les deux cas. Le code JavaScript ré-écrit tout simplement le même objet iframe lorsque la page s'ouvre dans le navigateur. Figure 1: Exemple simple d'une page Web infectée de plusieurs façons différentes, avec une charge virale identique. Lorsque la page est consultée, la balise iframe (A) et le script (B) injectés entraînent le chargement de contenu indésirable à partir d'un site malveillant distant. 1
La flexibilité de JavaScript offre des possibilités innombrables pour camoufler cette charge virale (fig B). Ceci pose problème aux logiciels de contrôle de contenu car cette charge virale est effectivement cachée lors de l analyse. Par conséquent, la détection générique proactive est moins fiable. Nous avons constaté de nombreuses attaques de destruction en masse au cours de l'année 2009 durant lesquelles des dixaines de milliers de sites légitimes ont été infectés par injection de code JavaScript malveillant. Ces attaques se dissimulent invariablement dans du code JavaScript dans le but d'échapper le plus longtemps possible à la détection. Un exemple parfait de ce type d'attaque est le cas Gumblar [3], qui s'est servi d'une méthode simple de substitution de caractères pour dissimuler sa charge virale et injecter du script malveillant dans de nombreux sites (Figure 2A). L'on peut constater que la charge virale n'est pas visible dans le script injecté. Toutefois, après avoir manuellement exposé le contenu réel du script, la charge virale est évidente (Figure 2B) et il est clair que le code malveillant provient d'un site distant. Figure 2: (A) Le script malveillant injecté dans des pages légitimes pendant la campagne de destruction en masse Gumblar en 2009. (B) Le contenu réel du script exposé manuellement Les campagnes de destruction en masse telles que Gumblar peuvent avoir une portée incommensurable. Très peu de temps après l'avoir rajoutée aux listes de détection (sous le nom de Troj/JSRedir-R), ladite menace a atteint la première place du classement des menaces Web des SophosLabs, éclipsant toutes les autres menaces du moment (Figure 3). Figure 3: Les principales menaces Web détectées entre le 6 et le 13 mai 2009. Troj/JSRedir-R (alias Gumblar) éclipse toutes les autres détections, représentant plus de 40% de toutes les notifications. 2
Les logiciels script packer Le simple fait de camoufler du code JavaScript n'est en aucun cas illégal. Il existe même des outils, disponibles en vente libre, que l'on peut utiliser à cet effet. Pourquoi? La protection de la propriété intellectuelle : l'utilisateur peut choisir de camoufler son code pour empêcher les autres de le copier. L'efficacité : certains " script packers " permettent de raccourcir le script de manière à obtenir un téléchargement plus rapide et donc un site Web plus réactif. Ceci complique la tâche des analystes et des outils de contrôle de contenu. Il arrive que les auteurs de malwares camouflent leurs scripts malveillants à l'aide de logiciels dédiés : les analystes anti-malware doivent donc prendre soin de ne pas générer de faux positifs sur les scripts légitimes camouflés à l'aide du même outil.[4]. Le polymorphisme côté serveur (SSP) De nombreux malwares modernes se servent de techniques d'écriture de scripts avancées pour créer du code malveillant polymorphe sur le serveur. En 2009 par exemple, les SophosLabs ont identifié plusieurs campagnes se servant agressivement de la technique de polymorphisme côté serveur pour propager l'infection de Zbot [5,6]. Lors de ces attaques, les scripts malveillants qui exploitaient les vulnérabilités des machines des utilisateurs étaient créés de manière dynamique sur le serveur, ce qui faisait légèrement changer le script à chaque chargement. Le polymorphisme côté serveur est un cas particulier de camouflage, qui présente un défi de plus pour les analystes et les outils de contrôle de contenu. Les documents PDF malveillants En 2009, les SophosLabs ont constaté l'usage très répandu de fichiers PDF dans de nombreux cas d'attaques [7]. En effet, les auteurs de malwares ont choisi de concentrer leurs efforts sur l'exploitation intensive des faiblesses des lecteurs PDF communs pour mener à bien leurs campagnes d'infection. Peu de gens se doutent que le JavaScript est très souvent mis à contribution dans ces cas d'attaques. Adobe Acrobat prend en charge le JavaScript intégré dans les fichiers PDF [8] pour permettre à l'utilisateur de créer des documents complexes et dynamiques. Ceci donne malheureusement aux pirates l'opportunité de créer des fichiers PDF malveillants qui se servent du JavaScript intégré pour exploiter les faiblesses de l'application. Nos avantages concurrentiels : un meilleur traitement du JavaScript Le coeur du moteur anti-malware intégrera prochainement de nouvelles fonctionnalités destinées à améliorer le traitement de JavaScript. Ces améliorations comprennent : La faculté de coder les mots réservés et d'analyser JavaScript. Ceci permettra aux analystes des SophosLabs d'écrire des détections génériques plus efficaces destinées spécialement au contenu JavaScript. L'émulation de JavaScript. Le moteur anti-spam fondamental intégrera un émulateur de JavaScript qui permettra de révéler le contenu réel des scripts de manière générique. Ceci permettra au moteur de voir la charge virale du script, et dopera ainsi la proactivité de la détection générique. Le moteur anti-malware existant de Sophos (de même que certains moteurs concurrents) possède déjà la faculté limitée de dévoiler les scripts camouflés. En quoi cette nouvelle technologie est elle-différente? Les technologies existantes sont basées sur la reconnaissance de techniques de camouflage spécifiques et l'écriture de code destiné à traiter chacun au cas par cas (dans la mesure du possible). Cette approche ne permet pas de répondre au volume de malwares qui circulent aujourd'hui. Il existe un nombre presque illimité de façons de camoufler un script, et nous savons que les auteurs modifient fréquemment leurs techniques. Il faut trouver une solution qui permette de révéler la nature réelle du script de manière générique. L'émulation de JavaScript répond à ce besoin. Cette nouvelle technologie offre les avantages suivants aux clients Sophos : Augmentation du taux de détection des scripts et des fichiers PDF malveillants Amélioration de la protection proactive (du jour zéro) contre les nouvelles attaques A partir de 2010, la technologie sera intégrée dans le composant Browser Helper Object (BHO) de Sophos Endpoint Security and Data Protection, qui protège Internet Explorer contre le chargement de malwares. Pour en savoir plus sur Sophos, consultez www.sophos.fr Les techniques de camouflage de script et de polymorphisme côté serveur expliquées ci-dessus peuvent également s'appliquer au JavaScript intégré dans les fichiers PDF. 3
LIvre blanc Sophos 1. 2. 3. 4. 5. 6. 7. 8. http://www.sophos.com/blogs/gc/g/2009/07/24/threat-report-july-2009/ http://www.sophos.com/security/technical-papers/modern_web_attacks.html http://www.sophos.com/blogs/sophoslabs/v/post/4405 http://www.theregister.co.uk/2009/09/04/mcafee_false_positive/ http://www.sophos.com/blogs/sophoslabs/v/post/882 http://www.sophos.com/blogs/sophoslabs/v/post/2090 http://www.sophos.com/blogs/sophoslabs/v/post/5968 http://partners.adobe.com/public/developer/pdf/topic_js.html Boston, Etats-Unis Oxford, Royaume-Uni Copyright 2009. Sophos Plc Toutes les marques déposées et tous les copyrights sont compris et reconnus par Sophos. Aucune partie de cette publication ne peut être reproduite, stockée dans un système de recherche documentaire ou transmise, sous quelque forme ou par quelque moyen que ce soit sans le consentement préalable écrit de l éditeur.