FlawOpen

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

● CVE-2026-107322 · CVSS 7.8[1], [4] · 높음
보안 연구 · FlawOpen

CVE-2026-107322: AWS 에이전트 플러그인의 psql 명령 주입

CVE-2026-107322는 AWS databases-on-aws 플러그인의 선택적 psql helper에 영향을 줬습니다. 입력 필터가 psql 메타 명령을 놓쳤으며, 원격 콘텐츠가 호스트 명령 실행으로 이어지려면 에이전트가 나중에 해당 값을 helper에 전달해야 했습니다. 1.7.1 이상으로 업데이트하세요.[1], [2], [4]

CVSS 벡터CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H[1], [4]
💡 알기 쉬운 설명 (ELI5)

직원이 메모의 SQL을 확인하지만 데이터베이스 클라이언트에 별도의 명령 언어가 있다는 점을 잊은 상황과 같습니다. 외부 콘텐츠가 두 번째 해석기에 도달하려면 에이전트가 로컬 helper에 전달해야 합니다. 수정 사항은 실행 전에 해당 구문을 거부합니다.[1], [2]

핵심 개념 및 용어

psql 메타 명령
데이터베이스 서버가 아니라 PostgreSQL 대화형 클라이언트가 해석하는 명령입니다. SQL과 별개의 파싱 경계입니다.[2], [3]
CWE-184: 불완전한 금지 입력 목록
필터가 일부 입력은 거부하지만 다음 구성 요소가 특별하게 해석하는 다른 형식을 놓칩니다.[2], [4]
에이전트 수신 콘텐츠
원격 또는 신뢰할 수 없는 출처에서 AI 에이전트가 받는 콘텐츠입니다. AWS는 도달 경로를 설명하지 않습니다.[1]
로컬 helper
에이전트와 같은 호스트에서 실행되는 선택적 psql 스크립트입니다. OS 명령은 helper 프로세스 권한으로 실행됩니다.[1], [3]

프레임워크 매핑

  • 이 가이드에서 설명하는 약점의 CWE 참조: CWE-184

단계별 공격 실행 흐름

단계 1

신뢰할 수 없는 콘텐츠가 에이전트에 도달

AWS에 따르면 인증되지 않은 원격 행위자가 에이전트가 받을 콘텐츠를 제공할 수 있습니다. 공지는 출처나 전달 경로를 밝히지 않으므로 prompt injection 경로를 단정하지 마세요.[1], [2]

단계 2

에이전트가 선택적 helper에 값을 전달

취약 조건은 에이전트가 구성된 값으로 로컬 helper를 호출해야 성립합니다. 콘텐츠 수신만으로 실행되지는 않습니다.[1], [3]

단계 3

SQL 검사가 psql 명령 언어를 놓침

helper는 구분자와 SQL 주석을 필터링하지만 남은 역슬래시는 거부하지 않았습니다. psql은 메타 명령을 로컬에서 해석합니다.[2], [3]

단계 4

helper가 실행 전 구문을 거부

업스트림 수정은 기존 SQL 검사 전에 남은 역슬래시를 검사합니다. 1.7.1 이상으로 업데이트하고 환경마다 버전을 확인하세요.[1], [2], [3]

근본 원인 분석 (Root Cause)

AWS와 유지 관리자는 CVE-2026-107322의 원인을 databases-on-aws 선택적 psql 연결 helper의 불완전한 입력 필터로 설명합니다. 수정 전 검증 단계는 작업 복사본에서 작은따옴표로 묶인 SQL 리터럴을 제거하고 SQL 문 구분자와 주석을 거부했지만, psql 클라이언트가 메타 명령 구문으로 해석하는 역슬래시는 남겼습니다. 수정은 리터럴 처리 후 기존 검사 전에 남은 역슬래시를 거부해 빠졌던 파서 경계를 닫습니다.[1], [2], [3]

소스 코드 비교: 취약한 구현 vs 보안 패치

업스트림 패치는 작은따옴표 SQL 리터럴을 제거한 뒤, psql 호출과 기존 검사 전에 남은 역슬래시를 거부합니다. 축약된 예시이며 일반 SQL 파서는 아닙니다. 기존 따옴표 처리에는 문서화된 경계 사례가 있습니다. 복잡하거나 신뢰할 수 없는 쿼리에는 AWS 권고대로 선택적 shell helper 대신 DSQL MCP server 또는 사람이 검토한 SQL을 사용하세요. 최소 권한으로 실행하면 영향을 줄일 수 있지만 업데이트를 대신하지는 않습니다.[2], [3]

소스 코드 발췌: plugins/databases-on-aws/scripts/psql-connect.sh — --command 필터의 축약 예시

취약한 구현
# 축약된 발췌: SQL 중심 검사는 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"
보안 강화 패치
# upstream 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"

엔지니어링 및 시스템 보안 강화 체크리스트

출처

← AI Security Directory →