FlawOpen

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

● CVE-2026-107322 · CVSS 7.8[1], [4] · Alta
Investigación · FlawOpen

CVE-2026-107322: inyección de comandos en el plugin de AWS para agentes

CVE-2026-107322 afectó al helper psql opcional del plugin databases-on-aws de AWS. El filtro omitía metacomandos de psql; el contenido remoto solo podía ejecutar comandos en el host si después el agente pasaba el valor al helper. Actualiza a 1.7.1 o posterior.[1], [2], [4]

Vector CVSSCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H[1], [4]
💡 Explicación en Lenguaje Sencillo (ELI5)

Un empleado revisa una nota para buscar instrucciones SQL adicionales, pero olvida que el cliente de base de datos tiene su propio lenguaje de comandos. El contenido externo solo llegaría a ese segundo intérprete si el agente lo entregara al helper local. La corrección rechaza esa sintaxis antes de ejecutarla.[1], [2]

Conceptos Clave y Términos

Metacomando de psql
Instrucción interpretada por el cliente interactivo PostgreSQL, no por el servidor. Es una frontera de análisis distinta de SQL.[2], [3]
CWE-184: lista incompleta de entradas prohibidas
El filtro rechaza algunas formas, pero omite otra que el componente siguiente interpreta de forma especial.[2], [4]
Contenido ingerido por el agente
Contenido recibido de una fuente remota o no confiable. AWS no especifica cómo llega al agente el contenido preparado.[1]
Helper local
Script psql opcional que se ejecuta en el host del agente; los comandos del sistema usan los permisos del proceso.[1], [3]

Mapeos de marcos

  • Referencia CWE para la debilidad descrita en esta guía: CWE-184

Flujo de Ataque Paso a Paso

Paso 1

El contenido no confiable llega al agente

AWS indica que un actor remoto sin autenticar puede proporcionar contenido para que lo ingiera un agente. El aviso no identifica la fuente ni el flujo; no presupongas una ruta específica de prompt injection.[1], [2]

Paso 2

El agente pasa un valor al helper

La condición requiere que el agente invoque el helper local con el valor de comando preparado. La ingestión por sí sola no es el desencadenante documentado.[1], [3]

Paso 3

La comprobación SQL omite el lenguaje de psql

El helper filtra separadores y comentarios SQL, pero no rechaza las barras invertidas restantes. psql interpreta metacomandos localmente.[2], [3]

Paso 4

La corrección rechaza la sintaxis antes de ejecutarla

El parche comprueba las barras restantes antes de las comprobaciones SQL anteriores. Actualiza a 1.7.1 o posterior y verifica la revisión activa en cada entorno.[1], [2], [3]

Análisis de Causa Raíz

AWS y el mantenedor atribuyen CVE-2026-107322 a un filtro incompleto en el helper opcional de conexión psql de databases-on-aws. Antes de la corrección, la validación eliminaba literales SQL entre comillas simples de una copia de trabajo y rechazaba separadores de instrucciones y comentarios SQL, pero dejaba barras invertidas que el cliente psql interpreta como sintaxis de metacomandos. La corrección rechaza esas barras restantes después de tratar los literales y antes de las comprobaciones existentes, cerrando el límite de análisis que faltaba.[1], [2], [3]

Código Fuente: Vulnerable vs. Seguro

El parche upstream rechaza las barras invertidas restantes después de eliminar literales entre comillas simples y antes de invocar psql y ejecutar las demás comprobaciones. El fragmento es reducido y no constituye un parser SQL general; el tratamiento original de comillas tiene casos límite documentados. Para consultas complejas o no confiables, evita el helper shell opcional y usa el servidor MCP de DSQL o SQL revisado manualmente, como recomienda AWS. Ejecuta el proceso con privilegios mínimos: esto limita el impacto, pero no sustituye la actualización.[2], [3]

Fragmento de origen: plugins/databases-on-aws/scripts/psql-connect.sh — fragmento reducido del filtro --command

IMPLEMENTACIÓN VULNERABLE
# Extracto reducido: las comprobaciones centradas en SQL no rechazaban la sintaxis de meta-comandos 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"
PARCHE SEGURO Y ROBUSTO
# Extracto reducido basado en la corrección upstream de la versión 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"

Lista de Verificación de Seguridad para Ingeniería

Fuentes

← AI Security Directory →