flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection
CVE-2026-107322: AWS 에이전트 플러그인의 psql 명령 주입
CVE-2026-107322는 AWS databases-on-aws 플러그인의 선택적 psql helper에 영향을 줬습니다. 입력 필터가 psql 메타 명령을 놓쳤으며, 원격 콘텐츠가 호스트 명령 실행으로 이어지려면 에이전트가 나중에 해당 값을 helper에 전달해야 했습니다. 1.7.1 이상으로 업데이트하세요.[1], [2], [4]
직원이 메모의 SQL을 확인하지만 데이터베이스 클라이언트에 별도의 명령 언어가 있다는 점을 잊은 상황과 같습니다. 외부 콘텐츠가 두 번째 해석기에 도달하려면 에이전트가 로컬 helper에 전달해야 합니다. 수정 사항은 실행 전에 해당 구문을 거부합니다.[1], [2]
핵심 개념 및 용어
에이전트 수신 콘텐츠- 원격 또는 신뢰할 수 없는 출처에서 AI 에이전트가 받는 콘텐츠입니다. AWS는 도달 경로를 설명하지 않습니다.[1]
프레임워크 매핑
- 이 가이드에서 설명하는 약점의 CWE 참조: CWE-184
단계별 공격 실행 흐름
근본 원인 분석 (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"
엔지니어링 및 시스템 보안 강화 체크리스트
- ✓databases-on-aws를 1.7.1 이상으로 업데이트하고 활성 버전을 확인하세요. 고정 checkout은 커밋 8b13a503746a4ebb0402b936645163224058bde3 이상을 사용합니다.[1], [2], [3]
- ✓업데이트 전에는 선택적 psql helper를 비활성화하고 사람이 검토한 SQL 또는 DSQL MCP server를 사용하세요.[1]
- ✓입력이 psql에 전달되면 SQL 외에 클라이언트의 메타 명령 언어도 고려하세요.[2], [3]
- ✓거부 입력이 psql 시작 전에 중단되는지 회귀 테스트하고 정상 SQL도 검사하세요.[3]
- ✓에이전트와 helper를 낮은 권한으로 실행하고 dsql:DbConnect 전용 IAM role과 제한된 DB role을 사용하세요. dsql:DbConnectAdmin은 피하세요.[1]
- ✓부적절한 접근 증거가 있으면 AWS 지침에 따라 credentials를 교체 또는 폐기하고 DB 역할과 IAM 매핑을 검토하세요.[1], [2]
출처
- 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