Page 1 sur 1
Du Javascript dans une image
Posté : 06 sept. 2007, 14:03
par Genova
Bonjour,
j'ai déjà entendu parler (et vu une fois), qu'on pouvait insérer du code Javascript dans des images. Ce code étant exécuté lors du chargement de la page par le navigateur (ce qui constitue une belle faille de sécurité dans les navigateurs je trouve).
Savez vous comment générer des images avec du Javascript ? (Par exemple un simple alert('toto')) ? Dans un but de sécurité bien entendu.
Merci.
Posté : 06 sept. 2007, 14:29
par Ryle
Je serais assez tenté de dire que "non, on ne peut pas". Le navigateur se basant sur le type mime du fichier pour savoir comment l'ouvrir, si tu lui passes une image, il essayera de la décompresser pour l'afficher, mais n'essayera à aucun moment d'exécuter un éventuel code javascript qu'elle pourrait contenir. Le résultat sera une erreur dans l'affichage de l'image genre "not a valid format".
Un javascript peut très bien s'exécuter et afficher une image, mais je conçois assez mal le contraire.
Je serais assez curieux de savoir où tu as pu voir ça.. (et dans un but de sécurité, si cela existe, tu n'as pas besoin de savoir comment les faire, mais seulement de savoir les contrer

)
Posté : 06 sept. 2007, 14:45
par Hubert Roksor
Ça dépend du contexte. Je ne vois pas comment exécuter du Javascript dans une image au sein d'une page. Si l'utilisateur affiche l'image directement dans le navigateur, oui (par exemple en configurant son serveur pour servir les .png par PHP et plutôt que d'envoyer une image on envoit une page) sinon je ne vois pas. Pourrais-tu nous en dire plus sur la fois où tu as vu un truc similaire stp ?
Posté : 06 sept. 2007, 14:45
par Genova
J'avais besoin de savoir les faire pour pouvoir tester différents cas de figures.
A vrai dire j'ai déjà eu l'occasion de voir une image "infectée", avec le Javascript executé, mais impossible de remettre la main dessus

Je vais a nouveau faire des recherches et si je la retrouve je la posterai ici.
Posté : 06 sept. 2007, 14:47
par Hubert Roksor
Sinon, dans un genre similaire, si mes souvenirs sont bons IE est vulnérable au pseudo-protocole javascript:
Posté : 06 sept. 2007, 15:17
par Ryle
Sinon, dans un genre similaire, si mes souvenirs sont bons IE est vulnérable au pseudo-protocole javascript:
Je confirme
M'enfin que le code soit là où dans une balise <script> je ne crois pas que cela change grand chose

Posté : 06 sept. 2007, 15:54
par Genova
Apparament j'ai fait des recherches sur le problème que j'avais rencontré, et effectivement on ne peut pas executer du JS dans une image depuis une balise <img>.
Cependant quand on créé un fichier toto.png avec le code ci dessous, si on se rend sur l'URL directe de l'image avec
internet explorer, et bien le code JS est bien executé.
Je suppose que le seul moyen de se protéger est de faire un getimagesize() pour vérifier si l'image est bonne ? getimagesize() parse l'intégralité du fichier pour bien vérifier que le contenu est "logique" ?
Posté : 06 sept. 2007, 16:01
par Hubert Roksor
Pas vraiment, tu peux faire un PNG 100% valide mais qui contient malgré tout toutes sortes de données. (c'est valable pour les GIFs aussi je pense) La seule protection pour ce genre d'exploit est de bien configurer les types MIME sur son serveur et de s'assurer qu'on ne peut uploader que des fichiers dont l'extension correspond à un type MIME autorisé.
Posté : 06 sept. 2007, 16:06
par Genova
Le problème c'est que je ne peux pas trop compter sur la bonne sécurité d'un serveur pour mon script puisqu'il est utilisable par tout le monde, aussi bien en hébergement de base qu'en serveur. En regardant le code de phpBB, ils font un getimagesize() pour éviter ces soucis, je vais me contenter de ça pour le moment, faute de meilleure solution :/
Posté : 06 sept. 2007, 16:12
par Sékiltoyai
Ce que tu peux faire, c'est utiliser MIME si ca existe sur le serveur.