CVE-2026-21708 : injection SQL PostgreSQL et exécution de code à distance via le rôle backup viewer dans Veeam Backup & Replication
HERMES THREAT SCORE ET RISQUE D'ENTREPRISE
Cible :Moteur de base de données PostgreSQL et points d'agrégation de reporting Veeam Le score Hermes évalue la CVE-2026-21708 à 99 (CRITIQUE). La couche applicative et les API se connectant à PostgreSQL avec les privilèges du superutilisateur postgres, une injection SQL exploitable par le rôle en lecture seule Backup Viewer brise instantanément le bac à sable de la base de données pour exécuter des commandes sur le système hôte, permettant la prise de contrôle intégrale du plan de reprise.
CVE-2026-21708: Veeam Backup & Replication PostgreSQL SQL Injection to RCEVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Veeam Backup & Replication 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. Métadonnées et surface affectée
Section intitulée « 1. Métadonnées et surface affectée »| Paramètre | Spécification technique | Impact opérationnel |
|---|---|---|
| Identifiant CVE | CVE-2026-21708 | Identifiant mondial de suivi |
| Avis éditeur | Veeam KB4830 (v12) & KB4831 (v13) | Bulletins de sécurité cumulatifs |
| Versions affectées | VBR 12.x (12.0.0.1402 à < 12.3.2.4465) & 13.x (< 13.0.1.2067) | Déploiements avec PostgreSQL |
| Versions corrigées | VBR Build 12.3.2.4465 & 13.0.1.2067 | Correctif cumulatif d’urgence |
| Composant vulnérable | Gestionnaire de requêtes de reporting | Concaténation de requêtes dynamiques |
| Rôle minimal requis | Backup Viewer | Rôle le plus faible du modèle RBAC Veeam |
| Compte de connexion BDD | Superutilisateur PostgreSQL (postgres) | Privilèges SQL non restreints |
| Impact | RCE et évasion de bac à sable de la BDD | Prise de contrôle absolue de l’hôte |
2. Cause racine et évasion de bac à sable de la base de données
Section intitulée « 2. Cause racine et évasion de bac à sable de la base de données »La CVE-2026-21708 résulte d’une absence de neutralisation des entrées utilisateur dans la construction de requêtes SQL dynamiques (CWE-89), aggravée par un niveau d’autorisation excessif du compte de connexion à PostgreSQL.
Cinématique d'exploitation de la CVE-2026-21708 :
[Opérateur authentifié (Rôle Backup Viewer)] │ │ 1. Transmission d'un paramètre forgé via l'API REST / UI : │ param = "'; COPY (SELECT '') TO PROGRAM 'cmd.exe /c ...'-- " ▼ [Moteur de requêtes Veeam] │ │ 2. Concaténation directe de la chaîne dans l'ordre SQL dynamique ▼ [Serveur PostgreSQL (Port TCP 5432)] │ │ 3. Exécution sous le compte superutilisateur 'postgres' ▼ [Évasion du bac à sable de la BDD (CWE-89)] │ │ 4. PostgreSQL lance un sous-processus shell via 'COPY ... FROM PROGRAM' ▼ [Exécution de commandes sur le système hôte] └── Exécution de la charge utile avec privilèges postgres / LocalSystemLe vecteur d’élévation par superutilisateur
Section intitulée « Le vecteur d’élévation par superutilisateur »Dans le modèle d’exploitation standard, un utilisateur auquel est affecté le rôle Backup Viewer est restreint à la consultation des statistiques de travaux, de l’espace de stockage et de l’historique d’exécution, sans pouvoir altérer l’infrastructure.
Cependant, comme le service applicatif interroge la base de données via un pool de connexions unique authentifié en tant que postgres, toute vulnérabilité d’injection SQL court-circuite intégralement le modèle de rôles RBAC applicatif. En refermant la requête légitime, l’attaquant injecte :
'; CREATE TABLE cmd_exec(output text);COPY cmd_exec FROM PROGRAM 'powershell -enc <Charge_Base64>';--Le service PostgreSQL disposant des capacités d’interaction avec le système d’exploitation, l’instruction COPY ... FROM PROGRAM engendre directement des processus enfants sous le compte de service de la base de données.
3. Chaîne d’attaque et exploitation par les rançongiciels
Section intitulée « 3. Chaîne d’attaque et exploitation par les rançongiciels »Dans les opérations cybercriminelles, la CVE-2026-21708 abaisse drastiquement la barrière d’accès des attaquants :
- Exploitation de comptes à faible surveillance : les assaillants n’ont plus besoin de cibler les comptes administrateurs hautement surveillés. Un compte d’audit, de helpdesk ou de supervision tiers doté des droits Backup Viewer suffit.
- Prise de contrôle instantanée : l’envoi d’une unique requête HTTP POST permet d’obtenir un shell interactif sur le serveur de sauvegarde en quelques secondes.
- Destruction du plan de sauvegarde : depuis le shell hôte, l’attaquant extrait les clés DPAPI, siphonne les identifiants administrateurs Active Directory et déclenche les commandes d’effacement des dépôts de sauvegarde.
4. Ingénierie de détection
Section intitulée « 4. Ingénierie de détection »title: Service PostgreSQL engendrant un interpréteur de commandesid: 7c12f498-8b21-4f12-9912-cve-2026-21708-pgescape-frstatus: productiondescription: Détecte le lancement d'interpréteurs de commandes engendrés directement par postgres.exe, révélateur d'une évasion par injection SQL liée à la CVE-2026-21708.references: - https://www.veeam.com/kb4830 - https://www.veeam.com/kb4831author: Hermes Codex DFIR Labdate: 2026-09-09logsource: category: process_creation product: windowsdetection: selection_parent: ParentImage|endswith: '\postgres.exe' selection_child: Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\pwsh.exe' - '\whoami.exe' - '\net.exe' - '\certutil.exe' condition: selection_parent and selection_childlevel: criticaltags: - attack.execution - attack.t1059 - attack.initial_access - attack.t1190 - cve.2026-21708// Microsoft Sentinel KQL : détection de tentatives d'injection SQL COPY FROM PROGRAM dans les journaux PostgreSQLSyslog| where ProcessName == "postgres" or Facility == "local0"| where SyslogMessage has_any ("COPY", "FROM PROGRAM", "TO PROGRAM")| summarize IncidentCount = count(), StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), SampleQuery = take_any(SyslogMessage) by HostName, ProcessName| where IncidentCount > 0# Règle Suricata : détection d'injection SQL COPY PROGRAM dirigée vers l'API ou le portail web Veeamalert http $EXTERNAL_NET any -> $VEEAM_SERVERS any ( \ msg:"HERMES DEFENSE - Tentative d'injection SQL PostgreSQL COPY PROGRAM Veeam CVE-2026-21708"; \ flow:to_server,established; \ content:"COPY"; nocase; http_uri; \ content:"PROGRAM"; nocase; distance:0; http_uri; \ classtype:web-application-attack; \ sid:102621708; rev:1; \ metadata:cve CVE-2026-21708, confidence high;)5. Durcissement défensif et remédiation
Section intitulée « 5. Durcissement défensif et remédiation »- Installer sans délai les correctifs KB4830 / KB4831 : Mettre à niveau Veeam Backup & Replication 12 vers la version 12.3.2.4465 et VBR 13 vers la version 13.0.1.2067. Le correctif remplace l’ensemble des requêtes dynamiques par des requêtes préparées paramétrées.
- Auditer et restreindre les attributions du rôle backup viewer :
Énumérer les comptes détenteurs du rôle
Backup Viewer. Révoquer les accès non nécessaires et imposer le MFA sur la console d’administration pour tous les comptes. - Isoler le port PostgreSQL sur l’interface locale :
S’assurer que le service PostgreSQL sur le port TCP 5432 écoute exclusivement sur l’adresse de bouclage
127.0.0.1et demeure inaccessible depuis les réseaux externes.