![]()
一個被官方蓋章"死亡"的AI工具,每周仍有2.1萬次下載。更荒誕的是,它承諾的"只讀保護"像一扇上鎖的玻璃門——看起來安全,一推就碎。
這是Anthropic的PostgreSQL MCP服務器(Model Context Protocol,模型上下文協議),AI agent連接數據庫的官方參考實現。今年5月歸檔,7月正式棄用,npm和Docker Hub上的棄用標記像墓碑一樣醒目。但數字不會撒謊:截至評測時,它每周仍從npm拉取約21,000次,Docker Hub約1,000次。
這些下載者里,有多少知道他們裝的是個有SQL注入漏洞、且永遠不會修復的軟件?
「只讀」是個謊言
服務器的核心賣點是只讀訪問。AI agent可以查看表結構、運行SELECT查詢,但無法修改數據。Anthropic在代碼里確實做了防護:每個查詢都被包裹在BEGIN TRANSACTION READ ONLY和ROLLBACK之間。
問題出在Node.js的postgres客戶端。它允許在單次client.query()調用中提交多條用分號分隔的SQL語句。攻擊者可以在SELECT后面追加一個分號,再跟一條COMMIT——或者更直接的,用堆疊查詢(stacked query)把事務模式改成READ WRITE。
換句話說,那個"只讀"標簽是安慰劑。它讓開發者誤以為風險可控,實際上大門敞開。
諷刺的是,同期被歸檔的SQLite MCP服務器至少誠實——它干脆沒有安全護欄,用戶知道自己暴露在危險中。PostgreSQL服務器則提供了"虛假的確定性",這種設計比裸奔更危險。
極簡主義的代價
這個服務器精簡到近乎吝嗇。它只暴露1個工具和1種資源類型:query工具(執行SQL)和schema資源(查看表結構)。對比SQLite服務器的6個工具、社區替代方案的8個以上,這是評測過的最簡數據庫MCP實現。
配置同樣極簡。Claude Desktop用戶只需一行npx命令:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
Docker版本同樣簡單,把localhost換成host.docker.internal就能在macOS上跑。沒有配置標志,沒有環境變量,連接字符串里的憑據就是全部安全邊界。
這種極簡主義在Demo場景里很迷人:一行命令,agent立刻能查你的數據庫。但生產環境?沒有schema白名單,沒有表級權限,沒有操作審計。連接字符串能訪問什么,agent就能碰什么——包括那些你以為被"只讀"保護擋住的寫操作。
歸檔之后,無人收尸
5月歸檔,7月棄用,沒有CVE編號,沒有安全補丁。parent倉庫modelcontextprotocol/servers有81,600星,但這個子項目像被踢出群聊的成員,靜靜躺在存檔區。
npm的棄用標記在install時只會顯示一行小字警告。Docker Hub的標記更隱蔽。大多數開發者不會注意到,或者注意到了也以為只是"不再更新"而非"有已知漏洞"。
社區替代方案已經涌現。一些實現了真正的查詢白名單,用AST解析而非字符串匹配;一些支持行級安全策略(RLS)集成;還有的直接放棄通用SQL接口,只暴露預定義的只讀視圖。但它們都需要更多配置,不像官方工具那樣"一行命令開箱即用"。
便利性和安全性之間的張力,在這里被拉到極致。
MCP生態的縮影
PostgreSQL服務器和SQLite服務器像一對鏡像:前者有護欄但護欄是假的,后者沒護欄但至少不騙人。它們共同指向同一個問題——MCP作為AI agent與外部系統交互的協議,其參考實現的安全成熟度遠低于市場預期。
81,600星的parent倉庫是Anthropic在AI基礎設施領域影響力的證明。但star數不等于代碼質量,官方標簽不等于生產就緒。當開發者把"Anthropic官方"等同于"可以信任"時,風險就已經產生了。
那個每周2.1萬的下載數字還在跳動。它可能是CI管道的緩存,可能是教程文章的復制粘貼,也可能是某個工程師今天剛接手的"快速原型"。他們中的大多數不會讀到這篇評測,不會知道那個看似無害的只讀承諾背后藏著什么。
如果你正在使用這個服務器,或者曾在某個項目里用過——你當時有沒有驗證過那個"只讀"限制?還是像大多數人一樣,看了文檔就信了?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.