FlawOpen

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

● CVE-2026-107322 · CVSS 7.8[1], [4] · Alta
Pesquisa · FlawOpen

CVE-2026-107322: injeção de comandos no plugin AWS para agentes

A CVE-2026-107322 afetou o helper psql opcional do plugin databases-on-aws da AWS. O filtro ignorava meta-comandos do psql; conteúdo remoto só poderia levar à execução de comandos no host se o agente depois passasse o valor ao helper. Atualize para 1.7.1 ou posterior.[1], [2], [4]

Vetor CVSSCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H[1], [4]
💡 Explicação em Linguagem Simples (ELI5)

Um atendente verifica uma nota em busca de instruções SQL extras, mas esquece que o cliente do banco tem sua própria linguagem de comandos. O conteúdo externo só chegaria a esse segundo intérprete se o agente o entregasse ao helper local. A correção rejeita essa sintaxe antes da execução.[1], [2]

Conceitos Centrais e Termos

Meta-comando psql
Instrução interpretada pelo cliente interativo PostgreSQL, não pelo servidor do banco. É uma fronteira de análise distinta do SQL.[2], [3]
CWE-184: lista incompleta de entradas proibidas
O filtro rejeita algumas formas proibidas, mas omite outra que o componente seguinte interpreta de forma especial.[2], [4]
Conteúdo ingerido pelo agente
Conteúdo recebido de fonte remota ou não confiável. A AWS não especifica como o conteúdo preparado chega ao agente.[1]
Helper local
Script psql opcional executado no host do agente; comandos do sistema usam as permissões desse processo.[1], [3]

Mapeamentos de frameworks

  • Referência CWE para a fraqueza descrita neste guia: CWE-184

Fluxo de Ataque Passo a Paso

Passo 1

Conteúdo não confiável chega ao agente

A AWS informa que um ator remoto não autenticado pode fornecer conteúdo para ingestão. O aviso não identifica a fonte nem o fluxo; não presuma uma rota específica de prompt injection.[1], [2]

Passo 2

O agente passa um valor ao helper

A condição exige que o agente invoque o helper local com o valor de comando preparado. A ingestão isolada não é o gatilho documentado.[1], [3]

Passo 3

A verificação SQL deixa passar a linguagem do psql

O helper filtra separadores e comentários SQL, mas não rejeita barras invertidas restantes. O psql interpreta meta-comandos localmente.[2], [3]

Passo 4

A correção rejeita a sintaxe antes da execução

O patch verifica as barras restantes antes das verificações SQL anteriores. Atualize para 1.7.1 ou posterior e confirme a revisão ativa em cada ambiente.[1], [2], [3]

Análise de Causa Raiz

A AWS e o mantenedor identificam um filtro de entrada incompleto no helper opcional de conexão psql do databases-on-aws. Antes da correção, a validação removia literais SQL entre aspas simples de uma cópia de trabalho e rejeitava separadores de instruções e comentários SQL, mas deixava barras invertidas que o cliente psql interpreta como sintaxe de meta-comandos. A correção rejeita as barras invertidas restantes após tratar os literais e antes das verificações existentes, fechando essa fronteira de análise não coberta.[1], [2], [3]

Código-Fonte: Vulnerável vs. Seguro

O patch upstream rejeita barras invertidas restantes após remover literais entre aspas simples, antes de chamar psql e das demais verificações. O trecho é reduzido e não é um parser SQL geral; o tratamento original de aspas tem casos extremos documentados. Para consultas não confiáveis ou complexas, evite o helper shell opcional e use o servidor MCP DSQL ou SQL revisado manualmente, como recomenda a AWS. Execute o processo com privilégios mínimos: isso limita o impacto, mas não substitui a atualização.[2], [3]

Trecho de origem: plugins/databases-on-aws/scripts/psql-connect.sh — trecho reduzido do filtro --command

IMPLEMENTAÇÃO VULNERÁVEL
# Trecho reduzido: as verificações focadas em SQL não rejeitavam a sintaxe de meta-comandos do 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 SEGURO E ROBUSTO
# Trecho reduzido baseado na correção upstream da versão 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 Verificação de Segurança para Engenharia

Fontes

← AI Security Directory →