En bref

  • CVE-2026-40493 (CVSS 9.8) — heap buffer overflow critique dans la librairie de traitement d'images SAIL, déclenché par des fichiers PSD forgés.
  • Impact : crash de service garanti, exécution de code potentielle. Toute application embarquant SAIL sans le correctif est concernée.
  • Action urgente : appliquer le commit c930284445ea3ff94451ccd7a57c999eca3bc979 ou mettre à jour SAIL vers la version corrigée publiée le 18 avril 2026.

Les faits

La vulnérabilité CVE-2026-40493, publiée le 18 avril 2026 et relayée par TheHackerWire, OffSeq Threat Radar et Vulnerability-Lookup, affecte SAIL (Squirrel Abstract Image Library), une librairie C multi-plateforme utilisée pour lire et écrire de nombreux formats d'image incluant le PSD d'Adobe Photoshop. La faille obtient un score CVSS v3.1 de 9.8 (Critical) — vecteur AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — et est classée CWE-787 (Out-of-bounds Write). Selon l'advisory officiel, aucune exploitation in-the-wild n'a été publiquement documentée à la date de publication, mais la combinaison « déterminisme de l'overflow + vecteur réseau + aucune authentification » classe la CVE parmi les correctifs à appliquer en priorité sur toute la chaîne logicielle embarquant SAIL.

Techniquement, le défaut réside dans le codec PSD de SAIL. La librairie calcule le nombre d'octets par pixel (bpp) à partir des champs bruts d'en-tête channels * depth. Pour le mode colorimétrique LAB avec channels=3 et depth=16, le calcul donne bpp = (3*16 + 7)/8 = 6. Mais le buffer de pixels est alloué en fonction du format résolu, ici BPP40_CIE_LAB, qui ne réserve que 5 octets par pixel. Chaque écriture de pixel déborde donc d'un octet, et ce de façon déterministe sur chaque ligne de l'image. L'overflow se propage au-delà de la zone allouée dans le tas et peut être transformé en écriture contrôlée par un attaquant via la construction d'un PSD malicieux.

Le correctif est contenu dans le commit c930284445ea3ff94451ccd7a57c999eca3bc979 du dépôt HappySeaFox/sail. Toute application, service ou outil de ligne de commande qui traite des PSD via SAIL doit intégrer cette mise à jour. Les distributions Linux maintenant SAIL — Arch, Debian testing, Fedora — ont commencé à pousser les paquets corrigés à partir du 19 avril 2026.

Impact et exposition

L'exposition dépend des intégrations. SAIL est utilisée par plusieurs visualiseurs d'images multi-format open source, des pipelines de traitement automatisé d'images (e-commerce, DAM, CDN), et certains services cloud de conversion d'image à la volée. Toute plateforme acceptant un upload utilisateur PSD puis passant le fichier à SAIL pour extraction de miniatures, conversion ou indexation doit être considérée comme exposée. Les scénarios de surface d'attaque typiques : plateformes collaboratives de design, galeries web avec conversion automatique, outils de gestion de fichiers auto-hébergés et bibliothèques d'asset management utilisées en interne.

Le risque est amplifié lorsque SAIL tourne dans un contexte privilégié — processus root, conteneur privilégié, ou service accessible sans sandboxing renforcé. Dans ces environnements, l'exploitation du heap overflow peut conduire à une exécution de code distante complète, avec potentiellement un pivotement vers le stockage des fichiers utilisateurs. Même sans RCE atteinte, le crash déterministe suffit à monter une campagne de déni de service ciblée. À lire également pour des patterns similaires d'exploitation via parsing de fichier : CVE-2026-34621 Adobe Reader zero-day.

Recommandations immédiates

  • Mettre à jour SAIL vers la version corrigée intégrant le commit c930284445ea3ff94451ccd7a57c999eca3bc979 — advisory HappySeaFox/sail du 18 avril 2026.
  • Recenser les dépendances : identifier tous les projets embarquant SAIL directement ou via dépendance transitive. Vérifier les paquets système (pacman -Q sail, dpkg -l | grep libsail) et les images Docker en production.
  • Sandboxing préventif : exécuter tout parseur d'image dans un processus isolé (seccomp, AppArmor, namespaces) pour limiter l'impact d'un potentiel RCE avant patch complet.
  • Filtrage en amont : rejeter les uploads PSD dépassant une taille raisonnable, et valider les en-têtes avant passage au parseur. Un PSD forgé exploitant CVE-2026-40493 contient des valeurs channels=3, depth=16 incohérentes avec un usage légitime basique.
  • Monitoring : surveiller les crashs répétés de processus traitant des images (SIGSEGV, SIGABRT). Un schéma de crash corrélé à l'ingestion de fichiers PSD suggère une tentative d'exploitation.

⚠️ Urgence

Overflow déterministe + vecteur réseau + aucune authentification = CVE 9.8. Même en l'absence d'exploitation in-the-wild documentée à ce jour, la simplicité du trigger (un fichier PSD malicieux) et la large diffusion de SAIL dans la chaîne d'approvisionnement open source imposent un patch rapide. Les plateformes acceptant des uploads d'images utilisateurs sont en première ligne.

Comment savoir si mon application utilise SAIL ?

Sur Linux, inspecter les liens dynamiques du binaire : ldd mon_binaire | grep sail ou readelf -d mon_binaire | grep -i sail. Au niveau paquet : pacman -Qs sail (Arch), dpkg -l | grep libsail (Debian/Ubuntu), rpm -qa | grep sail (Fedora/RHEL). Pour les builds statiques, chercher les symboles sail_* avec strings mon_binaire | grep sail_.

Un WAF peut-il bloquer l'exploitation via upload ?

Partiellement. Un WAF peut bloquer les uploads de fichiers PSD trop volumineux ou provenant de sources non authentifiées, mais il ne peut pas détecter la malformation fine de l'en-tête (channels=3, depth=16 dans un mode LAB) sans règle sur-mesure. La meilleure protection reste le patch + l'isolation du processus de parsing. Voir aussi CVE-2026-40175 Axios Prototype Pollution pour des limites similaires des WAF face aux exploits liés au parsing.

Les autres formats d'image supportés par SAIL sont-ils vulnérables ?

L'advisory pointe spécifiquement le codec PSD en mode LAB avec depth=16. Cependant, la logique de calcul de bpp à partir de channels * depth existe dans plusieurs codecs SAIL. Un audit de code publié par OffSeq Threat Radar recommande de considérer comme suspects les formats exotiques (TIFF LAB, EXR) jusqu'à confirmation par l'éditeur. À rapprocher de notre dossier CVE-2026-34621 Adobe Reader, qui illustre des patterns de corruption mémoire sur parsers de documents complexes.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.

Demander un audit