Pouvez-vous vraiment obtenir un cheval de Troie dans un fichier image et si oui, comment sera-t-il exécuté?

11

Je viens de numériser quelques albums et j'avais besoin d'une pochette. Mon scanner n'est pas assez grand pour numériser l'album, j'ai donc cherché et téléchargé les images sur le net.

Quand je l'ai fait, Avast a signalé que l'un d'eux contenait le cheval de Troie "Win32: Hupigon-ONX" et l'a immédiatement mis en quarantaine. Ne souhaitant pas prendre de risques, j'ai téléchargé une copie différente qui était propre.

Est-ce que c'était juste un faux positif d'Avast ou aurait-il vraiment pu y avoir un cheval de Troie dans le jpg?

S'il y avait comment serait-il exécuté?

Je dois admettre que cet aspect des chevaux de Troie et des virus m'a toujours dérouté. En tant que développeur de logiciels, j'ai toujours vérifié la longueur des tableaux, etc., donc je ne vois pas pourquoi des choses comme les dépassements de tampon devraient se produire. Je comprends que les gens font des économies et commettent des erreurs et si le logiciel est suffisamment complexe, ces erreurs peuvent passer.

ChrisF
la source

Réponses:

11

Les exploits dans les fichiers image tirent parti des défauts de dépassement de tampon dans le code de traitement d'image du système d'exploitation. Il y a quelques années, plusieurs failles importantes de ce type ont été trouvées dans la couche GDI de Windows - des correctifs ont été publiés il y a longtemps, mais les images d'exploitation sont toujours là, soit simplement parce qu'elles sont restées, soit dans l'espoir qu'elles frappent une machine qui n'a pas encore été corrigée. .

La cause habituelle d'un tel trou de sécurité est de transmettre des données d'image entre les fonctions de la pile d'appels et de ne pas vérifier correctement la longueur maximale des données. Cela peut être exploité par des données intelligemment construites qui sont surdimensionnées et organisées de manière à ce qu'elles finissent par écraser le code suivant dans le cadre de la pile (en les écrasant avec un autre code) ou en écrasant les pointeurs par du code qui sera utilisé pour appeler d'autres fonctions. ou lorsque la fonction appelée revient à l'appelant (écrasant un tel pointeur pour le faire pointer vers le code d'exploitation), ou écrasant les données de manière à ce qu'un autre trou soit exposé. La méthode exacte varie en fonction du trou de sécurité en question.

Les processeurs modernes ont une protection qui arrête la plupart de ces exploits si le code le prend en charge. Cela fonctionne par le programme / bibliothèque marquant explicitement lesquelles de ses pages sont des données et lesquelles sont du code - le CPU lèvera alors une exception si quelque chose dans ce qui devrait être des données (telles que des données d'image) essaie d'être exécuté en tant que code. IIRC Vista et versions supérieures et récentes de .Net ont vu toutes leurs bibliothèques redéfinies pour prendre en charge cette protection, et elle est également prise en charge par d'autres systèmes d'exploitation, mais cela n'arrête pas tous ces exploits et ne fonctionne que si elle est explicitement activée (sinon un beaucoup d'ancien code se briserait).

David Spillett
la source
9

Je dois admettre que cet aspect des chevaux de Troie et des virus m'a toujours dérouté. En tant que développeur de logiciels, j'ai toujours vérifié la longueur des tableaux, etc., donc je ne vois pas pourquoi des choses comme les dépassements de tampon devraient se produire.

Et bien, bienvenue dans le monde réel ;-). Débordements de tampon & c. peut se produire dans de nombreuses langues ( en particulier dans ceux de la gestion de la mémoire manuelle comme C), et que les développeurs font des erreurs, ils ne se produire.

Alors que normalement un débordement de tampon va juste planter le programme (violation de segmentation ou similaire), il peut permettre à un attaquant d'exécuter du code -> Trojan activé.

Par exemple:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

Et pour une explication sur la façon dont cela permet l'exécution de code:

/programming/460519/how-are-buffer-overflows-used-to-exploit-computers

sleske
la source
Je sais qu'ils se produisent - c'est juste que c'est l'un des contrôles de base que j'ai toujours fait lors du traitement des données - vérifiez que j'ai / alloué suffisamment d'espace pour les données.
ChrisF
@ChrisF, le fait que vous devez vous assurer que vous vérifiez (par opposition à "l'ordinateur" est le problème lui-même.
Zabba
@Zabba, ce que je voulais dire, c'est que je "code le programme à vérifier" lors du traitement des données.
ChrisF
2

Je dois admettre que cet aspect des chevaux de Troie et des virus m'a toujours dérouté. En tant que développeur de logiciels, j'ai toujours vérifié la longueur des tableaux, etc., donc je ne vois pas pourquoi des choses comme les dépassements de tampon devraient se produire. Je comprends que les gens font des économies et commettent des erreurs et si le logiciel est suffisamment complexe, ces erreurs peuvent passer.

Peut-être que vous vérifiez tous vos pointeurs, tableaux, etc. Mais êtes-vous sûr que tous les programmeurs de n'importe quelle bibliothèque de 3e patry que vous (pourriez) utiliser (un jour) l'ont fait aussi?

La solution la plus simple serait de télécharger un fichier comme "image.jpg.exe" ou quelque chose de similaire au lieu d'une image réelle.

Les moyens les plus avancés d'infecter votre PC ont déjà été décrits ici (ex. Buffer Overflow, ...)

Elvith
la source
1
Vrai - mais je modifie les options du dossier pour afficher les extensions. Je suis sûr que masquer les extensions connues a causé plus de problèmes qu'il résout. En fait, je ne peux pas penser à un problème qu'il résout réellement.
ChrisF
ack complet - c'est l'une des premières options que
j'active
@ChrisF: Eh bien, évidemment, le problème qu'il résout est qu'autrement, les utilisateurs peuvent modifier accidentellement l'extension d'un fichier lorsqu'ils le renomment. Cela provoque le problème familier "L'icône de mon document a l'air drôle et je ne peux plus l'ouvrir. Aide!" :-) (et oui, je fais parfois du support technique pour ma famille).
sleske
@sleske - Windows 7 ne sélectionne pas l'extension lorsque vous renommez un fichier.
ChrisF
1
@ChrisF: Intéressant, je ne le savais pas. Auparavant, il était différent - au moins, Windows Server 2003 sélectionne le nom complet pour un renommage. Et en tout cas, si les utilisateurs peuvent modifier l'extension, ils le feront :-).
sleske