En bref

  • CVE-2026-39846 (CVSS 9.0) : exécution de code à distance dans SiYuan via injection XSS escaladée en RCE Electron
  • Versions antérieures à 3.6.4 de l'application desktop SiYuan vulnérables — exploitation via synchronisation de notes malveillantes
  • Action urgente : mettre à jour SiYuan vers la version 3.6.4 ou supérieure immédiatement

Les faits

Points clés à retenir

  • Les faits
  • Impact et exposition
  • Recommandations immédiates

Le 7 avril 2026, la vulnérabilité CVE-2026-39846 a été publiée avec un score CVSS de 9.0, la plaçant dans la catégorie critique. Elle affecte SiYuan, système de gestion de connaissances personnelles open source largement adopté par les développeurs, les chercheurs et les équipes techniques pour centraliser leur documentation. La faille CVE-2026-39846 SiYuan RCE trouve son origine dans le traitement du contenu des légendes de tableaux : l'application stocke ces chaînes sans échappement sécurisé approprié avant de les réinjecter dans le rendu des notes. Un attaquant capable de faire ouvrir ou synchroniser un document malveillant déclenche alors l'exécution de code arbitraire sur la machine de la victime, avec les privilèges de l'utilisateur courant. Le vecteur de synchronisation aggrave l'impact, puisqu'il permet de propager la charge utile à l'ensemble des espaces de travail partagés.

L'escalade vers une exécution de code à distance complète est rendue possible par la configuration du renderer Electron de SiYuan Desktop. L'application fonctionne avec nodeIntegration activé et contextIsolation désactivé, ce qui accorde au JavaScript contrôlé par l'attaquant un accès direct aux API Node.js, contournant les protections sandbox habituelles du navigateur. Cette combinaison transforme un simple XSS en une RCE complète sur la machine de la victime.

Le vecteur d'attaque est particulièrement insidieux : un attaquant peut injecter une note piégée dans un espace de travail synchronisé. Lorsque la victime synchronise son workspace et ouvre la note malveillante, le code arbitraire s'exécute automatiquement avec les privilèges de l'utilisateur courant. Ce scénario d'attaque via la chaîne de synchronisation rend l'exploitation silencieuse et difficile à détecter.

Impact et exposition

Tous les utilisateurs de SiYuan Desktop dans des versions antérieures à 3.6.4 utilisant la synchronisation de notes sont directement exposés. SiYuan compte plus de 25 000 étoiles sur GitHub et une communauté active, principalement composée de développeurs, chercheurs et professionnels de la tech. Le risque est amplifié dans les environnements où plusieurs utilisateurs partagent des espaces de travail synchronisés, comme les équipes de recherche ou de documentation technique.

L'exploitation ne nécessite aucune interaction complexe de la victime au-delà de l'ouverture d'une note synchronisée. L'attaquant obtient une exécution de code avec les privilèges complets de l'utilisateur, ce qui peut inclure l'accès aux clés SSH, tokens d'API, fichiers de configuration et autres données sensibles présentes sur la machine. Dans un contexte professionnel, cela peut servir de point d'entrée pour un mouvement latéral vers l'infrastructure de l'entreprise.

Recommandations immédiates

  • Mettre à jour SiYuan Desktop vers la version 3.6.4 ou supérieure immédiatement
  • Auditer les notes récemment synchronisées pour détecter du contenu HTML suspect dans les légendes de tableaux
  • Désactiver temporairement la synchronisation cloud si la mise à jour ne peut pas être appliquée immédiatement
  • Vérifier les processus lancés récemment sur les machines où SiYuan était installé pour détecter une éventuelle compromission
  • Révoquer et renouveler les tokens d'API et clés SSH présents sur les machines potentiellement compromises

⚠️ Urgence

CVSS 9.0 — exécution de code à distance via simple synchronisation de notes. L'exploitation est silencieuse et ne requiert aucune action explicite de la victime au-delà de l'ouverture d'une note. Le correctif est disponible en version 3.6.4. Mettez à jour sans délai.

Comment savoir si je suis vulnérable à CVE-2026-39846 ?

Ouvrez SiYuan Desktop et accédez à Paramètres > À propos pour vérifier votre numéro de version. Toute version antérieure à 3.6.4 est vulnérable. Si vous utilisez la synchronisation cloud ou le partage de workspace, le risque est élevé. Recherchez dans vos notes récentes la présence de balises HTML suspectes dans les légendes de tableaux avec la fonction de recherche globale de SiYuan.

Détails techniques du vecteur d'exploitation

Le score CVSS 9.0 de CVE-2026-39846 se décompose selon le vecteur AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H : une exploitation réseau (AV:N) à faible complexité (AC:L), sans privilège préalable requis (PR:N), mais nécessitant une interaction utilisateur (UI:R) — l'ouverture de la note piégée. Le champ « Scope: Changed » (S:C) reflète précisément l'escalade hors du contexte applicatif normal, puisque le code injecté sort du rendu HTML pour atteindre les API Node.js du processus Electron hôte. C'est cette rupture de périmètre qui justifie un score aussi élevé pour une faille initialement classée XSS stocké.

Techniquement, la chaîne d'exploitation repose sur trois maillons : (1) absence d'échappement HTML lors du stockage des légendes de tableaux côté serveur/fichier Markdown de SiYuan, (2) absence de Content Security Policy stricte dans le renderer Electron empêchant l'exécution de scripts inline, et (3) nodeIntegration: true combiné à contextIsolation: false dans la configuration BrowserWindow — une configuration pourtant déconseillée depuis Electron 12 par la documentation officielle du projet. Un payload typique embarque un appel à require('child_process').exec() directement depuis le contexte de rendu, sans passer par un pont IPC contrôlé.

Correctif et détection

La version 3.6.4, publiée en correction de cette CVE, introduit un échappement systématique du contenu des cellules de tableau via une fonction de sanitisation dédiée et restreint les capacités du renderer conformément aux bonnes pratiques Electron (contextIsolation activée, preload script avec API exposée de façon contrôlée via contextBridge). Pour vérifier une exposition passée, les administrateurs peuvent inspecter les journaux de synchronisation SiYuan à la recherche de blocs <script> ou d'attributs onerror/onload anormaux dans les fichiers .sy (format natif des notes), ainsi que rechercher des processus enfants inattendus lancés par l'exécutable SiYuan dans les journaux EDR.

Ce type de chaîne XSS-vers-RCE via Electron mal configuré n'est pas isolé : des failles structurellement similaires ont touché d'autres applications de prise de notes basées sur ce framework ces dernières années, confirmant un schéma récurrent dans l'écosystème des outils de productivité desktop hybrides web/natif. Les équipes utilisant plusieurs applications Electron pour la gestion documentaire devraient auditer systématiquement leur configuration nodeIntegration/contextIsolation, au-delà du seul cas SiYuan.

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

Sources et références