# Paint et la RCE : comment un lecteur d’image peut devenir une surface d’attaque

> Microsoft classe CVE-2026-83844 comme RCE dans Paint, mais ne publie qu’une lecture hors limites. Explication technique, conditions inconnues et correctif.

Publié le: 2026-11-04  
Canonical: https://rootzero.eu/research/paint-rce-lecture-hors-limites-2026/

**Avis Microsoft : 13 octobre 2026. Analyse rédigée le 4 novembre 2026.** Oui, un logiciel de dessin peut figurer dans la colonne « exécution de code à distance ». Paint lit des fichiers image, des métadonnées et parfois des objets copiés depuis d’autres applications. Ces données ne sont pas du code source, mais leur décodage est assuré par du code natif qui manipule tailles, offsets et buffers. Une erreur dans ce traitement peut compromettre le processus qui ouvre les données. C’est le modèle général. Pour **[CVE-2026-83844](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-83844)**, Microsoft dit plus précisément « lecture hors limites » dans Windows Paint et classe l’impact en RCE.

La nuance est essentielle : le [dossier CVE publié par Microsoft](https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/83xxx/CVE-2026-83844.json) ne nomme ni format d’image, ni décodeur, ni fichier déclencheur, ni chaîne d’exploitation. Il donne Paint 11.0.0.0 jusqu’aux versions précédant **11.2605.91.0**, un score CVSS 3.1 de **8,1**, et le vecteur `AV:N/AC:H/PR:N/UI:N`. Un titre « un simple clic sur un PNG donne une RCE » dépasserait les faits disponibles. Le mécanisme exact n’est pas public.

## De l’image au code : la frontière technique

Un parseur d’image prend une séquence d’octets et en déduit des dimensions, des palettes, des blocs compressés, des profils de couleur ou des champs de métadonnées. Il alloue ensuite des buffers et lit à des offsets calculés. Le contrat attendu ressemble à ceci : pour lire `n` octets à l’offset `i` dans un buffer de longueur `len`, il faut vérifier `i <= len` et `n <= len - i` avant la lecture. Vérifier seulement `i + n <= len` peut être insuffisant si l’addition déborde dans le type entier utilisé. Une lecture hors limites, classée **CWE-125**, expose des octets voisins ou provoque un crash.

Cela explique **une primitive de lecture**, pas encore une exécution de code. Pour atteindre une RCE, un attaquant doit généralement transformer cette primitive en fuite d’adresses ou d’état exploitable, puis la combiner avec une autre faiblesse, ou profiter d’un effet de bord plus riche que la classification CWE ne décrit pas. La publication Microsoft **affirme** l’impact RCE, mais ne détaille pas cette transition. Nous ne pouvons pas attribuer à Paint une seconde primitive d’écriture, un contournement ASLR ou un chemin automatique particulier sans preuve publique.

Autre point contre-intuitif : Microsoft note `UI:N`, donc aucune interaction utilisateur dans son scénario de référence, et `AV:N`, donc un attaquant accessible par réseau. Cela ne prouve pas que Paint écoute sur un port ou qu’une pièce jointe se lance seule. Le vecteur CVSS décrit des prérequis globaux, sans dévoiler la route d’entrée. Des hypothèses comme aperçu automatique, intégration à un autre composant ou traitement d’une donnée synchronisée demanderaient un avis ou un PoC indépendant ; aucun n’est décrit dans le dossier officiel. La complexité `AC:H` indique que l’exploitation requiert des conditions particulières, non identifiées dans la notice.

## Comment on aurait pu la trouver

Un audit autorisé examinerait les formats que Paint accepte réellement, puis ferait varier méthodiquement les champs de longueur, les comptes de blocs, les dimensions et les données tronquées. Le moteur d’essai doit garder les fichiers qui provoquent une divergence entre version corrigée et version antérieure, lancer Paint avec une instrumentation mémoire et réduire chaque fichier au champ minimal responsable. L’analyse statique ou binaire localise ensuite le calcul de borne, le type entier et le lecteur fautif. **Un crash sur un fichier déformé n’est pas une preuve de RCE** ; la preuve demande de montrer comment les octets contrôlés passent de la lecture fautive à un contrôle effectif du flot d’exécution.

Cette démarche décrit une méthode de découverte, pas la découverte réelle de CVE-2026-83844. Microsoft n’a pas publié dans le dossier consulté le chemin de recherche du rapporteur ni le diff du correctif. Toute présentation d’un exploit spécifique comme fait établi serait une reconstruction non vérifiée.

## Vérifier le correctif sans confondre Windows et Paint

Le [dossier CVE](https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/83xxx/CVE-2026-83844.json) fixe le seuil à Paint **11.2605.91.0**. C’est la version de l’application qui importe : la date de mise à jour de Windows ne suffit pas si l’app Paint n’a pas reçu sa mise à jour. Sur un poste administré, inventorier la version de Paint installée, déployer la mise à jour via Microsoft Store ou le canal d’applications utilisé, puis contrôler la version après déploiement. Les fichiers reçus de l’extérieur restent des données non fiables, même lorsqu’ils semblent être de simples images.

La question « comment Paint peut mener à une RCE ? » a donc deux réponses. **En général**, le décodage natif d’une image peut corrompre la mémoire et donner du contrôle à l’attaquant. **Pour cette CVE**, la chaîne précise entre lecture hors limites et exécution n’a pas été rendue publique. La rigueur technique consiste à tenir ces deux phrases ensemble.

Le [calculateur CVSS](/outils/cvss/#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) permet de décomposer le vecteur publié, sans reconstituer une chaîne d’exploitation inconnue. Notre note [« CVSS n’est pas un risque »](/research/cvss-n-est-pas-un-risque/) explique ensuite pourquoi l’exposition des postes, les usages et le déploiement effectif du correctif restent nécessaires à la priorisation.

**Sources principales :** [avis Microsoft](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-83844), [enregistrement CVE de Microsoft](https://raw.githubusercontent.com/CVEProject/cvelistV5/main/cves/2026/83xxx/CVE-2026-83844.json).
