关键漏洞信息 漏洞概述 CVE ID: CVE-2023-5171 CVSS 评分: 8.1/10 严重性: 高 影响的包和版本 包: @executeautomation/database-server (npm) 受影响版本: <= 1.1.0 修复版本: 无 描述 MCP Server 提供了与多种数据库(如 PostgreSQL)交互的接口,但通过 npm 包分发的 MCP Server 在实现适当的安全控制方面存在缺陷,导致可以绕过“只读”模式。这使得攻击者可以滥用并攻击受影响的数据库服务器,如 PostgreSQL,以及其他暴露额外功能的数据库服务器,可能导致服务中断和其他未授权行为。 漏洞代码 问题: 方法允许执行多个查询,即使在“只读”模式下。 示例: 利用方式 存储过程: 可以通过 SELECT 查询调用内部函数。 内部数据库管理操作: 可以通过 SELECT 查询执行内部数据库操作。 示例: - 执行长时间运行的查询,如 - 使用 MCP Server 接口执行查询以获取 PID,然后终止该查询。 影响 可用性: 攻击者可以导致服务中断。 机密性: 用户可能未经授权访问运行在服务器上的查询和潜在的数据泄露。 建议 不要仅依赖于“只读”模式。 严格限制用户只能查询特定表。 不允许将多个 SQL 查询链接在一起。 要求资源使用细粒度权限访问数据库服务器。 参考和先前工作 1. GitHub Runner MCP Server 存在命令注入漏洞。 2. iOS Simulator MCP Server 存在命令注入漏洞。 3. Linan Node.js 安全编码教程。 4. 如何在 PostgreSQL 中绕过访问控制。 5. 先前安全研究示例。