SQL 注入漏洞总结 (astro-mcp-server) 漏洞概述 漏洞名称: SQL Injection Vulnerability in astro-mcp-server CVE ID: CVE-89 (CWE-89: SQL Injection) 严重程度: High (CVSS v3.1 Score: 7.6) 漏洞描述: 在 版本 1.1.1 的 文件中存在 SQL 注入漏洞。多个 MCP 工具(如 )直接拼接用户可控参数(如 , , )到 SQLite 查询字符串中,未进行任何过滤或转义。攻击者可通过构造恶意参数读取数据库数据或修改数据库状态。 影响范围 受影响版本: 1.1.1 受影响组件: 攻击前提: 1. 攻击者能调用该 MCP 服务器工具。 2. 服务器能读取预期的 Astro ASO SQLite 数据库。 3. 受影响工具接收攻击者控制的字符串参数。 修复方案 1. 参数化查询: 使用预编译语句(Prepared Statements)和绑定参数替换字符串拼接。 2. 输入验证: 对字符串和数字参数实施严格的输入模式验证。 3. 数值限制: 验证并限制 , , , 等数值参数。 4. 回归测试: 添加测试用例,确保 SQL 元字符被当作数据处理而非可执行代码。 POC 代码 (Proof of Concept) 1. 准备测试数据库 (SQLite) 2. 启动 MCP 服务器 3. 发送恶意请求 (JSON-RPC) 4. 验证 通过 MCP Inspector 或客户端发送上述请求。 确认响应中包含注入后的数据(如 的所有记录),证明 SQL 注入成功。