CVE-2026-42249 : traversée de répertoire par en-têtes HTTP et RCE dans le mécanisme de mise à jour d'Ollama sous Windows
SCORE DE MENACE HERMES & COMPROMISSION DU RUNTIME IA LOCAL
Cible :Ollama pour Windows — Service de mise à jour automatique en arrière-plan et gestionnaire de bureau Bien que le NVD classe la CVE-2026-42249 isolément avec un score de 7.7 (Élevé), le Hermes Threat Score la rehausse à 92 (CRITIQUE). En environnement opérationnel, cette faille se chaîne directement avec la CVE-2026-42248 (absence totale de vérification de signature binaire dans le client Windows). Ollama étant déployé sur des millions de postes de développeurs et de data scientists, la manipulation des en-têtes de réponse permet d'écrire un exécutable malveillant dans le dossier de démarrage Windows, garantissant une persistance silencieuse avec les privilèges de l'utilisateur.
SÉVÉRITÉ AGENTIQUE HASS & PERSISTANCE SUR LES POSTES DE DÉVELOPPEMENT IA
Cible :Moteur d'inférence LLM local, dépôts de poids propriétaires et secrets des développeurs La compromission du moteur d'inférence local offre aux adversaires un accès direct aux poids des modèles propriétaires, aux données d'entraînement non publiées et aux clés d'accès configurées sur les postes de travail. L'attaquant peut détourner les API d'inférence locales et pivoter vers les dépôts de code source de l'organisation.
CVE-2026-42249: Ollama Windows Auto-Updater HTTP Header Path Traversal RCEVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Microsoft Windows & Windows Server documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Architecture technique et anatomie de l’attaque
Section intitulée « 1. Architecture technique et anatomie de l’attaque »Le client Ollama pour Windows exécute une application de zone de notification (ollama app.exe) qui interroge régulièrement l’API de mise à jour (https://ollama.com/api/update).
┌─────────────────────────┐ ┌─────────────────────────┐│ Client Ollama │ ──── GET /api/update ─────────> │ Serveur amont ou ││ (Application Windows) │ │ Attaquant Man-in-Mid │└────────────┬────────────┘ <─── En-têtes HTTP piégés ───── └─────────────────────────┘ │ ETag: "../../../Startup/payload.exe" │ (Ou Content-Disposition forgé) ▼┌─────────────────────────┐│ Construction du chemin │ ──> Concaténation vulnérable :│ │ C:\Users\<user>\AppData\Local\Ollama\Updates\..\..\└────────────┬────────────┘ ..\Microsoft\Windows\Start Menu\Programs\Startup\payload.exe │ │ Dépôt direct du binaire PE dans le dossier de démarrage ▼┌─────────────────────────┐│ Échec de signature │ ──> CVE-2026-42248 : la fonction de contrôle renvoie toujours VRAI└────────────┬────────────┘ │ │ Connexion utilisateur ou redémarrage système ▼┌─────────────────────────┐│ Exécution de code │ ──> payload.exe s'exécute avec les droits de la session│ (RCE persistante) │ Vol de clés d'API, clés SSH, secrets Git et modèles└─────────────────────────┘| Paramètre | Spécification technique | Détail opérationnel |
|---|---|---|
| Identifiant CVE | CVE-2026-42249 | Chaîné avec CVE-2026-42248 |
| Classe de vulnérabilité | Traversée de répertoire (CWE-22) / Téléchargement non sécurisé (CWE-494) | Échappement de répertoire de destination |
| Système affecté | Windows (architectures x64 et ARM64) | macOS et Linux emploient des validateurs distincts |
| Mécanisme déclencheur | Scrutation périodique en arrière-plan ou vérification manuelle | Déclenchement automatique sans confirmation |
| Vecteur d’exploitation | Man-in-the-Middle (MitM), CDN corrompu, proxy réseau malveillant | Injection d’en-tête ETag ou Content-Disposition |
| Emplacement ciblé | C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp | Dossiers de persistance automatique Windows |
| Versions affectées | 0.12.10 à 0.17.5 | Confirmé par les chercheurs en sécurité |
| Version corrective | 0.17.6+ | Application de filepath.Base() et contrôle Authenticode |
2. Analyse de cause racine : concaténation non assainie d’en-têtes HTTP
Section intitulée « 2. Analyse de cause racine : concaténation non assainie d’en-têtes HTTP »Faille de construction de chemin
Section intitulée « Faille de construction de chemin »Lors de la préparation du fichier de mise à jour, le code en langage Go interrogeait l’en-tête distant et le joignait directement au répertoire temporaire :
// Code vulnérable dans le gestionnaire de mise à jour Ollama Windows// app/lifecycle/updater_windows.go (avant v0.17.6)
func stageUpdate(resp *http.Response) (string, error) { // Extraction de l'en-tête ETag servant d'identifiant de fichier etag := resp.Header.Get("ETag") if etag == "" { etag = "ollama_update.exe" }
// Suppression des guillemets éventuels etag = strings.Trim(etag, "\"")
// FAILLE CRITIQUE : appel direct à filepath.Join sans vérifier l'absence de ".." updateDir := filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "Updates") destPath := filepath.Join(updateDir, etag)
out, err := os.OpenFile(destPath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0755) if err != nil { return "", err } defer out.Close()
_, err = io.Copy(out, resp.Body) return destPath, err}La fonction filepath.Join évaluant les segments .., la fourniture d’une valeur forgée :
"../../../../Microsoft/Windows/Start Menu/Programs/Startup/ollama_helper.exe"
résout le chemin en dehors de Updates\ directement vers le dossier de démarrage actif de l’utilisateur.
La faille conjointe : contournement de la signature (CVE-2026-42248)
Section intitulée « La faille conjointe : contournement de la signature (CVE-2026-42248) »Après écriture, le binaire devait faire l’objet d’une vérification de signature numérique Authenticode. Or, sous Windows, la fonction de validation n’avait pas été finalisée et retournait systématiquement un statut de succès :
// Fonction de validation factice dans updater_windows.gofunc verifySignature(filePath string) error { // Échec de contrôle : retourne toujours nil (succès) return nil}Le programme d’installation validait ainsi l’intégrité du binaire injecté sans la moindre alerte.
3. Scénario réel d’attaque
Section intitulée « 3. Scénario réel d’attaque »Vecteur d’attaque : interposition réseau locale
Section intitulée « Vecteur d’attaque : interposition réseau locale »- Positionnement : l’adversaire compromet un routeur Wi-Fi (hôtel, espace de travail partagé) ou usurpe la résolution DNS du domaine
ollama.com. - Interception : le flux HTTP de vérification automatique émis par
ollama app.exeest intercepté. - Forge de la réponse : l’attaquant renvoie une réponse HTTP 200 comprenant l’en-tête malveillant :
HTTP/1.1 200 OKContent-Type: application/octet-streamETag: "../../../Microsoft/Windows/Start Menu/Programs/Startup/SecurityHealthSystray.exe"Content-Length: 45056<Charge utile exécutable PE malveillante>
- Dépôt sur disque : le processus Ollama dépose le fichier dans le dossier Startup de la victime.
- Persistance et exécution : au redémarrage ou à la prochaine ouverture de session, l’Explorateur Windows lance l’exécutable avec les privilèges du développeur.
4. Traces forensiques et triage sous Windows
Section intitulée « 4. Traces forensiques et triage sous Windows »Lors de l’analyse d’un poste de développement suspect, les analystes DFIR doivent examiner les artefacts suivants :
1. Inspection des dossiers de démarrage
Section intitulée « 1. Inspection des dossiers de démarrage »Vérifier l’apparition de binaires suspects dans les chemins de persistance :
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup\- Comparer l’horodatage de création avec les journaux réseau de l’application Ollama.
2. Traces Prefetch (.pf) et Shimcache
Section intitulée « 2. Traces Prefetch (.pf) et Shimcache »- Examiner les fichiers de prélecture dans
C:\Windows\Prefetch\pour confirmer le lancement du binaire déposé. Consulter notre guide forensique des fichiers Prefetch. - Interroger la base AppCompatCache (Shimcache) pour valider l’exécution historique du programme. Consulter notre dossier sur le Shimcache.
3. Journaux d’événements Windows
Section intitulée « 3. Journaux d’événements Windows »- Événement 4688 (création de processus) : filtrer les processus ayant pour parent
ollama app.exeou provenant du dossierStartup. Consulter notre guide d’analyse de lignée de processus. - Événement 7045 (création de service) : si l’attaquant a pérennisé son accès sous forme de service système. Voir notre analyse des événements 7045 et 4698.
5. Règles de détection
Section intitulée « 5. Règles de détection »title: Processus Ollama déposant un exécutable dans le dossier de démarrage Windowsid: 4f5a6b7c-8d9e-0f1a-2b3c-4d5e6f7a8b9cstatus: experimentaldescription: Détecte l'écriture d'un fichier exécutable dans les dossiers Startup par le processus Ollama pour Windows, caractéristique de l'exploitation de la CVE-2026-42249.references: - https://hermes-codex.vercel.app/fr/cve/2026/cve-2026-42249/ - https://nvd.nist.gov/vuln/detail/CVE-2026-42249author: Unité Forensique Tactique Hermes Codexdate: 2026-09-18logsource: category: file_event product: windowsdetection: selection_initiator: Image|endswith: - '\ollama app.exe' - '\ollama.exe' selection_target: TargetFilename|contains: - '\Start Menu\Programs\StartUp\' - '\Start Menu\Programs\Startup\' TargetFilename|endswith: - '.exe' - '.dll' - '.bat' - '.vbs' - '.ps1' condition: selection_initiator and selection_targetlevel: criticaltags: - attack.persistence - attack.t1547.001 - cve.2026-42249# Script de triage rapide des dossiers de mise à jour Ollama et de démarrageWrite-Host "[-] Audit du répertoire de mise à jour Ollama..." -ForegroundColor Cyan$OllamaUpdateDir = "$env:LOCALAPPDATA\Ollama\Updates"if (Test-Path $OllamaUpdateDir) { Get-ChildItem -Path $OllamaUpdateDir -Recurse | Select-Object FullName, Length, CreationTime, LastWriteTime | Format-Table -AutoSize}
Write-Host "[-] Audit du dossier Startup utilisateur..." -ForegroundColor Cyan$UserStartup = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup"Get-ChildItem -Path $UserStartup | Select-Object Name, Length, CreationTime, LastWriteTime | Format-Table -AutoSize
Write-Host "[-] Audit du dossier Startup global..." -ForegroundColor Cyan$GlobalStartup = "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"Get-ChildItem -Path $GlobalStartup | Select-Object Name, Length, CreationTime, LastWriteTime | Format-Table -AutoSize// Détection des fichiers créés par Ollama dans les répertoires de démarrageDeviceFileEvents| where InitiatingProcessFileName in~ ("ollama app.exe", "ollama.exe")| where FolderPath has @"Start Menu\Programs\Startup"| where ActionType == "FileCreated"| project TimeGenerated, DeviceName, InitiatingProcessFileName, FolderPath, FileName, SHA256| order by TimeGenerated desc6. Stratégie de remédiation et durcissement
Section intitulée « 6. Stratégie de remédiation et durcissement »Mesures correctives immédiates
Section intitulée « Mesures correctives immédiates »- Mise à jour vers Ollama 0.17.6 OU version ultérieure :
Appliquer le correctif officiel via le gestionnaire de paquets Windows :
Fenêtre de terminal winget upgrade Ollama.Ollama - Nettoyage des dossiers de démarrage :
Ouvrir
shell:startupetshell:common startuppour supprimer tout binaire non identifié apparu récemment. - Désactivation temporaire des mises à jour automatiques :
Si la mise à niveau ne peut être déployée immédiatement, bloquer les requêtes sortantes vers
ollama.com/api/updateau niveau du pare-feu.
Durcissement d’entreprise
Section intitulée « Durcissement d’entreprise »- Contrôle d’exécution d’applications (WDAC / AppLocker) : interdire l’exécution de binaires non signés depuis les répertoires accessibles en écriture par l’utilisateur (
%LOCALAPPDATA%,StartUp). - Inspection TLS et épinglage de certificats : s’assurer que les flux réseau à destination des dépôts d’outils d’IA appliquent une validation cryptographique rigoureuse.
7. Références croisées stratégiques
Section intitulée « 7. Références croisées stratégiques »8. Sources documentaires
Section intitulée « 8. Sources documentaires »- Fiche officielle NVD : détails de la CVE-2026-42249
- Dépôt officiel Ollama : notes de version d’Ollama sur GitHub
- Publication Help Net Security : Les vulnérabilités du client Windows d’Ollama permettent l’exécution de code à distance (mai 2026)
- Avis technique CERT Polska : Traversée de répertoire dans les mécanismes de mise à jour automatique des clients de bureau (2026)