Infrastructure
SVG : Scalable Vector Graphics. « Graphiques vectoriels redimensionnables », par analogie avec un tracé au compas et à la règle qu'on peut refaire à n'importe quelle taille, là où une photo agrandie finit en mosaïque de carrés.
Du texte, pas des pixels : Un fichier SVG est un document XML qui décrit des formes, des chemins, des couleurs et du texte par leurs coordonnées. Il se lit, se compresse, se versionne et se modifie dans un éditeur de texte comme n'importe quel code source.
Vectoriel contre matriciel : Le rendu est recalculé à chaque affichage : une icône SVG reste nette sur une montre comme sur un écran de salle de réunion. En contrepartie, le format convient mal aux photos, qui restent l'affaire du PNG ou du JPEG.
Un document actif : Le SVG accepte des balises <script>, des gestionnaires d'événements et des références externes : c'est un document, pas une image. Accepter des SVG dans un formulaire de téléversement au motif que « c'est juste une image », c'est accueillir une page web qui a eu la courtoisie de se déguiser en logo.
Tout dépend du chargement : Chargé par une balise <img>, le fichier est dessiné et n'exécute rien. Ouvert à sa propre adresse, ou placé dans un <iframe>, c'est une page complète dont les scripts tournent dans l'origine qui la sert. Injecté dans le HTML d'une page, ses gestionnaires d'événements s'exécutent : le <svg onload=…> est un classique du XSS.
Désamorcer : Trois gestes, dans cet ordre : assainir le fichier reçu (DOMPurify, par exemple), le servir depuis un domaine séparé ou avec un en-tête Content-Disposition: attachment, et verrouiller ce qui reste par une Content-Security-Policy. Vérifier l'extension ne sert à rien : le danger est dans le contenu, pas dans le nom du fichier.
Explication de la marmotte
Imagine deux façons d'envoyer un dessin à un ami. La première : une photo du dessin. Si ton ami l'agrandit sur un grand écran, il voit apparaître des petits carrés flous. La seconde : une liste d'instructions, du genre « trace un cercle rouge au milieu, puis un trait noir d'un coin à l'autre ». Ton ami peut refaire le dessin en tout petit ou en géant, et il reste parfaitement net. Ce format d'image fonctionne comme cette liste. Il y a un piège : comme ce sont des instructions écrites, quelqu'un de malin peut y glisser des ordres qui ne dessinent rien et qui font faire autre chose à ton navigateur internet. C'est pour ça que les sites prudents vérifient ces fichiers avant de les afficher.
Où ce terme est utilisé
- Attaque XXE : entités externes XML, lecture de fichiers et SSRF (4 occurrences)
- Cross-site scripting (XSS) : mécanisme, variantes et défenses (2 occurrences)
- Attaque MIME sniffing par fichier téléversé (1 occurrence)
- Mentions légales (1 occurrence)
- Upload de shell PHP déguisé en image dans un CMS (1 occurrence)
