web-dev-qa-db-fra.com

Est-il possible de stocker des données arbitraires dans un fichier image?

Est-il possible de stocker des données arbitraires telles que des documents ou un programme sous la forme d'un fichier image, tel qu'une image PNG? Mon inquiétude est que quelqu'un pourrait encoder des données pour une utilisation par des logiciels malveillants dans une image et la télécharger sur un site comme Flickr.

25
bwDraco

Pour la plupart des formats de fichiers, oui. Par exemple, les fichiers PNG sont composés de morceaux dactylographiés. Vous pouvez donc ajouter un morceau nommé aAAA ou lOLZ avec des données arbitraires. JPEG a des segments "spécifiques à une application" APPn; Les balises EXIF ​​dans les JPEG sont en fait une structure TIFF complète à l'intérieur d'une telle balise. D'autres formats tels que GIF ne sont pas extensibles, mais ils ont souvent un champ pour les commentaires textuels; Cela a déjà été abusé .

Cependant, il existe des moyens de protéger contre cela - par exemple, de tels sites Web que IMGUR traite automatiquement tous les téléchargements avec pngcrush ou des outils similaires, qui déposent tout ce qui n'est pas absolument nécessaire.

Mais à la fin, l'échange de données ne peut pas être empêché. En plus de la stéganographie de l'image susmentionnée, vous avez Twitter et ses clones, des dizaines de pâtebines (dans lesquelles des postes incompréhensibles sont considérés comme assez normaux), des formes de commentaires de vieux poteaux de blog (j'essaie toujours de me souvenir du livre que cela a été suggéré), ... plus de manière réaliste, la plupart des logiciels malveillants contacteront simplement leurs "propres" serveurs.

22
user1686

Les fichiers image, y compris PNG, ont un format spécifique. La partie d'en-tête du fichier décrit l'image et toutes les données suivantes seraient interprétées comme des données d'image (basées sur les en-têtes).

Cependant, vous pouvez ajouter des données arbitraires à la fin d'une PNG, après les données d'image, qui peuvent ensuite être lues plus tard. Ce serait assez facile à détecter - il ne devrait pas y avoir de données après la fin des données d'image.

Sinon, vous pouvez encoder des données arbitraires dans l'image elle-même, en utilisant stéganographie . Cela modifie subtilement l'image elle-même d'une manière qui est largement indétectable, sauf si vous savez exactement ce à rechercher (une connaissance préalable de la méthode de codage est souvent nécessaire).

12
Paul