簡而言之:攻擊者正在透過 MCP 伺服器竊取對話歷史記錄——我們必須阻止這種情況。 OWASP 將即時注入列為首要威脅。本文分享了保護系統的實用步驟。
如果你錯過了這場大屠殺,請閱讀第一部分: 點擊此處
Trail of Bits 投下了一顆炸彈,MCP 伺服器正遭受這些攻擊的破壞:
跳行攻擊[^1] - 惡意伺服器透過工具描述注入提示。你的人工智慧甚至可能在你開始與它互動之前就被欺騙。
對話歷史記錄竊取[^2] - 伺服器可以在你不知情的情況下竊取你的完整對話歷史記錄
ANSI 終端程式碼攻擊[^3] - 轉義序列隱藏惡意指令。由於指令被隱藏,您的終端可能會顯示虛假或誤導性的訊息。
不安全的憑證儲存[^4] - API 金鑰以明文形式存儲,且擁有所有人可讀的權限。這會導致敏感資料暴露。
OWASP 大型語言模型應用十大漏洞(2025 年)[^5] 將即時注入技術列為第一名。同時,大多數安全團隊仍將人工智慧視為普通的 Web 應用。
當發生違規行為時,您的監控工具不會閃爍,API 呼叫、授權和回應時間看起來都正常。違規行為通常難以察覺,直到為時已晚。
Trail of Bits 在其雲端基礎架構研究[^6]中發現,人工智慧系統可能會產生不安全的雲端設定程式碼,從而導致意外的高成本。
他們的報告指出:
人工智慧工具有時會對憑證進行硬編碼,從而帶來安全風險
「隨機」密碼實際上是可預測的 LLM 輸出
基礎設施程式碼可以無限制地啟動昂貴的資源
攻擊者利用此技術的方式如下:
尋找連接到昂貴雲端服務的人工智慧工具
精心設計自然語言請求以最大化資源消耗
利用人工智慧盲目遵循請求的傾向來繞過傳統的安全控制
儘管日誌可能看起來很正常,但基礎設施過度使用可能會導致成本飆升
根據 OWASP 建議和記錄的安全研究,以下是在生產中有效的方法:
別傻了,永遠不要把你的產品金鑰交給 AI;使用沒有權限的沙盒帳戶。
// Unsafe: Directly embedding production credentials
const DATABASE_URL =
"postgresql://admin:password@prod-db:5432/main"
// Safe: Using a restricted account with limited access
const DATABASE_URL =
"postgresql://readonly_ai:limited@replica:5432/public_data"
如果您的 AI 需要完全管理權限,那麼是時候重新考慮您的設定了。
傳統的速率限制在人工智慧面前毫無作用。你需要基於成本的限制和硬性資源限制:
# docker-compose.yml - Actual protection
services:
mcp-tool:
image: your-tool:latest
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
environment:
- MAX_COST_PER_HOUR=10.00
- MAX_REQUESTS_PER_MINUTE=5
傳統日誌記錄完全忽略了語意攻擊。請密切注意注入攻擊的跡象:
function catchInjectionAttempts(
request: string,
): [boolean, string | null] {
// Based on OWASP LLM Top 10 indicators and CVE database<sup><a id="ref-9" href="#footnote-9">9</a></sup>
const suspiciousShit = [
/ignore.*previous.*instructions/i,
/system.*prompt.*override/i,
/execute.*as.*admin/i,
/delete.*from.*table/i,
/show.*credentials/i,
]
for (const pattern of suspiciousShit) {
if (pattern.test(request.toLowerCase())) {
return [true, `Injection attempt: ${pattern.source}`]
}
}
return [false, null]
}
NIST 人工智慧風險管理框架[^7]建議對人工智慧輸入進行語意分析。基本模式匹配可以捕獲大多數已記錄的攻擊媒介:
class PromptInjectionFilter {
private redFlags: RegExp[]
constructor() {
// Patterns from documented CVEs and research<sup><a id="ref-10" href="#footnote-10">10</a></sup><sup><a id="ref-11" href="#footnote-11">11</a></sup><sup><a id="ref-12" href="#footnote-12">12</a></sup>
this.redFlags = [
/ignore.*instructions/i,
/new.*role.*system/i,
/pretend.*you.*are/i,
/override.*safety/i,
/jailbreak.*mode/i,
]
}
isSafe(userInput: string): boolean {
for (const pattern of this.redFlags) {
if (pattern.test(userInput.toLowerCase())) {
return false
}
}
return true
}
}
傳統的速率限制會統計請求數量。而 AI 系統則需要成本感知限制:
class RateLimitExceeded extends Error {
constructor(message: string) {
super(message)
this.name = "RateLimitExceeded"
}
}
class CostAwareRateLimit {
private maxCost: number
private currentCost: number
private resetTime: number
constructor(maxCostPerHour: number = 50.0) {
this.maxCost = maxCostPerHour
this.currentCost = 0.0
this.resetTime = Date.now() + 3600000 // 1 hour in milliseconds
}
checkRequest(estimatedCost: number): void {
if (Date.now() > this.resetTime) {
this.currentCost = 0.0
this.resetTime = Date.now() + 3600000
}
if (this.currentCost + estimatedCost > this.maxCost) {
throw new RateLimitExceeded("Cost limit exceeded")
}
this.currentCost += estimatedCost
}
}
OWASP 和雲端運算巨頭一致認為,這些指標可以捕捉到人工智慧攻擊:
資源消耗異常:
計算使用量遠高於基線
不尋常的資料存取模式
跨服務 API 呼叫增加
地理請求異常
行為危險訊號:
包含系統關鍵字的請求
權限提升嘗試
存取新資料來源的工具
每次請求的成本增加
`如果(($(echo“$current_hour_cost > ($average_daily_cost * 0.3)”| bc -l)));然後
immediate_alert“偵測到成本異常”
是
最新的 MCP 規範現在要求正確實施 OAuth:
// Required: OAuth Resource Server pattern
class MCPServer {
private authConfig: OAuth2ResourceServer
constructor() {
this.authConfig = {
// Now required by spec
resourceServer: "https://your-auth-server.com",
requiredScopes: [
"mcp:tools:read",
"mcp:tools:execute",
],
tokenValidation: "RFC8707", // Resource Indicators required
}
}
async validateRequest(
request: MCPRequest,
): Promise<boolean> {
// Resource Indicators prevent token theft attacks
const token = this.extractToken(request)
return await this.validateWithResourceIndicators(token)
}
}
這解決了一些身份驗證問題,但並沒有解決工具描述注入。
OWASP 和 NIST 的安全專家不斷強調這一點:人工智慧中沒有生產信譽,就是這樣。
OWASP LLMs前 10 名 (2025 年)[^8]:
LLM01:即時注入 - 頭號威脅
LLM02:不安全的輸出處理
LLM03:訓練資料中毒
LLM04:模型拒絕服務
NIST人工智慧風險管理框架[^7]:
將人工智慧系統視為高風險元件
實施持續監控
使用縱深防禦策略
規劃新的攻擊媒介
我們正在建立基於自然語言執行命令並連接到即時基礎設施的系統。這些系統的風險眾所周知,攻擊方法也層出不窮,研究人員也不斷發現新的漏洞。
現在就解決這個問題,否則以後就等著看違規新聞吧。
如果你錯過了這場大屠殺,請閱讀第一部分: 點擊此處
原文出處:https://dev.to/forgecode/mcp-security-is-broken-heres-how-to-fix-it-31fl