web-dev-qa-db-fra.com

Comment injecter du code exécutable et malveillant en PDF, JPEG, MP3, etc.?

  1. Je voulais savoir s'il est généralement possible d'injecter du code exécutable dans des fichiers tels que PDF ou JPEG, etc., ou doit-il y avoir une sorte de faille de sécurité dans l'application?

  2. Et si oui, comment ferait-on cela?

J'entends souvent que les gens sont infectés en ouvrant des PDF contenant du code malveillant, c'est pourquoi je demande.

47
JohnnyFromBF

Il doit y avoir une faille de sécurité dans l'application.

Pensez comme n'importe quel fichier .txt très simple et commun: si vous l'ouvrez avec une visionneuse hexadécimale ou avec un éditeur de pavé textuel bien conçu, il ne devrait afficher que le contenu du fichier, et ok.

Pensez alors à traiter le fichier, d'une manière ou d'une autre, au lieu de simplement afficher le contenu. Par exemple, lire le fichier et interpréter ses valeurs. Si ce n'est pas fait correctement, cela pourrait conduire à l'exécution des octets qui se trouvent dans le fichier.

Par exemple: si vous avez conçu votre application pour charger le fichier entier et l'afficher, mais d'une manière ou d'une autre, vous avez une variable dans votre programme qui ne contient que 256 octets. Cela pourrait vous faire lire (et écrire en mémoire) plus d'octets que ce que votre application attendait. Et, imaginez, dans votre application, il y aurait n'importe quelle commande pour passer à la position NNNN en mémoire et exécuter ce qui est là, mais puisque cette position de mémoire a été écrite avec des données auxquelles votre programme ne s'attendait pas, alors vous exécuterez du code qui ne devrait pas être là et qui a été chargé à partir de votre fichier ...

C'était une attaque de dépassement de tampon .

La même chose pourrait se produire avec pdf, jpg, mp3, etc., si l'application n'a pas chargé correctement les données.

Autre possibilité: pour toute autre raison, l'application (ou une certaine DLL charge pour lire vos données) exécute une partie des données, au lieu de la lire. Si vous savez quelle serait la commande (ou les données) qui déclencheraient ce comportement, vous placez ces commandes dans le fichier de données (comme le fichier pdf) pour que l'application l'exécute.

Virus PDF : lire ce site: http://lwn.net/2001/0809/a/Adobe-pdf-vul.php pour en savoir un peu sur un virus qui s'est propagé à l'aide des fichiers PDF.

32
woliveirajr

Il existe deux façons d'exécuter un morceau de code: intentionnellement et non intentionnellement.

L'exécution intentionnelle est lorsqu'un fichier est lu par une application et que l'application fait quelque chose en fonction de ce que dit le fichier. La lecture du fichier s'appelle analyser le fichier.

L'exécution involontaire est lorsque l'analyseur lit quelque chose qu'il ne devrait pas, et au lieu de se casser, il continue de s'exécuter. Cette exécution involontaire est une vulnérabilité car si je peux obtenir que l'analyseur exécute quelque chose, je peux probablement le faire exécuter quelque chose de malveillant.

Pour répondre à tes questions:

  1. Est-ce généralement possible? Tout dépend du format de fichier et de l'application qui le lit. Certains fichiers sont conçus pour autoriser les fichiers exécutables, d'autres non. Certaines applications permettent au code de s'exécuter, d'autres non. Si l'application ne le prend pas en charge, une vulnérabilité doit être présente pour s'exécuter.

  2. Tout dépend du format de fichier, mais c'est généralement en trouvant une faille dans la logique de l'analyseur de fichier.

16
Steve

Le problème clé avec les PDF, les documents Word, etc. est que les normes actuelles autorisent les macros et le code exécutable. (À mon avis, c'est une faille fatale, mais j'aime que les e-mails soient uniquement du texte ...)

C'est cette étape d'exécution de la macro qui est généralement la cible d'une attaque, car elle fournit un moyen d'exécuter du code. L'attaquant a juste besoin de comprendre comment contourner les contrôles présents, qui peuvent être un débordement de tampon ou un autre mécanisme d'attaque.

8
Rory Alsop

Je ne suis pas d'accord avec la réponse "Il doit y avoir une faille de sécurité dans l'application"

C'est généralement incorrect. La plupart des violations proviennent de l'accès aux fichiers (pas seulement de leur fourniture/leur possession) et de faire allusion aux gens pour croire qu'ils accèdent à quelque chose de différent de ce qu'ils sont réellement, par exemple, une image plus grande alors qu'il s'agit d'un code exécutable ou d'un lien avec un (connu et fiable) ) description du site alors qu'il renvoie à un autre, avec des intentions malveillantes, etc.

Je recommanderais de lire: