FlawOpen

flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection

● CVE-2026-107322 · CVSS 7.8[1], [4] · Haute
Recherche · FlawOpen

CVE-2026-107322 : injection de commandes dans le plugin AWS pour agents

CVE-2026-107322 affectait le helper psql facultatif du plugin AWS databases-on-aws. Son filtre omettait les méta-commandes psql ; un contenu distant ne pouvait mener à des commandes sur l’hôte que si l’agent transmettait ensuite la valeur au helper. Passez à la version 1.7.1 ou ultérieure.[1], [2], [4]

Vecteur CVSSCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H[1], [4]
💡 Explication en Langage Simple (ELI5)

Un employé vérifie une note pour y repérer des instructions SQL, mais oublie que le client de base de données possède son propre langage de commandes. Un contenu externe n’atteindrait ce second interpréteur que si l’agent le remettait au helper local. Le correctif rejette cette syntaxe avant exécution.[1], [2]

Concepts Clés et Termes

Méta-commande psql
Instruction interprétée par le client interactif PostgreSQL, et non par le serveur. C’est une frontière d’analyse distincte de SQL.[2], [3]
CWE-184 : liste incomplète d’entrées interdites
Le filtre rejette certaines formes, mais en omet une autre que le composant suivant interprète spécialement.[2], [4]
Contenu ingéré par l’agent
Contenu reçu depuis une source distante ou non fiable. AWS ne précise pas comment le contenu préparé atteint l’agent.[1]
Helper local
Script psql facultatif exécuté sur l’hôte de l’agent ; les commandes système utilisent les droits du processus.[1], [3]

Correspondances de référentiels

  • Référence CWE pour la faiblesse décrite dans ce guide : CWE-184

Déroulement de l'Attaque Étape par Étape

Étape 1

Un contenu non fiable atteint l’agent

AWS indique qu’un acteur distant non authentifié peut fournir du contenu à ingérer. L’avis ne précise ni la source ni le flux ; ne présumez pas d’un chemin précis d’injection de prompt.[1], [2]

Étape 2

L’agent transmet une valeur au helper

La condition exige que l’agent appelle le helper local avec la valeur préparée. L’ingestion seule n’est pas le déclencheur documenté.[1], [3]

Étape 3

Le contrôle SQL ignore le langage de psql

Le helper filtre séparateurs et commentaires SQL, mais pas les barres restantes. psql interprète localement les méta-commandes.[2], [3]

Étape 4

Le correctif rejette la syntaxe avant exécution

Le patch vérifie les barres restantes avant les contrôles SQL existants. Passez à 1.7.1 ou ultérieur et vérifiez la version active partout.[1], [2], [3]

Analyse de Cause Racine

AWS et le mainteneur attribuent CVE-2026-107322 à un filtrage incomplet dans le helper facultatif de connexion psql de databases-on-aws. Avant le correctif, la validation supprimait les littéraux SQL entre apostrophes d’une copie de travail et rejetait les séparateurs d’instructions et les commentaires SQL, mais laissait des barres obliques inverses que le client psql interprète comme une syntaxe de méta-commandes. Le correctif rejette ces barres restantes après le traitement des littéraux et avant les contrôles existants, fermant ainsi cette frontière d’analyse oubliée.[1], [2], [3]

Code Source : Vulnérable vs Sécurisé

Le patch upstream rejette les barres obliques inverses restantes après le retrait des littéraux entre apostrophes simples, avant l’appel de psql et les autres contrôles. Cet extrait est réduit et ne constitue pas un analyseur SQL général ; le traitement initial des apostrophes présente des cas limites documentés. Pour les requêtes complexes ou non fiables, évitez le helper shell facultatif et utilisez le serveur MCP DSQL ou du SQL vérifié manuellement, comme le recommande AWS. Exécutez le processus avec le minimum de droits : cela limite l’impact sans remplacer la mise à niveau.[2], [3]

Extrait source: plugins/databases-on-aws/scripts/psql-connect.sh — extrait réduit du filtre --command

IMPLÉMENTATION VULNÉRABLE
# Extrait réduit : les contrôles axés sur SQL ne rejetaient pas la syntaxe des méta-commandes de psql.
stripped=$(echo "$COMMAND" | sed "s/'[^']*'//g")
if echo "$stripped" | grep -q ';'; then
  echo "Error: multiple SQL statements are not allowed." >&2
  exit 1
fi
if echo "$stripped" | grep -q -- '--'; then
  echo "Error: SQL comments are not allowed." >&2
  exit 1
fi
psql --command "$COMMAND"
PATCH SÉCURISÉ ET ROBUSTE
# Extrait réduit basé sur le correctif upstream de la version 1.7.1.
stripped=$(echo "$COMMAND" | sed "s/'[^']*'//g")
if echo "$stripped" | grep -q '\\'; then
  echo "Error: psql meta-commands are not allowed." >&2
  exit 1
fi
if echo "$stripped" | grep -q ';'; then
  echo "Error: multiple SQL statements are not allowed." >&2
  exit 1
fi
if echo "$stripped" | grep -q -- '--'; then
  echo "Error: SQL comments are not allowed." >&2
  exit 1
fi
psql --command "$COMMAND"

Liste de Contrôle de Sécurité pour l'Ingénierie

Sources

← AI Security Directory →