Marie Lefebvre
Marie Lefebvre
Analyste SOC Senior
| · 14 min de lecture

Comment detecter les malwares steganographiques dans les images SVG — 7 etapes pour proteger votre entreprise

TL;DR

  • La steganographie SVG echappe totalement aux antivirus classiques car les fragments malveillants sont encodes en Base64 dans des commentaires ou attributs valides. La detection necessite une approche specifique combinant analyse statique, regles YARA et monitoring comportemental.
  • 7 etapes concretes et immediatement applicables : inventaire des SVG, analyse de la structure XML, detection de patterns Base64, regles YARA dediees, integration CI/CD, monitoring runtime et formation des equipes.
  • Implementation realisable en 2 a 4 semaines pour une PME de 50 a 200 employes. Les etapes 1 a 3 peuvent etre deployees en moins de 5 jours et offrent deja une protection significative contre les campagnes comme OtterCookie.

La recente campagne OtterCookie attribuee a la Coree du Nord a demontre que la steganographie dans les fichiers SVG est desormais une technique d'attaque operationnelle, pas un concept theorique. Avec zero detection antivirus au moment de sa decouverte, cette methode pose un defi majeur aux equipes de securite. Ce guide vous donne les 7 etapes concretes pour implementer un processus de detection dans votre organisation — que vous soyez une startup parisienne, une PME lyonnaise ou un grand groupe marseillais.

Avant de plonger dans les etapes, comprenons pourquoi les SVG sont un vecteur si efficace. Contrairement aux images raster (PNG, JPEG), les SVG sont des fichiers texte au format XML. Ils peuvent contenir des commentaires, des scripts, des elements de metadonnees et des attributs arbitraires — autant de cachettes potentielles pour du code malveillant. Et parce qu'ils sont omnipresents dans les projets web modernes (icones, illustrations, logos), personne ne s'etonne de leur presence dans un depot de code.

PIPELINE D'ANALYSE SVG : DU FICHIER BRUT A LA DECISION SECURITE ENTREE Fichiers .svg CI/CD, upload, git PARSING XML Extraction noeuds Commentaires, attrs DETECTION Base64, JS inline Regles YARA SCORING Poids par indicateur Score 0-100 DECISION Seuil configurable Alerte / Bloquer SCORE < 30 : OK Fichier autorise 30-70 : REVIEW Analyse manuelle SCORE > 70 : BLOCK Quarantaine + alerte INDICATEURS DE SCORING (poids) Commentaires HTML avec Base64 +30 pts Attributs data-* avec contenu encode +25 pts Elements <script> ou event handlers +25 pts Ratio taille fichier / complexite visuelle anormal +15 pts Paths avec coordonnees non-visuelles +15 pts Elements <foreignObject> avec HTML embed +10 pts Caracteres Unicode inhabituels (homoglyphes) +10 pts Bonus : Fichier JS dans le meme projet qui lit/parse des SVG (+20 pts contextuels) Bonus : Multiples SVG avec commentaires de tailles similaires (+15 pts contextuels)

Etape 1 : Inventorier tous les fichiers SVG de votre perimetre

La premiere etape, aussi basique qu'elle puisse paraitre, est souvent negligee : vous devez savoir exactement combien de fichiers SVG existent dans votre ecosysteme. Cela inclut les depots de code source, les systemes de gestion de contenu, les outils de collaboration et les espaces de stockage partages.

Pour les entreprises parisiennes, lyonnaises ou marseillaises qui gerent des dizaines de projets web en parallele, la volumetrie peut etre surprenante. Un projet React typique contient entre 50 et 200 fichiers SVG (icones, illustrations, logos). Un design system d'entreprise peut en contenir plusieurs milliers. Chacun de ces fichiers est un vecteur potentiel.

Commencez par scanner vos depots Git avec une commande simple : find . -name "*.svg" | wc -l. Puis identifiez les fichiers les plus recents et ceux provenant de sources externes (librairies tierces, contributions externes, assets de designers freelance). Classez-les par source d'origine et date d'ajout. Les fichiers recemment ajoutes par des contributeurs externes meritent une attention prioritaire.

Etape 2 : Analyser la structure XML de chaque SVG

Un fichier SVG legitime a une structure previsible : un element racine <svg> avec des attributs de dimensions, suivi d'elements graphiques (<path>, <rect>, <circle>, <text>) et parfois des <defs> pour les definitions reutilisables. Tout ce qui sort de ce schema merite investigation.

Les elements a rechercher specifiquement sont : les commentaires HTML (<!-- ... -->) contenant des chaines de plus de 20 caracteres, les attributs data-* avec des valeurs encodees, les elements <script> (rarement legitimes dans un SVG utilise comme asset statique), les event handlers (onload, onclick), et les elements <foreignObject> qui peuvent encapsuler du HTML arbitraire.

Un script Python utilisant xml.etree.ElementTree ou lxml peut parser l'ensemble de vos SVG en quelques minutes et extraire ces elements suspects. Le resultat est un rapport listant chaque fichier avec les indicateurs trouves, pret pour une analyse plus approfondie.

Etape 3 : Detecter les patterns Base64 et les contenus encodes

La technique de steganographie utilisee dans OtterCookie repose sur le Base64. Detecter les chaines Base64 dans des contextes inattendus est donc une priorite. Une expression reguliere efficace pour identifier le Base64 dans les commentaires est : <!--\s*[A-Za-z0-9+/=]{20,}\s*-->. Toute correspondance merite une investigation approfondie.

Attention aux faux positifs : certains SVG legitimes utilisent du Base64 pour embarquer des images raster (un <image href="data:image/png;base64,..."> est parfaitement normal). La cle est de distinguer le Base64 dans des contextes attendus (attributs href/xlink:href d'elements image) de celui dans des contextes suspects (commentaires, attributs data-*, metadonnees). Le decodage systematique des chaines Base64 trouvees dans des contextes suspects revele generalement du texte lisible ou du code JavaScript — un signal d'alerte majeur.

Pour les equipes basees a Lyon ou Paris qui gerent des projets d'internationalisation, attention : les fichiers SVG de drapeaux ou d'icones de langues sont des vecteurs privilegies car leur presence dans un projet est consideree comme parfaitement normale.

Etape 4 : Creer des regles YARA dediees a la steganographie SVG

YARA est l'outil de reference pour la detection de patterns dans les fichiers. Creez un jeu de regles specifiques aux techniques de steganographie SVG connues. Voici les patterns a couvrir en priorite :

Regle 1 : Commentaires Base64. Detecte les commentaires XML contenant des chaines Base64 de plus de 50 caracteres. C'est la technique exacte utilisee par OtterCookie et la plus courante dans les campagnes recentes.

Regle 2 : Scripts inline. Detecte les elements <script> dans les fichiers SVG. Dans 99% des cas, un SVG utilise comme asset statique (icone, illustration) n'a aucune raison de contenir du JavaScript.

Regle 3 : Event handlers. Detecte les attributs onload, onerror, onclick et autres gestionnaires d'evenements dans les elements SVG. Ces attributs peuvent executer du JavaScript arbitraire lorsque le SVG est affiche dans un navigateur.

Regle 4 : Ratio anomalie. Compare la taille du fichier a la complexite visuelle. Un SVG de 200 Ko qui ne dessine qu'un rectangle simple contient probablement des donnees cachees.

Besoin d'aide pour implementer ces regles de detection ?

Les analystes SOC de WebGuard Agency configurent vos regles YARA, integrent la detection dans votre pipeline CI/CD et forment vos equipes. Premier audit de votre perimetre SVG offert et sans engagement.

Demander un audit gratuit →

Etape 5 : Integrer la detection dans votre pipeline CI/CD

La detection ponctuelle est necessaire mais insuffisante. Pour une protection continue, integrez l'analyse SVG directement dans votre pipeline d'integration continue. Chaque commit incluant un fichier SVG doit declencher automatiquement le scan.

L'implementation la plus efficace utilise un hook pre-commit qui analyse les SVG ajoutes ou modifies avant meme qu'ils n'atteignent le depot distant. Cela bloque les fichiers suspects au plus tot dans le cycle de developpement. En complement, un job CI/CD execute une analyse complete a chaque pull request, avec un rapport detaille visible par les reviewers.

Pour les equipes qui utilisent GitHub Actions, GitLab CI ou Azure DevOps, l'integration se fait en ajoutant une etape de scan qui execute votre script d'analyse et vos regles YARA sur les fichiers SVG modifies. Le pipeline echoue si un fichier depasse le seuil de score defini, obligeant le developpeur a justifier le contenu suspect ou a le remplacer par un SVG propre.

Etape 6 : Monitorer le comportement runtime lie aux SVG

La detection statique ne suffit pas si l'attaquant utilise des techniques d'obfuscation avancees. Le monitoring runtime — c'est-a-dire l'observation du comportement des processus qui interagissent avec les fichiers SVG — est une couche de defense complementaire essentielle.

Configurez votre EDR pour alerter sur les scenarios suivants : un processus Node.js ou Python qui lit plusieurs fichiers SVG sequentiellement puis execute un eval() ou un new Function() ; un processus qui decode du Base64 apres avoir lu des fichiers image ; des connexions reseau sortantes (particulierement WebSocket/Socket.IO) initiees dans les minutes suivant la lecture de fichiers SVG.

Ces indicateurs comportementaux sont particulierement pertinents pour les entreprises a Paris et Marseille ou les equipes DevOps executent regulierement des scripts de build qui manipulent des SVG (optimisation avec SVGO, sprite generation, etc.). Il faut distinguer les usages legitimes des comportements malveillants en se basant sur les processus parents, les repertoires d'execution et les destinations reseau.

MATRICE DE DETECTION : INDICATEURS STATIQUES vs COMPORTEMENTAUX INDICATEURS STATIQUES (analyse fichier) INDICATEURS COMPORTEMENTAUX (runtime) RISQUE FAIBLE SVG normaux, comportement standard SUSPECT SVG anormaux mais pas exploites ANOMALIE Comportement suspect, fichiers normaux CRITIQUE SVG malveillants + exploitation active Icones UI OtterCookie SVG + Base64 embed SVGO processing Normal A investiguer Menace confirmee

Etape 7 : Former les equipes et etablir des procedures de reponse

La technologie seule ne suffit pas. Vos developpeurs, reviewers et equipes DevOps doivent comprendre la menace pour pouvoir la reconnaitre. Integrez la sensibilisation a la steganographie SVG dans votre programme de formation securite existant.

Pour les code reviewers : lors de la revue d'une pull request contenant des fichiers SVG, verifiez systematiquement le contenu des fichiers. Un SVG de drapeau ou d'icone n'a pas besoin de commentaires de 200+ caracteres. Ouvrez les SVG en mode texte, pas uniquement en mode preview. Questionnez tout fichier SVG qui semble disproportionnement gros par rapport a sa complexite visuelle.

Pour les equipes SOC : creez un playbook de reponse specifique aux alertes steganographie SVG. Le playbook doit inclure : isolation du poste concerne, extraction et analyse du fichier suspect, recherche de fichiers JS associes qui pourraient orchestrer le reassemblage, verification des connexions reseau recentes du poste, et escalade vers l'equipe forensique si le payload est confirme.

Pour le management : integrez cette menace dans votre registre des risques et votre plan de continuite d'activite. Un programme de gestion des vulnerabilites mature doit inclure les vecteurs non-conventionnels comme la steganographie. Prevoyez des exercices de simulation (tabletop exercises) ou l'equipe SOC doit identifier et repondre a une alerte de steganographie SVG dans un delai defini.

Conclusion : une protection accessible a toute entreprise

La detection des malwares steganographiques dans les SVG n'est pas reservee aux grandes entreprises disposant d'equipes SOC de 50 personnes. Les 7 etapes presentees dans ce guide sont implementables par toute entreprise disposant d'au moins un analyste securite ou un DevOps sensibilise a la cybersecurite. Les etapes 1 a 3 offrent deja une protection significative et peuvent etre deployees en moins d'une semaine.

Face a la sophistication croissante des campagnes comme OtterCookie, qui ciblent specifiquement les entreprises technologiques francaises via leurs processus de recrutement, la proactivite est essentielle. N'attendez pas d'etre la prochaine victime pour mettre en place ces controles. Comme le montrent les principales vulnerabilites de 2026, les attaquants innovent constamment et les defenses doivent evoluer au meme rythme.

Implementez ces 7 etapes avec l'accompagnement d'experts

Les analystes SOC de WebGuard Agency vous accompagnent dans l'implementation complete de ce processus de detection : regles YARA sur mesure, integration CI/CD, formation de vos equipes et mise en place du monitoring runtime. Premier audit offert.

Contactez nos experts →
19 juillet 2026 · 🕑 14 min
FAQ

Questions frequentes

La steganographie SVG consiste a dissimuler des donnees (code malveillant, payloads) a l'interieur de fichiers SVG valides sans alterer leur rendu visuel. Les techniques incluent l'insertion de commentaires HTML encodes en Base64, l'ajout d'attributs data- contenant du code, ou l'utilisation de paths invisibles dont les coordonnees encodent des donnees. Le fichier SVG reste parfaitement fonctionnel et affiche l'image attendue, rendant la detection visuelle impossible.
Non, les antivirus classiques bases sur la detection par signature sont inefficaces contre la steganographie SVG. La campagne OtterCookie a demontre un taux de detection de 0/70+ moteurs antivirus. Les fragments individuels ne sont pas malveillants et ne correspondent a aucune signature connue. Seule une analyse comportementale post-execution, un audit specifique du contenu SVG ou des regles YARA dediees peuvent identifier ces menaces.
Plusieurs outils et approches existent : scripts personnalises en Python utilisant les librairies xml.etree ou BeautifulSoup pour parser les SVG, regles YARA specifiques aux patterns Base64 dans les commentaires XML, integration dans les pipelines CI/CD via des hooks pre-commit, et solutions EDR avancees configurees pour monitorer les acces fichiers SVG suivis d'operations de decodage Base64. L'outil svgo peut egalement etre configure pour striper les commentaires et elements non-graphiques, servant de filtre de nettoyage preventif.
L'implementation basique (etapes 1 a 3 : inventaire, analyse statique, regles YARA) peut etre realisee en 2 a 5 jours par un analyste SOC ou un DevSecOps experimante. L'implementation complete des 7 etapes, incluant l'integration CI/CD, le monitoring runtime et la formation des equipes, necessite generalement 2 a 4 semaines selon la maturite securite de l'entreprise et la complexite de son infrastructure. Un accompagnement par un prestataire specialise comme WebGuard Agency peut accelerer significativement ce delai.

Vous ne trouvez pas la reponse a votre question ?

Certifications & accreditations
PASSI (ANSSI)
ISO 27001
CEH Certified
OSCP
CISSP
SOC 2 Type II
Newsletter

Veille cybersecurite

Recevez chaque semaine les dernieres menaces, vulnerabilites et bonnes pratiques directement dans votre boite mail.

Pas de spam. Desinscription en un clic. Environ 1 email par semaine.

Pret a renforcer votre cybersecurite ?

Rejoignez les entreprises qui font confiance a WebGuard Agency pour proteger leurs actifs numeriques. Premier audit offert.

Voir nos tarifs
200+
Audits realises
99,9%
Disponibilite SOC
< 4h
Temps de reponse

🛡️ Audit de sécurité gratuit — réponse en 24h, sans engagement

Obtenir mon audit gratuit →