flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection
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]
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]
Mapeos de marcos
- Referencia CWE para la debilidad descrita en esta guía: CWE-184
Flujo de Ataque Paso a Paso
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
# 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"
# 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
- ✓Actualiza databases-on-aws a 1.7.1 o posterior; para checkouts fijados usa el commit 8b13a503746a4ebb0402b936645163224058bde3 o posterior.[1], [2], [3]
- ✓Hasta actualizar, desactiva el helper psql opcional y usa SQL revisado manualmente o el servidor MCP de DSQL.[1]
- ✓Al filtrar entradas que llegan a psql, contempla el lenguaje de metacomandos del cliente además de SQL.[2], [3]
- ✓Prueba que las entradas rechazadas detienen el flujo antes de iniciar psql e incluye consultas SQL válidas.[3]
- ✓Ejecuta agente y helper sin privilegios, con IAM limitado a dsql:DbConnect y un rol de base de datos acotado; evita dsql:DbConnectAdmin.[1]
- ✓Si hay indicios de acceso indebido, sigue la guía de AWS: revoca o rota las credenciales accesibles y revisa roles y asignaciones IAM-base de datos.[1], [2]
Fuentes
- AWS Security Bulletin 2026-130 — CVE-2026-107322
- Amazon Agent Plugins for AWS — GHSA-x7f2-wxc8-qpxq
- Upstream fix commit 8b13a503746a4ebb0402b936645163224058bde3
- CVE Program record — CVE-2026-107322
- Related FlawOpen analysis — AWS Security Agent MCP Git argument injection
- Related FlawOpen analysis — PostgreSQL CVE-2025-1094 and the BeyondTrust incident