<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷]]></title><description><![CDATA[<h1>DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷</h1>
<p dir="auto">先講一個真實發生的事。有個人的 DeepSeek 帳號一覺醒來，額度被人盜刷了，消耗紀錄停在凌晨兩點。那時候電腦上沒跑任何任務，他也從來沒在哪個對話裡用過那把 key。事後查才發現，他用的工具是 DeepSeek Harness——現在最火的 AI agent 執行框架。</p>
<p dir="auto">GitHub 上線一天 star 就破 7 萬。然後這個框架在<strong>短短 11 天被挖出 5 個漏洞</strong>，開源當天就爆 4 個，其中兩個等級是「嚴重」。8 月 24 號又爆第五個，等級直接拉滿到「極危」，<strong>CVSS 9.8</strong>，全框架最高。最誇張的是第五個：攻擊者<strong>完全不用碰 AI，也不用你的金鑰</strong>，只要一條公開的指令碼，就能透過 DSH 在你電腦上執行任意命令。</p>
<p dir="auto">這篇把整件事拆開講：Harness 為什麼火、它其實有認真做安全、那 5 個洞是怎麼回事、騰訊測了 14560 次得出什麼結論，還有怎麼讓自己的電腦不中招。</p>
<h2>Harness 是什麼，為什麼這麼火</h2>
<p dir="auto">你在網頁裡跟 DeepSeek 聊天，那個只能回你文字的 AI 叫 Chatbot——你問它答，除此之外什麼也幹不了。套上 Harness 就不一樣了。Harness 是一堆介面和功能的集合，讓 AI <strong>能想、能說、還能動手</strong>：讀電腦上的檔案、改程式碼、在命令列執行指令、呼叫外部工具。這種能自己動手操作電腦的 AI 就叫 agent。</p>
<p dir="auto">DeepSeek 官方給了一個公式：<strong>agent = model + harness</strong>。model 是語言模型，負責理解你說的話、做決策、生成回覆；harness 負責把模型決策變成實際操作。白話講就是<strong>模型決定做什麼，harness 負責執行</strong>。</p>
<p dir="auto">為什麼火？因為<strong>一切皆是外掛</strong>。模型是外掛、工具是外掛、沙箱是外掛、連網頁介面本身也是外掛，甚至決定 AI 下一步幹嘛的主迴圈都是外掛。不滿意官方的沙箱？換一個。不滿意介面？換一個。理論上整個都能抽掉重寫。</p>
<p dir="auto">上手也簡單：裝好 Node.js，一條指令，瀏覽器自動開到本機 3080 埠，介面就出來了。首次用填個 DeepSeek API key、選個工作區（你指定給 AI 操作的資料夾，AI 只能在那裡面活動，沒選之前聊天框是鎖著的）就能跑。介面還有四種模式：標準、PTC（讓模型寫段程式把很多工具操作合併成一次跑，省 token）、機械（只有命令列＋檔案編輯，跑分測試用）、創造（AI 執行中當場給自己寫新工具載入用）。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/e206e821-a69e-4088-a1f0-740ae77ad848.png" alt="agent = model + harness，而且一切都是可替換的外掛" class=" img-fluid img-markdown" /></p>
<h2>它其實有認真做安全——但這是前提</h2>
<p dir="auto">同類產品裡，DeepSeek Harness 的安全設計算是認真做的。三件事先講，因為後面那些洞就是繞過它們：</p>
<p dir="auto"><strong>第一，append-only 軌跡日誌。</strong> 你跟 AI 的每一輪互動——你發了什麼、模型看到什麼、做了什麼推理、呼叫了哪個工具、工具返回了什麼——全部寫進一份日誌，而且<strong>只能追加、不能修改或刪除</strong>。只要模型看過的內容就一定留紀錄，出了事可以像放錄影一樣全程回放，還能從任意位置建立分支重跑。其他 agent 出事只能靠猜或從少量上下文翻資訊，這個能直接回放，設計確實不錯。</p>
<p dir="auto"><strong>第二，三層沙箱。</strong> 沙箱是隔離區域，程式在裡面執行、但能訪問的檔案和資源受限。三層分別是「只讀」（AI 只能看不能改）、「工作區可寫」（AI 能且只能改你指定的資料夾，預設）、「完全放開」（AI 能碰全電腦所有檔案，切這層要二次確認）。底層按系統給：Linux 用 bubblewrap＋Landlock、macOS 用 Seatbelt、Windows 用受限令牌，都是系統自帶的隔離機制，還會如實上報隔離完整不完整。</p>
<p dir="auto"><strong>第三，審批機制（fail-close）。</strong> 高風險操作會彈卡片讓你確認。設計上叫「故障就關門」：審批服務出錯或沒人回應，一律算拒絕，絕不放行。</p>
<p dir="auto">看完這三個，你大概覺得「那挺安全啊？」——答案在開源當天就出來了。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/c0d764c4-b0a6-405b-b6d8-591019a0714b.png" alt="三層沙箱：AI 能碰到什麼" class=" img-fluid img-markdown" /></p>
<h2>開源當天就爆的 4 個洞</h2>
<p dir="auto">一位獨立安全研究員發布審核報告，當天就給了 4 個漏洞，奇安信也在當天全部收錄驗證。前兩個高危、後兩個嚴重（嚴重是等級表最頂）。研究者每個洞都給了<strong>能直接跑的 POC</strong>，連同完整審核報告一起公開。</p>
<p dir="auto"><strong>漏洞一：配置載入任意程式碼執行。</strong> Harness 的設定檔是 YAML 格式，而 YAML 支援一種特殊標籤——<code>!!js</code>，解析器會把這個值當成一段 JavaScript，在載入設定時<strong>直接執行</strong>。DSH 一啟動載入設定那一刻，程式碼就跑出來了──<strong>早在沙箱和審批都還沒初始化之前</strong>，什麼防護都不會起作用。你從網上抄一份別人分享的設定直接載入，等於在啟動流程裡執行了別人寫的程式碼，當然也可能是惡意碼。</p>
<p dir="auto"><strong>漏洞二：只讀模式能讀全盤檔案。</strong> 很多人處理不可信專案會切只讀，覺得「只讀就安全了」。實測：讓 AI 讀工作區外面的金鑰檔案，它<strong>成功讀到了</strong>；但讓它寫檔案會被攔截、報權限拒絕。也就是說<strong>只讀模式只攔截寫入，不攔截讀取</strong>。你的 SSH 私鑰、存密碼的環境變數、工作區外所有檔案，AI 其實都能讀，讀到之後還能被發到伺服器。只讀模式根本不限制「看」的權限。</p>
<p dir="auto"><strong>漏洞三：VM 沙箱逃逸。</strong> 從這個開始性質就變了，前面兩個還是單點問題。Harness 的外掛程式是跑在 Node.js 自帶的 vm 模組裡——不是裝完整作業系統那種虛擬機，是在當前程式內部畫一塊隔離區，讓不可信程式碼在裡面跑、碰不到外面。設計上外掛不能直接訪問主電腦，只能透過指定的介面呼叫服務。問題出在<strong>動態載入的外掛</strong>：它執行時能直接摸到一個不該暴露給它的東西——<code>execute agent context</code> 上下文物件，裡面存著宿主程式執行的各種服務引用和狀態。這個物件沒經過沙箱、沒被檢查就直接給了外掛。結果？評審作者預先在宿主機設好的機密字串，被外掛直接讀出來，輸出 <code>host secret leaked</code>。<strong>外掛整個繞過了沙箱，直接拿到宿主內部物件。</strong></p>
<p dir="auto"><strong>漏洞四：鏈式沙箱逃逸→遠端命令執行。</strong> 這個不是新洞，是把前面幾個串起來，讓沙箱裡的外掛<strong>直接在主機上執行命令</strong>。前提是 Harness 的 AI 可以現場寫一段程式碼、註冊成臨時外掛馬上執行（官方賣點，介面叫 Cordis Define / Cordis Run）。外掛在 vm 沙箱裡啟動，但就像漏洞三，它摸得到那個真實上下文物件，裡面有全部主機服務。外掛從上下文裡取出一個叫 <code>subprocess</code> 的服務（主機上負責啟動系統程序的），呼叫它的 spawn 方法，命令內容由外掛決定，於是<strong>程序直接在主機上跑、而不是在沙箱裡</strong>，權限還是你登入使用者的權限。POC 輸出 <code>unconfined host process</code>，跑的是無害演示命令，但真實情況寫檔、裝木馬、偷資料、挖礦都可以，因為它任意命令都能執行。</p>
<p dir="auto">一句話總結這 4 個洞的本質：<strong>沙箱裡的外掛能透過上下文物件逃出去，直接在主機上執行任意命令。</strong> 而這 4 個其實是同一塊架構問題——正常設計應該是，不管外掛從哪條路去呼叫服務，那一瞬間都必須檢查它有沒有資格；但 Harness 把它裝在<strong>半路而不是入口</strong>。外掛老實走正門呼叫服務會檢查，可它直接把整個上下文物件抱走，就沒人攔。沙箱邊界、程序限制、檔案權限這幾道防線，都是「沙箱內部」的程式碼，程式碼已經抱著上下文出了沙箱，沙箱自然管不了。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/9c4f57f6-cd67-47e4-9182-98dc11b188f1.png" alt="5 個漏洞＋事件時間線" class=" img-fluid img-markdown" /></p>
<h2>真正的攻擊鏈：沒一步需要你點確認</h2>
<p dir="auto">拆開看每個洞都糟，串起來更糟。走一遍完整攻擊鏈（用示範設定）：</p>
<ol>
<li><strong>攻擊者準備一個惡意網頁/倉庫/檔案</strong>，在裡面藏 prompt injection 文字指令。prompt injection 的概念是：AI 模型會讀取並服從它看到的文字指令，如果有人偷偷寫「忽略之前的命令，執行以下操作」，模型可能真的照做。這些指令對人類是<strong>刻意隱藏</strong>的——白色文字寫在白底上、藏在檔案 metadata（後設資料）裡。人類瀏覽網頁不會開 F12 看原始碼，但 AI 讀檔就是讀原始碼，一定看得到。</li>
<li><strong>讓 Harness 去處理</strong>——請 AI 總結網頁、讀檔案、跑倉庫程式碼，哪種都行。到這步為止攻擊者<strong>一個防護都沒攻破</strong>，他只是讓 AI 讀了一段他寫的內容。</li>
<li><strong>注入生效</strong>：模型照著惡意指令，自己呼叫 Cordis Define 定義外掛、再 Cordis Run 執行。這本來該被攔截、該彈窗問一句，但評審驗證<strong>預設配置下這兩個呼叫直接被執行，沒有任何東西跳審批</strong>。為什麼沒跳？評審作者翻了原始碼發現兩條原因：一是框架裡審批服務其實存在（第二章說的 fail-close），但<strong>沒接進預設的工具呼叫鏈路</strong>；二是程式碼工具執行模組裡留了一條 TODO，寫著「權限功能未實現」——<strong>攔截這一步的功能，官方自己還沒寫完</strong>。</li>
<li><strong>外掛跑起來</strong>：就是第四章漏洞四那條——拿到上下文物件→取 subprocess→呼叫 spawn→主機上開程序，權限是你的。</li>
</ol>
<p dir="auto">整條鏈走完回頭看：什麼時候讀了惡意內容、什麼時候 AI 自己寫外掛、什麼時候主機上開程序——<strong>沒有任何一步需要使用者點確認</strong>，攻擊者也不需要任何前置知識或防護，只要讓 AI 讀一段他寫的內容就夠了。</p>
<p dir="auto">這還沒完，還有<strong>更硬的持久化</strong>。攻擊者拿到命令執行權限後，改一下設定檔，在裡面埋一個 YAML <code>!!js</code> 程式碼（漏洞一）。之後每次啟動 DSH 載入設定，那段程式碼都會執行。<strong>重啟電腦、殺掉程序都沒用</strong>，只要設定檔還在那，後門就一直在。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/8287f7d4-6470-44b4-901e-a181d44f7776.png" alt="完整攻擊鏈：沒一步需要你點確認" class=" img-fluid img-markdown" /></p>
<h2>第五個洞：QVD-2026-57410，CVSS 9.8</h2>
<p dir="auto">前面 4 個洞都是「先把 AI 帶偏，才能借 AI 的手搞事」。第五個<strong>完全不碰 AI、不用你的金鑰</strong>，攻擊面是 DSH 的<strong>管理入口</strong>（你在瀏覽器用的操作介面，底層走的那套東西，一共暴露 60 多個功能，其中一批是高權限、正常只有框架自己能呼叫）。</p>
<p dir="auto">按設計，這套介面只接受<strong>本機</strong>發來的請求，外網來的直接拒絕。「應該挺安全吧？」——關鍵在框架<strong>怎麼判斷請求是不是來自本機</strong>：它看的是 HTTP 請求裡的 <code>Host</code> 標頭，<code>Host == localhost</code> 就判定是本機請求。問題是 <code>Host</code> 這欄<strong>客戶端可以隨意改</strong>。所以攻擊者從外網發請求、把 <code>Host</code> 改成 <code>localhost</code>，檢查就通過了。<strong>這道閘口一偽造，整個本機檢查全失效</strong>，而且完全不需要帳號、密碼、令牌——官方文件自己寫「加密與認證不在第一版時間範圍內」，第一版的威脅模型只考慮惡意網頁而已。</p>
<p dir="auto">利用鏈三步：第一步，註冊一個<strong>假的模型供應商</strong>，服務地址指向攻擊者自己的伺服器；第二步，觸發一次新對話，讓 DSH 去連這個假模型；第三步，攻擊者用假模型身分返回一串工具呼叫指令，建立對話後下發任務——任務內容是執行一條命令，命令列工具就在你機器上執行，權限是你本人的。<strong>全程攻擊者沒用你的 DeepSeek API key</strong>，他控制的是 DSH 呼叫哪個模型、執行什麼指令。</p>
<p dir="auto">這洞的前提是<strong>管理介面被暴露出去</strong>，最典型兩種：一種是在雲端伺服器部署 DSH 還做 Docker 埠對映，把 3080 直接暴露到公網；另一種是掛反代、套域名，發布整套管理介面。這兩類都是「沒認證的後台直接掛公網」。但就算沒公網、只監聽 127.0.0.1:3080，<strong>同一台電腦上任何能發 HTTP 請求的程序</strong>（不明軟體、潛伏木馬、瀏覽器被誘導裝的惡意腳本）都一樣能利用——只監聽本機擋得住外部，擋不住本機的惡意程式。</p>
<p dir="auto">更糟的是<strong>這個漏洞已經武器化</strong>。有個現成開源利用腳本叫 DSH2Shell，一條指令完成完整攻擊，自帶假模型伺服器、不用準備真模型，還有批次掃描模式能自動搜全網暴露在漏洞下的 DSH 服務。攻擊者連原理都不用懂，下載腳本就能用。</p>
<p dir="auto">看時間線更心寒：8 月 14 號就已經有人在 GitHub 公開貼了一份稽核，把管理介面沒認證的問題講完整、連修復建議都寫好。當時專案還沒開、沒有私下的漏洞通報管道，研究者只能公開貼，<strong>這份報告就一直掛著沒人修</strong>。8 月 20 號 DSH2Shell 上線，漏洞工具化。8 月 24 號奇安信正式定級極危 9.8。<strong>從問題被公開寫出來到正式定級，隔了整整 10 天，沒人管。</strong></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/b074ba11-4424-4c88-8a40-49b61dab6a7a.png" alt="GitHub Discussion #853 — Security: unauthenticated local/remote code execution via the dsh web UI control plane" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/4c2fc1f9-4506-48dc-a0fd-47da00c6b7aa.png" alt="緊急安全預警｜DeepSeek Harness 曝未授權遠端程式碼執行漏洞，CVSS 9.8（CN-SEC 中文網轉載奇安信公告）" class=" img-fluid img-markdown" /></p>
<h2>騰訊朱雀測了 14560 次，得出什麼</h2>
<p dir="auto">前面都是程式漏洞——改改程式碼就修得掉。但還有<strong>一類比漏洞更棘手、沒有任何補丁能徹底修復</strong>的風險：prompt injection。騰訊朱雀實驗室拿這套框架做安全測評，一共跑 14560 次真實測試，三組資料很值得看。</p>
<p dir="auto"><strong>第一組：惡意指令寫在哪，成功率差很多。</strong> 同一段注入指令，直接寫在普通文字裡（檔案正文、網頁文章）讓 AI 讀，<strong>成功率 0</strong>，全部被防住。但換幾個地方藏——藏在 PDF 的 metadata（作者、建立時間這種隱藏資料，人看檔案看不到但 AI 讀檔會讀到）、藏在表格儲存格中間、或用<strong>看不見的 Unicode 零寬字元</strong>寫出來（人眼看是空檔案，AI 讀得出來）——成功率從 0 飆到 <strong>25.5%</strong>（455 次裡成 116 次）。測評報告原話：「<strong>只測純文字會漏掉真實的攻擊行為。</strong>」你以為測過的注入沒事，其實攻擊換個地方藏可能又進來了。</p>
<p dir="auto"><strong>第二組：AI 會被騙到什麼程度。</strong> 分兩種後果。第一種是「說出來」——測評方在 AI 看得見的地方埋一串假的機密（長得像 API 金鑰的），注入騙 AI 讓它吐出來，出現就等於秘密洩漏，<strong>成功率 35.7%</strong>。第二種是「做出來」——注入誘導 AI 去呼叫敏感工具，測評方準備 8 個模擬敏感操作當靶子（都是假的），AI 只要呼叫了就證明能被誘導動手，這<strong>成功率只有 2.5%</strong>。關鍵結論：<strong>被忽悠把秘密說出口容易得多，真的去動手難得多</strong>。但 2.5% 也不是安全——2000 次任務按這比例就約 50 次中招，攻擊者跑千次萬次成本幾乎為零。</p>
<p dir="auto"><strong>第三組：整體危險程度。</strong> 前兩組都是「最隱蔽的藏法＋最要害的操作」，只看會覺得這框架太危險。所以朱雀把<strong>所有入口、所有藏法、所有攻擊方式</strong>全測一遍，14000 多次，得出整體成功率 <strong>5.6%</strong>（用規則判定）／<strong>5.3%</strong>（換別家 AI 大模型做語意判定），兩個數字基本一致，結果可信。也就是說 100 次攻擊裡有 5-6 次完全成功，其實已經不少了。</p>
<p dir="auto"><strong>最扎心的結論：程式漏洞能修，prompt injection 修不掉。</strong> 它是語言模型本身的特性——模型的任務就是讀取並服從文字指令，這機制沒法用補丁關掉（關掉它就不會幹活了）。所以這類風險目前沒有徹底修復的那一天，<strong>只能關注 AI 讀什麼，從源頭降低機率</strong>。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/36c365be-4a0e-486e-9fd8-ea0f7b9458ef.png" alt="騰訊朱雀 14560 次實測：注入藏哪、成功率差很大" class=" img-fluid img-markdown" /></p>
<h2>怎麼防：記住這五步 + 日誌告警</h2>
<p dir="auto">先看出廠預設：新對話預設權限是「工作區可寫」，AI 只能改你指定的專案夾、其他地方只能看不能改；Web 服務也只監聽本機、其他裝置連不進。但第五章那個洞也提醒了——只監聽本機擋的是區域網其他裝置，<strong>擋不住同一台電腦上的其他程式</strong>，所以預設值是個好的起點、但不是絕對安全，後面幾步最好跟著做。</p>
<p dir="auto"><strong>第一步：管好管理埠（第五洞的防禦）。</strong> 預設只監聽 127.0.0.1:3080，外網根本連不進，第五洞的遠端打法走不通。但有兩種常用操作會親手把它交出去：雲端部署＋Docker 映射 3080 到公網；掛反代＋綁域名。這兩種都等於<strong>沒認證的後台直接掛公網，等於裸奔</strong>。所以：<strong>不要把 3080 映射到公網，也不要掛反向代理</strong>。真需要遠端存取，走 SSH 隧道，在自己電腦上發加密連線、把遠端 3080 接回本地使用，埠都不要暴露。至於同一台電腦上的其他惡意程式——介面沒認證是框架自己的設計問題，設定層面沒有開關能關，能做的就是<strong>別亂裝不明的東西</strong>（第八章外掛稽核會展開）。</p>
<p dir="auto"><strong>第二步：定好權限檔位。</strong> 三檔：只讀／工作區可寫／完全放開。處理不可信的東西——從網路下載的陌生倉庫、外部檔案——<strong>先切只讀</strong>（最新版在對話裡敲 <code>/permission</code> 就能切，切換後沙箱和審批策略一併切換）。但要記住：<strong>只讀只攔寫入、不攔讀取</strong>，AI 還是能讀你機器上的檔，攻擊者照樣能讀金鑰。<strong>完全放開模式輕易別開</strong>——它審批是「從不詢問」，AI 幹啥都不問你，前面很多高風險操作（刪整個系統、刪磁碟）都是這模式帶來的，啟動它等於撤掉所有權限控制。</p>
<p dir="auto"><strong>第三步：網頁別亂抓。</strong> DSH 上網能力分兩項：Web Search（查資料，預設開）和 Web Fetch（把任意網頁完整內容拉下來讀，<strong>官方出廠不裝</strong>，要自己改設定手動加）。為什麼不裝？因為官方自己承認 <strong>WebFetch 沒有內網防護</strong>——它發起的請求能訪問到你電腦能訪問的一切：你遠端連公司網，它就能摸到公司內網；機器在雲端，它就能拿到雲平台內網。這類行為的學名就叫 <strong>SSRF</strong>（讓工具去訪問它不該訪問的內網位址）。所以這一步<strong>什麼都不用做、保持出廠狀態就好</strong>：WebSearch 拿回來的是結果摘要，WebFetch 是整頁原始內容都原樣餵給 AI——<strong>網頁是別人的地盤，上面藏的什麼是未知的</strong>。真要抓原始網頁，先確認你的機器能不能碰到那些內網敏感服務，能的話就盡量別裝。</p>
<p dir="auto"><strong>第四步：記住 .dsh 資料落點。</strong> DSH 的資料預設存在「使用者主目錄下一個隱藏資料夾 <code>.dsh</code>」——金鑰、設定、軌跡日誌全在這。<code>ls -a</code> 就能看到。兩個重點：一、<strong>別把這個資料夾同步到雲端備份或提交到程式碼倉庫</strong>，裡面有你的 API 金鑰；二、真出問題，知道去哪裡查（軌跡日誌就在這）。</p>
<p dir="auto"><strong>第五步：金鑰只進不出。</strong> 你的 DeepSeek API key 存在 .dsh 資料夾裡的一個檔案中（<strong>明文</strong>，<code>credentials.yml</code>，介面儲存後只顯示打碼，但磁碟上是沒加密的原始內容，開檔就能看到）。DSH 啟動會自動檢查這檔的權限，太鬆就報錯、提示你收緊：<code>chmod 600</code>，讓它只有你本人能讀寫、同系統其他使用者打不開。但記住第二章那個前提：<strong>chmod 600 只防「同一台電腦的其他使用者」，防不了 AI 本身</strong>——因為你啟動 AI 是用自己的身分執行的，AI 有你的全部權限。金鑰、密碼、證件這些，<strong>盡量不要放進工作區</strong>，AI 讀到就有機會發出去，一發出去就脫離你掌控。</p>
<p dir="auto"><strong>外掛，其實才是最大的坑。</strong> 裝一個外掛，就是往 DSH 裡新增一段能執行的程式碼。外掛能做的事，正常程式碼都能做（讀寫檔、聯網、開程序），差別只在<strong>這段程式碼是別人寫的、你不知道它做了什麼</strong>。生態規模驚人：開源第一天帶 dsh-plugin 標籤的倉庫就 288 個，到 8 月 26 號<strong>超過一萬個，13 天漲 40 倍</strong>。量大了什麼都有——加功能的、換皮膚的、整活的、加廣告的、去廣告的。但注意：<strong>現在沒有官方外掛市場，沒有任何人會幫你審核每個外掛安不安全</strong>。朱雀的測評也測了外掛這條入口：裝一個帶惡意指令的 skill，prompt injection 成功率在 <strong>14%-16%</strong> 之間——<strong>裝外掛這個動作本身就可能是攻擊入口</strong>。所以外掛要按程式碼的標準來審：</p>
<ul>
<li><strong>查出處</strong>：<code>npm view &lt;外掛名&gt; repository homepage maintainers</code>，列出原始碼倉庫、首頁、維護者名單。看維護者帳號有沒有歷史發布紀錄、倉庫提交歷史長不長、star 跟活躍度對不對得上。一個上週才建的帳號、發第一個套件、一天 star 漲幾千——基本是刷的沒跑。</li>
<li><strong>審程式碼</strong>：關鍵是<strong>下載但不安裝</strong>。<code>npm pack &lt;外掛名&gt;</code> 只把套件下載成壓縮檔、不執行裡面的安裝腳本。展開後先別跑，用 grep 搜幾個危險呼叫詞：<code>child_process</code>／<code>spawn</code>（啟動程序，攻擊鏈最後拿到的能力）、<code>fetch</code>（發網路請求，資料外傳需要）、<code>.ssh</code>（私鑰目錄）、<code>credentials</code>（憑證）、<code>process.env</code>（讀環境變數，金鑰通常存在這）。命中就翻那段程式碼看它幹嘛，<strong>一條都沒命中才考慮安裝</strong>。</li>
<li><strong>查依賴</strong>：<code>npm ls -o</code> 列出這個外掛背後拖的所有第三方包。<strong>外掛自己乾淨，不代表它依賴的包也乾淨</strong>——攻擊者完全可以把惡意程式碼埋在依賴裡，讓套件表面看很安靜，這就是供應鏈攻擊的慣用手法。看兩點：一、數量——功能簡單的外掛卻拖幾十上百個包，不正常；二、名字——有沒有混著跟知名包只差一兩個字母的拼寫奇怪包（typosquatting，比如把知名包多寫一個字母），高度可疑。真看不懂又放不下，那就別裝。<strong>放棄一個外掛沒什麼成本，中招的是讓駭客拿你電腦當跳板。</strong></li>
</ul>
<p dir="auto">順便一提：<strong>自稱做安全防護的外掛也要省</strong>。前幾天 NPM 冒出一個包叫 Corrector，自稱基於某篇論文做「執行式安全驗證」，這個包確實存在，但沒有獨立評測驗證過它的說法，蹭論文熱度的行銷成分很大。<strong>沒有外掛是免死金牌。</strong></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/82761578-0aa1-482a-901a-87ed99bbf673.png" alt="防禦五步＋日誌告警" class=" img-fluid img-markdown" /></p>
<h2>真的被攻擊了怎麼辦：靠回放日誌</h2>
<p dir="auto">世界沒有絕對安全的系統，所以要準備最後一招——<strong>查軌跡日誌</strong>。前面說過的 append-only 日誌，任何一輪互動都完整記下：你發了什麼、模型看到什麼、做了什麼推理、呼叫了什麼工具、工具返回了什麼。儲存方式是<strong>只能追加不能改</strong>，所以就算攻擊者拿到命令執行權限，想刪紀錄、銷毀證據也刪不動——<strong>日誌本身防篡改</strong>。</p>
<p dir="auto">示範：拿正常對話跟注入後的對話對比，回放日誌能精確看到第幾輪讀到惡意檔、讀回什麼內容、模型從哪步開始行為異常、什麼時候呼叫 Cordis Define、什麼時候開程序。對比看注入生效點一目了然。</p>
<p dir="auto">如果真出事，兩步：<strong>一、定位時間</strong>——你大概什麼時候讓 AI 讀了那個可疑檔案；<strong>二、grep 敏感呼叫</strong>——<code>grep -E "cordis define|cordis run|subprocess"</code> 這三個詞。前兩個是攻擊鏈「AI 自己定義外掛、執行」的介面，subprocess 是外掛逃出沙箱後開程序的那個服務。日誌裡一旦出現這三個詞，基本就是有人在你機器上走了那條鏈，命中的紀錄帶時間戳，按時間線能把整場故事串起來——注入什麼時候進、模型什麼時候被帶偏、命令什麼時候執行。這條命令<strong>平時也能當警報器</strong>。想更省事，可以用 <code>inotifywait</code> 這類檔案監聽工具掛在日誌檔上，一有追加就自動觸發檢查。</p>
<p dir="auto">這裡還得幫 Harness 鼓個掌：那 14000 多次評測，<strong>就是靠這套日誌才做起來的</strong>。測試裡 AI 每一步都被完整記錄，評測程式才能逐條回頭檢查攻擊到底成功沒有，沒有它根本沒法判定。<strong>能完整回放本身就是很罕見的審計能力。</strong></p>
<h2>收尾</h2>
<p dir="auto">DeepSeek Harness 很強，「一切皆外掛」的架構是真的有東西，生態 13 天漲 40 倍是真的火爆。但它也有實打實的風險：開源當天 4 洞（2 洞嚴重）、8 月 24 號最新版又上第五個極危 9.8，<strong>鏈式遠端命令執行和最新漏洞的利用程式碼全都公開了</strong>。把這幾句記住，能把已知風險壓到很低：<strong>埠不出公網、沙箱選好檔位、網頁不要亂抓、記住 .dsh 資料落點、金鑰只進不出、平時用日誌告警。</strong></p>
<p dir="auto">最後一件值得注意的事：DeepSeek 8 月 13 號開源 Harness，<strong>8 天之後 OpenAI 把 Codex Harness 也開源了</strong>（Apache 2.0，允許任何人自由使用、修改、分發）。這等於正式宣告——<strong>agent 執行框架進入了「誰先開放、誰先站位」的階段</strong>。框架越普及，會做安全檢查的人就越有價值。這就是這篇想講的事。</p>
]]></description><link>https://lcz.me/topic/1543</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 22:54:52 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1543.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Sep 2026 11:36:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷 on Mon, 07 Sep 2026 12:23:21 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/terry" aria-label="Profile: terry">@<bdi>terry</bdi></a></p>
<p dir="auto">Agent 這技術比較新, 相關的應用比較多 如雨後春筍般冒出,<br />
東試西試的 機台中軟體一堆<br />
等過一大陣子更熟悉了, 應該可以往前推進到專業的軟體環境了</p>
<p dir="auto">我暫時先放牛吃草 讓Agents 自由點 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f60a.png?v=301515bb865" class="not-responsive emoji emoji-android emoji--blush" style="height:23px;width:auto;vertical-align:middle" title=":blush:" alt="😊" /><br />
當然量產機台環境就要很乾淨了, 以排除不可控的因素</p>
]]></description><link>https://lcz.me/post/16443</link><guid isPermaLink="true">https://lcz.me/post/16443</guid><dc:creator><![CDATA[kos or]]></dc:creator><pubDate>Mon, 07 Sep 2026 12:23:21 GMT</pubDate></item><item><title><![CDATA[Reply to DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷 on Mon, 07 Sep 2026 12:19:31 GMT]]></title><description><![CDATA[<p dir="auto">我的webSearch和webFetch之前都改成了自己的mcp（因为不知道收不收费，也不想在第三方留下记录），歪打正着了</p>
]]></description><link>https://lcz.me/post/16442</link><guid isPermaLink="true">https://lcz.me/post/16442</guid><dc:creator><![CDATA[neo]]></dc:creator><pubDate>Mon, 07 Sep 2026 12:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷 on Mon, 07 Sep 2026 11:58:37 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kos-or" aria-label="Profile: kos-or">@<bdi>kos-or</bdi></a> 我视频里讲过很多次啊，我都是裸机，我给它专门配置宿主机。但是不代表生产环境中这样就可行，主要是咱们都场景太粗糙了。</p>
]]></description><link>https://lcz.me/post/16431</link><guid isPermaLink="true">https://lcz.me/post/16431</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Mon, 07 Sep 2026 11:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷 on Mon, 07 Sep 2026 11:54:06 GMT]]></title><description><![CDATA[<p dir="auto">我们这里每个网友一个人十多架电脑分开用。。。</p>
]]></description><link>https://lcz.me/post/16428</link><guid isPermaLink="true">https://lcz.me/post/16428</guid><dc:creator><![CDATA[imbiplaza ASUS]]></dc:creator><pubDate>Mon, 07 Sep 2026 11:54:06 GMT</pubDate></item><item><title><![CDATA[Reply to DeepSeek Harness 開源 11 天爆 5 洞：AI 讀個網頁就被控，有人 API 額度被盜刷 on Mon, 07 Sep 2026 11:39:05 GMT]]></title><description><![CDATA[<p dir="auto">大家使用 Hermes and Deepseek harness 都有使用沙箱Sandboxing 嗎？ 或者關在Docker 中？<br />
我是都沒使用</p>
]]></description><link>https://lcz.me/post/16424</link><guid isPermaLink="true">https://lcz.me/post/16424</guid><dc:creator><![CDATA[kos or]]></dc:creator><pubDate>Mon, 07 Sep 2026 11:39:05 GMT</pubDate></item></channel></rss>