跳到內容

安全性

2025 年 2 月,LayerX Security Research 揭露了 Anthropic Claude Desktop Extensions(DXT)框架中一個嚴重的零點擊遠端程式碼執行漏洞。擴充功能在無沙箱的環境中以完整系統權限運行,充當語言模型與本地作業系統之間的執行橋梁。

許多企業安全團隊現在要求 AI 編碼工具只能在專用虛擬機、容器或一次性環境中運行——而非直接在企業端點上執行。

此 devcontainer 滿足了該要求。

+------------------------------------------------+
| 主機(企業端點) |
| |
| - 未安裝任何 AI 工具二進位檔 |
| - 沒有 AI 工具擴充功能或外掛 |
| - 僅需要 Docker |
| |
| +------------------------------------------+ |
| | Docker 容器(已隔離) | |
| | | |
| | AI 工具在此運行: | |
| | - Claude Code CLI | |
| | - Codex | |
| | | |
| | 無法存取: | |
| | x 主機檔案系統 | |
| | x 主機鑰匙圈 / 憑證儲存 | |
| | x 主機剪貼簿 | |
| | x 主機網路介面 | |
| | x 其他主機應用程式 | |
| +------------------------------------------+ |
+------------------------------------------------+

所有資料都存放在 Docker 具名磁碟區中——而非綁定掛載的主機目錄。容器內的入侵無法存取您主機上的檔案。詳見 設定 — 資料持久性 了解磁碟區詳情。

容器無法存取 macOS 鑰匙圈、Windows 認證管理員、瀏覽器設定檔或主機 SSH 代理。SSH 金鑰在啟動時透過 base64 編碼的環境變數注入,且僅存在於容器內部。

Docker 容器不與主機共享剪貼簿狀態。資料無法透過複製/貼上洩漏。

容器透過以下兩種支援的驗證模式之一與外部通訊:

  • LiteLLM 代理模式 — 透過 Docker 的 NAT 向您的 LiteLLM 代理發送 HTTPS 請求。
  • OAuth 模式 — 透過 Docker 的 NAT 直接向 Anthropic 發送 HTTPS 請求。

容器無法存取 VPN 通道、企業網路介面或主機上的其他服務。

整個環境可以在數秒內銷毀並重新建立。將容器視為可拋棄的。

Terminal window
docker compose down -v
docker compose pull && docker compose up -d

此環境以命令列介面方式運行 AI 工具。沒有桌面應用程式、沒有瀏覽器擴充功能、沒有 DXT 框架。促使採用此隔離模型的漏洞不適用於容器內的 CLI 使用方式。

docker-compose.yml 採用了多項縱深防禦措施:

  • 能力降權 — 所有 Linux 能力均被移除(cap_drop: ALL),然後僅重新加入最小集合:CHOWNDAC_OVERRIDEFOWNER(用於入口點中的磁碟區權限修正)、SETUID/SETGID(用於 sudo)、NET_RAW(用於 ping/tcpdump)和 NET_ADMIN(用於 Wireshark 和 bettercap 等封包擷取工具)。
  • 資源限制 — CPU(4 核心)、記憶體(8 GB)和 PID 數量(4096)透過 mem_limitcpuspids_limit 設定上限,以防止資源耗盡攻擊。
  • tmpfs 用於 /tmp/tmp 目錄掛載為 256 MB 的 tmpfs,將暫存檔保留在記憶體中,防止它們持久化到容器的可寫入層。
  • 預設啟用 TLS 驗證NODE_TLS_REJECT_UNAUTHORIZED 未設定,因此 Node.js 預設會驗證 TLS 憑證。需要接受自簽憑證(例如用於內部代理)的使用者可以在 .env 檔案中加入 NODE_TLS_REJECT_UNAUTHORIZED=0 來選擇啟用。
  • SSH 金鑰 umask — SSH 私鑰在 umask 077 下寫入,因此檔案永遠不會是全域可讀的——即使在建立和 chmod 呼叫之間的短暫時間內也是如此。

容器包含約 80 個預安裝的安全與滲透測試工具,用於授權測試場景。工具按類別組織:

類別工具(範例)
網路分析tshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover
網頁掃描器nikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster
密碼與身份驗證hydra, john, hashcat, medusa, ncrack
逆向工程radare2, Ghidra, gdb, binwalk, strace, ltrace
偵察subfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot
模糊測試與列舉ffuf, gobuster, SecLists
供應鏈與機密trufflehog, grype, syft, gitleaks, trivy
攻擊框架Metasploit (amd64), searchsploit (ExploitDB)

部分工具(bettercap、Metasploit)由於上游套件限制,僅在 amd64 上可用。封包擷取工具(tshark、bettercap)需要 NET_ADMIN 能力,該能力已包含在預設的 docker-compose.yml 中。

如需完整清單,請在容器內執行 claude-self-test(第 7 節會檢查所有安全工具)。

要求狀態
AI 工具未安裝在主機端點上
在隔離的 VM 或容器中運行
無法存取主機檔案共享
無剪貼簿同步
無共用憑證儲存
無 VPN 分割通道至正式環境網路
環境可拋棄
無桌面擴充功能或外掛
Linux 能力已降權(最小權限)
資源限制已強制(CPU/記憶體/PIDs)
預設啟用 TLS 憑證驗證
內部服務僅綁定 localhost
  1. 不要在主機上安裝 AI 編碼工具。 改用此容器。
  2. 不要在 docker-compose.yml 中新增綁定掛載。 具名磁碟區的設定是刻意的。
  3. 定期輪換容器內使用的 SSH 金鑰。
  4. 分享前請檢查 .env 其中包含 API 金鑰,且可能包含 SSH 私鑰。
  5. 定期更新以取得安全修補:
Terminal window
docker compose pull && docker compose up -d