Virus sous Delphi : plus de peur que de mal
mer, 26/08/2009 - 16:11
Un virus infectant les applications Delphi a été découvert récemment. Une découverte qui a suscité bien des inquiétudes, Delphi étant un outil très utilisé. Nick Hodges, d’Embarcadero, l’éditeur de Delphi, a publié sur son blog des informations afin d’informer au mieux les utilisateurs du produits. Ces informations prennent la forme d’un jeu de questions/réponses dont voici la traduction :
Quelles versions de Delphi sont touchées ?
Ce virus n'affecte que les versions de Delphi 4 à 7 éditées entre 1998 et 2002. Le virus W32/Induc n'affecte pas les versions plus récentes de Delphi de la v2005 à la v2009 ou la dernière v2010.
Quelles sont les versions de Delphi qui ne sont pas touchés ?
Ce virus ne touche pas les versions actuelles de Delphi. Delphi 2005, 2006, 2007, 2009, et le nouveau Delphi 2010 ne sont pas affectés par ce virus.
Qu'est-ce que ce virus ?
Ce virus est appelé "Compile-a-virus". Il est également dénommé "W32/Induc-A".
Est-ce l'IDE Delphi ou le langage qui contient ce virus ?
Non, les versions de Delphi qui sont vulnérables à cette attaque (v4 à v7) ne viennent pas avec ce virus. Il est "récupéré" en téléchargeant et en exécutant un fichier EXE ou une DLL infectés.
Delphi Prism est-il affecté ?
Non, Delphi Prism n'est pas affecté par ce virus.
Qu'est-ce que ce virus fait ?
Ce virus ne fait rien pour les versions de Delphi plus récente que Delphi 7 (2002). Si une machine est infectée, le virus W32/Induc-A ne fait rien de malicieux et ne créé pas de dommages autres que la propagation elle-même.
Ce que le virus fait est de s'insérer dans une installation de Delphi version 4, 5, 6 ou 7. Puis, quand une version infectée de Delphi construit un EXE ou une DLL, il s'insère dans le binaire résultant. Lorsque le code pour cette DLL ou EXE est exécuté, il recherche alors des versions installées de Delphi 4 à 7 et se reproduit dans toutes les installations qu'il trouve. Ensuite, cette installation produira à son tour des fichiers EXE et DLL qui chercheront à se reproduire partout où ils seront exécutés.
Encore une fois, le virus ne cherche que les installations de Delphi 4 à 7. Plus précisément, s’il constate une de ces versions de Delphi, il cherche le fichier SYSCONST.PAS. Il ouvre ce fichier, injecte du code à l’intérieur, compile le fichier, et remplace la version livrée de SYSCONST.DCU avec la nouvelle version infectés. Il supprime ensuite le fichier créé SYSCONST.PAS. (Le virus ne modifie pas les fichiers *.PAS sur le système). Le code injecté provoque simplement l'exécution de code contenu dans SYSCONST.DCU pour la réplication virale.
Est-ce un problème unique à Delphi ?
Ce virus particulier cherche Delphi 4 à 7, mais ce type de virus n'est en aucune façon unique à Delphi et pourrait affecter n'importe quel environnement de développement d’Eclipse à Visual Studio.
Qui est vulnérable à cette infection ?
Les installations de Delphi 4 à 7 peuvent être affectée par W32/Induc-A. Si un fichier EXE ou DLL infecté est exécuté sur une machine sans Delphi 4 à 7 le virus ne fait rien. Les Antivirus commencent maintenant à rapporter cette infection comme un virus avec binaires infectés.
Comment puis-je savoir si j'ai été infecté ?
Détecter si votre installation Delphi a été infectée est assez simple. Elle affecte uniquement la version Delphi 4 à 7. La meilleure façon de savoir si vous avez été infecté est de rechercher la présence de SYSCONST.BAK dans le répertoire <delphi>\lib de votre installation de Delphi. Le virus crée ce fichier dans le cadre de ses actions. Si ce fichier est présent, vous êtes probablement infecté (sauf si vous savez que vous avez créé vous-même ce fichier pour une raison quelconque).
Si vous avez un SYSCONST.BAK dans votre répertoire \lib, ouvrez le fichier SYSCONST.DCU dans un éditeur hexadécimal ou même dans un éditeur de texte comme Notepad. Recherchez le code "CreateFile(pchar(d+$bak$),0,0,0,3,0,0);" dans ce fichier DCU. S’il est présent, vous êtes infecté.
Si je l'ai, comment ai-je pu être infecté ?
Si vous avez le virus, vous l’avez obtenu en exécutant un fichier EXE ou DLL sur votre machine qui a déjà été infecté par ce virus. Delphi est un outil très populaire en développement, en particulier parmi les ISV et les développeurs MicroISV.
Quelles sont les implications si j’ai été infecté ?
Si votre machine est infectée, les fichiers EXE et DLL que vous produisez peuvent infecter toute machine non protégée où votre fichier EXE ou DLL est exécuté et qui a Delphi 4 à 7 installé.
Mais notez encore une fois que ce virus ne fait rien à part se propager lui-même. Toutefois, si vous constatez que vous avez le virus et que vous avez distribué ces fameux fichiers infectés, il est prudent d'aviser les destinataires de ces fichiers pour qu'ils lisent cette FAQ pour plus d'informations.
Comment puis-je supprimer le virus de mon installation de Delphi ?
Pour supprimer les virus, vous devriez :
1. Supprimez le fichier infecté SYSCONST.DCU sur votre système
2. Remplacez-le avec le fichier SYSCONST.DCU de votre média d'installation. Les versions de Delphi 4 à 7 comprennent une installation complète de leur image sur CD, donc vous pouvez simplement copier ce fichier à partir de votre CD d’installation. Sinon vous pouvez également Copier et renommer le fichier SYSCONST.BAK présent sur votre disque en SYSCONST.DCU. Ce fichier étant en effet une copie de votre version initiale de SYSCONT.DCU.
Comment puis-je m'assurer qu'il ne revienne pas ?
Ou
Je n'ai pas le virus. Comment puis-je m'assurer de ne pas être infecté ?
Ce virus n'affecte pas les versions de Delphi 2005 à 2010. Toutefois, si vous utilisez d'anciennes copies de Delphi 4 à 7 alors le moyen le plus efficace de veiller à ce que vous n'obtenez pas le virus est de déplacer votre copie de DCC32.EXE vers un répertoire différent. L'IDE de ces anciennes versions ne nécessite pas le compilateur en ligne de commande, cela n'affectera donc pas l'exécution du produit.
Vous pouvez également empêcher le virus de faire quelque chose à votre installation en laissant un fichier nommé SYSCONST.BAK au même endroit où vous l'avez trouvé. Le fichier peut être vide. Le virus vérifie la présence de ce fichier, et s’il le trouve, il ne fait rien. La présence d'un fichier SYSCONST.BAK vierge dans le même emplacement que votre fichier SYSCONST.DCU fera donc en sorte que le virus ne fasse rien.
En outre, vous pouvez marquer tous les fichiers dans votre répertoire \lib en lecture seule. Cela permettra d'éviter le virus de les modifier.
Comment puis-je savoir si j'ai des fichiers exécutables sur mon système, qui propagent ce virus ?
Il s'agit d'un virus relativement nouveau, et les logiciels anti-virus commencent à peine à le reconnaître. Un certain nombre de fournisseurs ont déjà identifié les binaires avec cette infection, et sans doute, la plupart suivront bientôt. La meilleure façon de détecter le virus est de s'assurer que votre logiciel anti-virus connaît W32/Induc-A et d’exécuter l’antivirus sur votre système.
Les binaires que je produis sont infectés, que puis je faire ?
Bien sûr, vous devez d'abord débarrasser votre système du virus (Voir au dessus). Le seul moyen de se débarrasser du virus dans un fichier EXE ou DLL est de recompiler le binaire avec un système propre.
Cela affecte t-il les paquets construits avec Delphi 4 à 7 ?
C’est possible mais peu probable. Par défaut, les paquets ne sont pas touchés. Un package peut être infecté si vous choisissez de ne pas le lier avec notre propre fichier RTL.DCP et que vous le liez manuellement avec un fichier SYSCONST.DCU infecté. L'écrasante majorité des développeurs n'auront pas fait cela, et si vous l’avez fait, alors vous serez capable de recompiler les paquets avec un système propre.
Que puis-je faire d’autre pour me protéger ?
Il existe un certain nombre de choses supplémentaires que vous pouvez faire pour vous protéger contre ce virus. Comme mentionné ci-dessus, vous pouvez marquer tous les fichiers DCU dans votre répertoire \lib en lecture seule. Et pendant que vous y êtes, vous pourriez envisager aussi de mettre tout le code source dans le répertoire <delphi>\source en lecture seule.
Pour être absolument sûr, vous pouvez faire une comparaison de fichiers entre votre répertoire \lib et le répertoire \lib sur l'image d'installation sur votre CD.
Si vous avez besoin d'un outil de comparaison de fichiers, il existe un outil open source appelé FreeFileSync qui peut être récupéré à l'adresse :
http://sourceforge.net/projects/freefilesync/
Gardez à l'esprit qu'il est possible que vous ayez modifié vous-même ces fichiers DCU, donc si ils vous semblent différents, assurez-vous que vous vous ne les avez pas modifié. Jusqu'à présent, ce virus affecte uniquement le fichier SYSCONST.DCU.
En tout état de cause, il est fortement recommandé de vous assurer que les fichiers dans le répertoire \lib d’installation de Delphi 4 à 7 correspondent à ceux de l'image d'installation sur votre CD.
Est-ce que le C++Builder est touché ?
Non, il est théoriquement possible pour un EXE C++Builder d'être infecté, mais un développeur C++Builder aurait à prendre une série assez longue d'étapes et de changements et de recompiler un certain nombre de choses différentes sur son système pour que le virus affecte les binaires C++Builder.
Je produis un shareware et/ou une application créée avec Delphi ? Qu'est ce que cela signifie ?
Si vous utilisez des versions plus récentes de Delphi 2005 à 2010 alors cela ne vous concerne pas. Si vous utilisez une version antérieure de Delphi 4 à 7, alors vous devriez vérifier que votre machine n'est pas infectée. Si elle est infectée il faut la nettoyer.
Si vous avez distribué des exécutables infectés à vos clients, vous devez immédiatement recompiler votre produit et distribuer une nouvelle version nettoyée. Il serait également prudent d'aviser les destinataires de fichiers pour qu'ils lisent cette FAQ pour plus d'informations. Comme les programmes anti-virus commencent à détecter ce virus dans les exécutables, les clients seront identifier les binaires infectés. Et vous devriez être prêts, à leur fournir un binaire propre.
Y a t-il des préoccupations particulières pour un fournisseur de composants ?
Les fournisseurs de composants qui utilisent des versions de Delphi 7 ou plus âgés doivent prendre les mêmes précautions et suivre les étapes décrites dans le présent document. Même s'ils sont infectés, des fournisseurs de composants ont une faible probabilité d'infecter leurs clients via leurs composants. La raison en est que le virus ne se rattache pas à d'autres fichiers DCU. Il ne modifie pas le code source que vous créez. Il est possible, comme indiqué plus haut, de lier le virus dans un paquet (BPL), mais dans ce cas là c’est que vous avez délibérément évité l'utilisation des Run-Time Library Delphi et explicitement fais le lien avec le fichier SYSCONST.DCU.
Que faire pour protéger Delphi contre ce virus à l’avenir ?
La meilleure ligne d'action est bien sûr de gérer une station de développement sécurisé avec un anti-virus toujours à jour. Bien que ce type de virus puisse être construit pour attaquer n'importe quel environnement de développement, nous recherchons des façons d'aider les développeurs à prévenir de futures attaques sur leurs systèmes.