事件经过
在DBHub < 0.22.6中,在execute_sql工具上设置readonly=true并不会使连接变为只读:设置PostgreSQL default_transaction_read_only和SQLite readOnly模式的代码被一个从未填充的配置值门控,因此仅剩关键字分类器。特权角色可以使用带副作用的SELECT写入任意文件(lo_export)、读取任意主机文件(pg_read_file),并实现RCE(dblink + COPY ... TO PROGRAM)。HTTP传输未经认证且默认绑定0.0.0.0。已在0.22.6中修复。
影响分析
防御者依赖的AI代理数据库只读隔离承诺被静默破坏,加上未经认证的全接口HTTP传输,任何网络调用者都可以通过/mcp提升为主机文件读写和数据库服务器上的命令执行,而该数据库服务器支撑着AI代理的数据访问。
攻击途径
未经认证的SQL到MCP端点;带副作用的SELECT(或dblink/COPY TO PROGRAM链)绕过只读分类器,写入文件、读取主机文件或在数据库服务器上运行命令。
受影响系统
DBHub数据库MCP服务器 < 0.22.6
缓解措施
升级到DBHub 0.22.6+;限制MCP HTTP传输的网络暴露;使用非特权数据库角色。