web-dev-qa-db-fra.com

La décompression d'une image JPEG peut-elle simplement déclencher un exploit?

Le roman Daemon est souvent loué pour être réaliste dans sa représentation plutôt que de simplement écraser les mots à la mode.

Cependant, cela m'a paru irréaliste:

L'e-mail de Gragg contenait un JPEG empoisonné du logo de la maison de courtage. Les JPEG étaient des fichiers d'image compressés. Lorsque l'utilisateur a consulté l'e-mail, le système d'exploitation a exécuté un algorithme de décompression pour afficher le graphique à l'écran; c'est cet algorithme de décompression qui a exécuté le script malveillant de Gragg et l'a laissé se glisser dans le système de l'utilisateur, lui accordant un accès complet. Il y avait un correctif disponible pour la faille de décompression, mais les gens riches et plus âgés n'avaient généralement aucune idée des correctifs de sécurité.

Existe-t-il une telle chose? Cette description est-elle basée sur un véritable exploit?

Ceci a été publié en décembre 2006.

Est-il sensé de dire que "le système d'exploitation" décompressait l'image pour la rendre?


Notez que cela n'a rien à voir avec la sécurité des scripts de téléchargement d'images PHP. Je pose des questions sur le processus de décodage d'affichage d'un JPEG , pas des scripts prenant des informations d'utilisateurs distants, ni des fichiers mal nommés .jpeg. Le signalement en double auquel je réponds semble médiocre même pour une correspondance avec un mot à la mode; vraiment rien d'autre que de mentionner les fichiers image.

102
JDługosz

Existe-t-il une telle chose?

Absolument. Fournir des entrées malveillantes à un analyseur est l'un des moyens les plus courants de créer un exploit (et, pour un JPEG, la "décompression" est "l'analyse").

Cette description est-elle basée sur un véritable exploit?

Il peut être basé sur la vulnérabilité de débordement de tampon de Microsoft Windows GDI + :

Il existe une vulnérabilité de dépassement de tampon dans la façon dont le composant d'analyse JPEG de GDI + (Gdiplus.dll) gère les images JPEG mal formées . En introduisant un fichier JPEG spécialement conçu dans le composant vulnérable, un attaquant distant pourrait provoquer une condition de dépassement de tampon.

...

Un attaquant distant non authentifié pourrait potentiellement exécuter du code arbitraire sur un système vulnérable en introduisant un fichier JPEG spécialement conçu. Cette image JPEG malveillante peut être introduite dans le système via une page Web malveillante , un e-mail HTML ou une pièce jointe. .

.

Ceci a été publié en décembre 2006.

La vulnérabilité d'analyse GDI + JPEG a été publiée en septembre 2004.

Est-il sensé de dire que "le système d'exploitation" décompressait l'image pour la rendre?

Sûr; dans ce cas, c'était une bibliothèque système qui nécessitait un correctif du fournisseur du système d'exploitation pour le corriger. Souvent, ces bibliothèques sont utilisées par plusieurs progiciels, ce qui en fait une partie du système d'exploitation plutôt qu'une application spécifique.

En réalité, "l'application de messagerie a invoqué une bibliothèque système pour analyser un JPEG", mais "le système d'exploitation" est suffisamment proche pour un roman.

180
gowenfawr

D'accord avec les autres pour dire oui c'est tout à fait possible, mais aussi pour ajouter une anecdote intéressante:

Joshua Drake (@jduck), a découvert un bug basé sur un concept très similaire (les images étant interprétées par le système d'exploitation) qui a fini par s'appeler "Stagefright", et a affecté un nombre ridicule de Android appareils .

Il a également découvert un bogue similaire basé sur l'image dans libpng qui provoquerait le crash de certains appareils. Il a tweeté un exemple de l'exploit en disant essentiellement "Hé, regardez ce PNG sympa et cool que j'ai fait, il va probablement planter votre appareil", sans se rendre compte que Twitter avait ajouté le rendu automatique des images en ligne. Inutile de dire que beaucoup de ses abonnés ont commencé à faire planter leurs machines dès que le navigateur a essayé de charger la miniature de l'image dans leur flux.

49
Nic Barker

Irréaliste? Il y a eu récemment un bogue critique dans l'analyse de la définition des polices: https://technet.Microsoft.com/en-us/library/security/ms15-078.aspx et libjpeg les changenotes sont pleins d'avis de sécurité. L'analyse des fichiers [1] est difficile: débordements, débordements, accès hors limites. Récemment, de nombreux outils de fuzzing ont été développés pour la détection semi-automatique des entrées pouvant provoquer un crash.

[1] ou des paquets réseau, des requêtes XML ou même SQL.

12
user158037

Comme d'autres l'ont souligné, de telles attaques exploitent généralement les dépassements de tampon.

En ce qui concerne les détails, cela s'appelle une attaque à la pile. Cela implique de corrompre pile d'appels , et d'écraser une adresse en code légitime à exécuter par une adresse en code fourni par l'attaquant, qui est exécuté à la place.

Vous pouvez trouver des détails sur insecure.org/stf/smashstack.html .

2
Emilio M Bumachar

Oui c'est possible:

Une nouvelle variante du cheval de Troie bancaire Zeus infâme - surnommé ZeusVM - est cachée dans les fichiers d'image JPG, selon les résultats de la collaboration de Jerome Segura, chercheur principal en sécurité chez Malwarebytes, et du chercheur français en sécurité Xylitol.

L'acte est connu sous le nom de stéganographie - dissimulant des messages ou des images dans d'autres messages ou images.

Dans le cas de ZeusVM, le code du malware est caché dans des images JPG sans prétention, a révélé un article de blog de lundi par Segura. Ces photos servent de mauvaise direction à ZeusVM pour récupérer son fichier de configuration.

"Le JPG contient le fichier de configuration du malware, qui est essentiellement une liste de scripts et d'institutions financières - mais n'a pas besoin d'être ouvert par la victime elle-même", a déclaré Segura à SCMagazine.com dans une correspondance par courrier électronique mardi. "En fait, le JPG lui-même a très peu de visibilité pour l'utilisateur et est en grande partie une technique de dissimulation pour s'assurer qu'il n'est pas détecté du point de vue du logiciel de sécurité."

Source .

1
TheJulyPlot