web-dev-qa-db-fra.com

Quels formats de fichiers sont connus pour être dangereux?

J'ai récemment découvert que les fichiers PDF peuvent contenir des virus et de l'impression que j'ai obtenu sa plus qu'une erreur de dépassement de tampon (j'ai entendu dire que cela peut visiter automatiquement les URL, mais la personne sonnait incertaine)

Quels sont certains formats que je devrais me méfier jusqu'à ce que tout soit patché?

Je me souviens qu'à un moment donné, il y avait quelque chose dans un projet VB6 qui exécuterait du code sur la chargement du projet (sans courir). C'était dangereux.

14
user5575

Certains formats peuvent être appelés intrinsèquement peu sûrs en raison de leur complexité et de leur histoire d'utilisation en tant que vecteurs d'attaque. Adobe PDF et MS Office Fichiers viennent à l'esprit. Tout type d'exécutable binaire est certainement problématique à moins que Sandboxing soit déployé.

Mais en général, cela dépend de l'application utilisée pour ouvrir le fichier, pas le fichier lui-même. Même des formats simples qui ne peuvent pas incorporer un code exécutable peuvent être analysés par une application dans le mauvais sens, entraînant des bogues et des vulnérabilités potentielles. De même, l'application de sandboxing peut avoir des bogues permettant à des bogues qui permettent d'exposer ses privilèges, de sorte que je tiendrai un exécutable de boîte à sandes à propos de des formats de fichier complexes.

Il peut être possible d'avoir des formats de fichiers relativement sécurisés à l'aide d'un format de données pouvant être vérifié automatiquement, à l'aide d'un analyseur généré automatiquement qui n'a pas besoin d'informations sur le type de fichier, à l'exception de la grammaire utilisée. Je pense que le format ASN.1 est candidat à cela. Mais ce type de technologie est utilisé presque nulle part.

24
pepe

En théorie, tout format nécessitant un traitement compliqué ou permet d'intégrer d'autres formats (en particulier Flash) peut être dangereux. Les problèmes les plus pertinents sont cependant:

  • Tous les fichiers Microsoft Office (pas tant à cause des vulnérabilités des bureaux, mais parce que ces fichiers peuvent intégrer Flash et exploiter ses vulnérabilités)
  • Fichiers PDF
  • De toute évidence, tous les fichiers pouvant s'exécuter par eux-mêmes (exécutables et fichiers par lots de toutes sortes). Les fichiers "lot" sous Windows ne sont pas seulement *.bat fichiers mais aussi fichiers JavaScript *.js, Fichiers de script de base visuels *.vbs, Fichiers de script Windows *.wsf et PowerShell avec ses différentes extensions de fichiers.
  • Les fichiers d'archives (principalement zip ou rar) car ceux-ci sont couramment utilisés pour compresser les types de fichiers mentionnés ci-dessus et se faufiler des filtres passés.
17
Wladimir Palant

Le problème PDF problème est probablement une référence à un ancien problème permettant de pré-installé PDF plugins exécuterait automatiquement JavaScript spécifié dans le fragment d'URL.

Il n'y a pas de liste complète de formats de fichiers dangereux. Non seulement cette liste noire est également ignorée polyglots :

Le terme est parfois appliqué aux programmes valides dans plusieurs langues, mais n'effectue pas strictement la même fonction dans chacun.

Par exemple, il est possible de construire un gif qui est également JavaScript et une page HTML qui est aussi un JPEG . Tout format de fichier en sécurité, mais pour lequel il est possible d'écrire un polyglot avec une autre langue dangereuse, est potentiellement dangereux.

Lorsqu'un serveur envoie un fichier, il envoie également le type MIME de ce fichier dans un en-tête de type de contenu. Tout va bien lorsque le serveur affirme le serveur est cohérent avec le contexte attendu dans lequel ce contenu est utilisé. Que se passe-t-il lorsque le serveur n'envoie pas de contenu de contenu? Que se passe-t-il lorsqu'un fichier avec un type de contenu est envoyé lorsqu'un type différent est attendu?

La tristesse arrive.

Certains navigateurs considèrent que le serveur de type de contenu affirme être autoritaire et si le contenu ne parvient pas à analyser à ce type, le contenu n'est pas rendu. D'autres ignorent le type d'affirmation du serveur et essaient de deviner (renifler le contenu) pour son type. Ce reniflant peut prendre la forme d'heuristiques comme le suffixe du nom de fichier dans l'URL qui le spécifie, le premier couple "magique" d'octets du contenu, ou essaie simplement d'analyser le fichier avec différents analgésiques jusqu'à ce que l'on s'adapte. Le type d'analyseur essayé est parfois contraint par la balise particulière (le contenu de l'extrinstance attendu par une étiquette img _ n'essayerait d'être analysé selon les formats d'image native pris en charge par le navigateur.). Le problème est plus exacerbé par des plugins comme Java et flash et par différents types de caches et de la fonctionnalité "Enregistrer des fichiers" dans les navigateurs qui peuvent ne pas se rappeler à quel type de contenu a été affirmé par le serveur.

En outre, tout format de fichier binaire peut potentiellement escalader les privilèges en chatouillant des débordements de mémoire tampon dans le code qui le décode.

Si vous essayez de servir de contenu de sources non carteuses, vous devez le proxy et la normaliser.

7
Mike Samuel