AWS 于 9 月 4 日 13:00 PDT — 20:00 UTC 发布安全通报 2026-101,涉及 awslabs.postgres-mcp-server 中的 CVE-2026-85787。通报称:SQL 验证组件中存在“不完整的禁用输入列表……可能允许未经身份验证的行为者,通过将精心构造的 SQL 放入已认证用户与 MCP server 交互时提交的内容中,修改超出只读范围的数据。”
究竟哪里出错了
出问题的不是数据库,也不是模型。该 server 的卖点是将自然语言转换为针对 Aurora 实例的 SQL,写入操作则通过可选的 --allow_write_query 标志加以控制。只读功能是通过一个禁止字符串列表实现的,而这个列表并不完整。GitHub 将其归类为 CWE-184。CVSS v4.0 向量为 VC:N/VI:H——机密性未受影响,完整性影响高——评分 7.1,CVSS v3.1 评分为 6.5。
攻击者是谁
“未经身份验证的行为者”听起来像是在访问一个暴露的端点。但向量显示并非如此:v4.0 中为 UI:P,v3.1 中为 UI:R。之所以说攻击者未经身份验证,是因为他们只是把文本放到模型会读取的某个位置;真正提交生成的 SQL 的,是已认证用户自己的 agent。这是一种间接提示注入,载荷是一次数据库写入,并被作为 CVE 收录——这是这类形态首次之一被归类为产品漏洞,而不是研究发现。
现有表述哪里说错了
“在 1.1.7 之前”暗示这是一个新补丁。1.1.7 已于 6 月 25 日上传至 PyPI,比通报早了 71 天,而当前版本是 1.2.0。凡是按照 README 自带的安装示例操作、且这些示例并未固定版本的人,数月前就已被带离问题版本,却并不知道存在问题;凡是锁定在更旧版本上的人,已经暴露了十周,却没有任何公开通告可供应对。AWS 在同一天还发布了第二个 MCP-server CVE——dynamodb-mcp-server 中的 CVE-2026-85654,CVSS 7.8;在该漏洞中,数据模型文件里的一个精心构造的表名,会在之后运行 cdk deploy 的主机上变成代码。
结构性问题
在一个其全部目的都是从不受信任的自然语言生成 SQL 的组件中,把安全属性实现为字符串黑名单,本身就说明了应当在数据库中而不是在解析器中强制权限。AWS 自己的临时缓解建议也正是回到这一点。
