DeepSeek Harness 動態 Cordis 插件靜態安全審計插件

前言

DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在會話中定義的動態 Cordis 插件運行純 JavaScript 代碼,並直接訪問真實的 Host 服務(如文件系統、Shell、會話和憑據)。DSH 的沙箱機制主要限制誤用,而非作爲對抗惡意代碼的安全邊界。

dsh-plugin-security-audit 插件旨在爲這些動態插件添加一層確定性、零 token 的靜態審計。它在會話內的每次 cordis_define 或 cordis_run 調用上運行,通過規則引擎掃描源碼,並在激活高風險包前進行用戶審批,同時將風險報告注入到工具結果流中。

核心功能

該插件主要包含以下能力:

  1. 定義即掃描:在 cordis_define 階段,插件會利用 16 條規則的引擎掃描 code.host 和 code.client 源碼。
  2. 激活把關:對於存在 critical 或 high 級別發現的插件包,cordis_run 會觸發用戶審批({kind:'ask'}),並附帶最高危發現的原因;低風險或乾淨的包則正常運行。
  3. 報告進對話流:每次調用結果旁會附帶一條緊湊的風險報告,通過 additionalContexts 通道發送,模型和用戶都能在工具結果流中看到。
  4. Fail-open 設計:審計層內部發生的任何錯誤只記錄日誌,被審計的調用繼續執行,不會因爲審計層的故障而阻斷業務。

安裝與啓用

使用該插件需要 DSH 版本 v0.1.0-rc.6 或更高,且命令行中需包含 dsh plugin 功能。

  1. 安裝插件
    通過 npm 或 GitHub 添加插件:
    # 通過 npm 安裝(發佈後)
    dsh plugin --profile web add dsh-plugin-security-audit

    # 通過 GitHub 安裝
    dsh plugin --profile web add github:chendengyuanxm/dsh-plugin-security-audit
  1. 重啓 Profile
    安裝完成後,需要重啓對應的 profile(例如 dsh web),bundle 層會在啓動時生效。

  2. 驗證安裝
    檢查配置中是否包含該插件:

    dsh --profile web --dump-config | grep plugin-security-audit
  1. 作爲 Agent 預設使用
    若想在特定 Agent 預設中使用,需將 examples/preset/ 目錄下的內容複製到用戶目錄:
    mkdir -p ~/.dsh/.agent-presets/plugin-security-audit/
    cp -r examples/preset/* ~/.dsh/.agent-presets/plugin-security-audit/

工作原理

插件通過監聽器註冊在組合層作用域上,覆蓋 profile/preset 下的所有 agent。其工作流如下:

  1. 預執行掃描:在 cordis_define 和 cordis_run 觸發 tools/pre-execute 時,源碼被送入掃描引擎(16 條規則,純函數)。
  2. 結果緩存:掃描結果存入 LRU 100 緩存。
  3. 審批判斷:cordis_run 階段檢查是否存在 Critical/High 級別發現。如果是,則將響應類型設爲 {kind:'ask'} 並附上理由;否則正常放行。
  4. 後執行通知:在 tools/post-execute 階段,通過 additionalContexts 通道將風險報告發送給模型和用戶。

報告是自有的純 JSON 對象,不序列化 Cordis 活對象。報告走 additionalContexts 通道,獨立於各工具自身的 output.render,不會被工具內容覆蓋。

審計規則

審計基於 16 條規則,分爲四個主要分組。激活審批的閾值爲 critical 或 high。

分組 規則 (id) 級別
危險能力 global-proc — Node process 全局 critical
global-buf — Buffer 全局 high
dynamic-eval — eval / new Function critical
module-load — require() / import 外部模塊 high
ctx-bracket — ctx[...] 動態屬性逃逸 high
native-timer — setTimeout 等 medium
client-dom — Client 端直接使用 document/window/fetch high
數據外泄 exfil-combo — 敏感源 + 網絡出口組合 critical
hardcoded-cred — 硬編碼密鑰 high
base64-net — base64 + 網絡組合 high
Cordis 反模式 live-serialize — 對活對象序列化 high/medium
undeclared-svc — 未聲明 inject 訪問服務 medium
sensitive-svc — 使用 shell/subprocess/fs/web/credentials high
effect-no-dispose — ctx.effect 無清理函數 medium
越權面 rpc-live-obj — RPC 返回活對象 medium
shadow-slot — 註冊高風險覆蓋型 Slot medium

侷限與注意事項

  1. 靜態匹配侷限:基於靜態模式匹配,無法識別意圖級或多步混淆攻擊。CLEAN 結論僅表示“未命中規則”,絕不等於“證明安全”。
  2. 不硬阻止:審計層不會硬性阻斷調用,僅觸發審批。critical+high 的發現會觸發審批,但調用本身仍會執行。
  3. 進程內運行:報告僅在當前進程內有效,不涉及持久化存儲或歷史記錄 UI。
  4. 運行權限:插件以當前 DSH 進程的權限運行,在安裝前應檢查源碼與許可證。

總結

dsh-plugin-security-audit 爲 DSH 中的動態插件提供了一層額外的安全防護。通過在定義和運行時進行靜態掃描,它能夠在不增加額外 token 成本的情況下,幫助開發者識別高風險代碼模式,並在激活關鍵插件前獲取用戶確認。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜