flawopen.com/AI Security/cve-2026-107322-aws-databases-on-aws-psql-command-injection
CVE-2026-107322:AWS Agent 插件 psql 命令注入
CVE-2026-107322 影响 AWS databases-on-aws 插件中的可选 psql helper。输入过滤器漏掉了 psql 元命令;远程内容只有在 agent 随后将该值传给 helper 时,才可能导致主机命令执行。请升级到 1.7.1 或更高版本。[1], [2], [4]
可以把它想成一名职员检查便条里的 SQL 指令,却忘了数据库客户端还有自己的命令语言。外部内容只有在 agent 决定把它交给本地 helper 时,才会到达第二个解释器。修复会在 helper 执行前拒绝这种语法。[1], [2]
核心概念与专有名词
agent 接收的内容- AI agent 从远程或不可信来源接收的内容。AWS 公告未说明构造内容如何送达 agent。[1]
框架映射
- 本指南所述弱点的 CWE 参考: CWE-184
攻击执行流程分解
根本原因剖析 (Root Cause)
AWS 与维护者将 CVE-2026-107322 归因于 databases-on-aws 可选 psql 连接 helper 中不完整的输入过滤。修复前,校验会从工作副本中移除单引号括起的 SQL 字面量,并拒绝 SQL 语句分隔符和注释,但会留下 psql 客户端按元命令语法解释的反斜杠。修复会在处理字面量后、现有检查前拒绝这些残留反斜杠,从而补上遗漏的解析边界。[1], [2], [3]
源代码对比:漏洞与安全实现
上游补丁会在删除单引号 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"
# 精简代码片段,依据上游 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]
- ✓以无特权用户运行 agent 和 helper,使用仅具 dsql:DbConnect 权限的 IAM role 和受限数据库 role;日常不要使用 dsql:DbConnectAdmin。[1]
- ✓如有 helper 主机被不当访问的证据,按 AWS 指引轮换或撤销进程可访问的凭证,并审查数据库角色及 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