安全性
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 其他主機應用程式 | || +------------------------------------------+ |+------------------------------------------------+無主機磁碟掛載
Section titled “無主機磁碟掛載”所有資料都存放在 Docker 具名磁碟區中——而非綁定掛載的主機目錄。容器內的入侵無法存取您主機上的檔案。詳見 設定 — 資料持久性 了解磁碟區詳情。
無共用憑證儲存
Section titled “無共用憑證儲存”容器無法存取 macOS 鑰匙圈、Windows 認證管理員、瀏覽器設定檔或主機 SSH 代理。SSH 金鑰在啟動時透過 base64 編碼的環境變數注入,且僅存在於容器內部。
無剪貼簿同步
Section titled “無剪貼簿同步”Docker 容器不與主機共享剪貼簿狀態。資料無法透過複製/貼上洩漏。
容器透過以下兩種支援的驗證模式之一與外部通訊:
- LiteLLM 代理模式 — 透過 Docker 的 NAT 向您的 LiteLLM 代理發送 HTTPS 請求。
- OAuth 模式 — 透過 Docker 的 NAT 直接向 Anthropic 發送 HTTPS 請求。
容器無法存取 VPN 通道、企業網路介面或主機上的其他服務。
整個環境可以在數秒內銷毀並重新建立。將容器視為可拋棄的。
docker compose down -vdocker compose pull && docker compose up -dpodman-compose down -vpodman-compose pull && podman-compose up -d僅限 CLI 工具
Section titled “僅限 CLI 工具”此環境以命令列介面方式運行 AI 工具。沒有桌面應用程式、沒有瀏覽器擴充功能、沒有 DXT 框架。促使採用此隔離模型的漏洞不適用於容器內的 CLI 使用方式。
docker-compose.yml 採用了多項縱深防禦措施:
- 能力降權 — 所有 Linux 能力均被移除(
cap_drop: ALL),然後僅重新加入最小集合:CHOWN、DAC_OVERRIDE、FOWNER(用於入口點中的磁碟區權限修正)、SETUID/SETGID(用於 sudo)、NET_RAW(用於 ping/tcpdump)和NET_ADMIN(用於 Wireshark 和 bettercap 等封包擷取工具)。 - 資源限制 — CPU(4 核心)、記憶體(8 GB)和 PID 數量(4096)透過
mem_limit、cpus和pids_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呼叫之間的短暫時間內也是如此。
安全與滲透測試工具
Section titled “安全與滲透測試工具”容器包含約 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 節會檢查所有安全工具)。
合規性檢核表
Section titled “合規性檢核表”| 要求 | 狀態 |
|---|---|
| AI 工具未安裝在主機端點上 | 是 |
| 在隔離的 VM 或容器中運行 | 是 |
| 無法存取主機檔案共享 | 是 |
| 無剪貼簿同步 | 是 |
| 無共用憑證儲存 | 是 |
| 無 VPN 分割通道至正式環境網路 | 是 |
| 環境可拋棄 | 是 |
| 無桌面擴充功能或外掛 | 是 |
| Linux 能力已降權(最小權限) | 是 |
| 資源限制已強制(CPU/記憶體/PIDs) | 是 |
| 預設啟用 TLS 憑證驗證 | 是 |
| 內部服務僅綁定 localhost | 是 |
- 不要在主機上安裝 AI 編碼工具。 改用此容器。
- 不要在
docker-compose.yml中新增綁定掛載。 具名磁碟區的設定是刻意的。 - 定期輪換容器內使用的 SSH 金鑰。
- 分享前請檢查
.env。 其中包含 API 金鑰,且可能包含 SSH 私鑰。 - 定期更新以取得安全修補:
docker compose pull && docker compose up -dpodman-compose pull && podman-compose up -d