dsh-netguard:DeepSeek Harness 的出口策略與主機白名單插件

前言

DeepSeek Harness(DSH)的沙盒機制主要約束文件的讀寫,對網絡流量缺乏控制。在源碼中,web_fetch 被描述爲一個帶有未實現私有網絡保護的 SSRF(服務端請求僞造)原語。dsh-netguard 插件旨在補充這一空白,提供 DSH 本身無法實現的網絡控制能力。

安裝與配置

安裝前需確保 Harness 版本在 0.1.0-rc.6 至 0.1.1 之間(0.1.2-alpha.* 版本不兼容)。

  1. 使用以下命令安裝插件:
    dsh plugin --profile <name> add @deepseek-ai/dsh-headless@0.1.0-rc.6
    dsh plugin --profile <name> add dsh-netguard
    dsh --profile <name> --dump-config      # 檢查 dsh-netguard 行是否出現
  1. 安裝後必須在 cordis.patch.yml 中配置組件。由於 ctx.web 沒有優先級或最後獲勝規則,必須顯式指定 fetchProvider 爲 dsh-netguard。
    # $DSH_HOME/profiles/<name>/cordis.patch.yml
    - id: web
      config:
        fetchProvider: dsh-netguard
        searchProvider: deepseek-official

    - id: dsh-netguard
      config:
        mode: audit
        allow: []
        deny: []
        spoolPath: /var/log/dsh/netguard.ocsf.jsonl

核心功能

該插件提供三方面的控制能力:

  1. 連接時主機檢查:對 web_fetch 和 web_search 工具的目標主機進行白名單/黑名單檢查。
  2. 參數預檢:在 bash、pwsh 或 run_code 命令運行前,檢查其參數中是否包含目標主機名。
  3. 審計與記錄:默認採用審計模式,每做出一個決策都會記錄一條 OCSF Network Activity (4001) 數據。

典型用法

默認模式爲 audit,此時被拒絕的請求會被記錄但仍然通過。要實際阻斷流量,需設置 mode: enforce。

以下配置允許訪問 GitHub 和特定 npm 源,拒絕訪問內部域名:

- id: dsh-netguard
  config:
    mode: enforce
    allow: ['**.github.com', 'registry.npmjs.org:443']
    deny: ['*.internal.example']
    spoolPath: /var/log/dsh/netguard.ocsf.l
    shell:
      enabled: true
      readTextHosts: false

安裝完成後,使用 CLI 查看日誌:

dsh-netguard report                  # 查看所有日誌
dsh-netguard report --since 24h      # 查看最近24小時的日誌
dsh-netguard report --suggest        # 根據已觀察的主機生成允許列表建議

適用場景與注意

適用場景:
* 防止模型通過 web_fetch 發起未授權的網絡請求。
* 阻止模型在 bash、pwsh 等命令中注入惡意 URL。

重要限制:
* 非防火牆:插件無法看到子進程啓動後發送的字節流(例如 curl "$(cat url.txt)"),因此無法檢測通過變量傳遞的 URL。
* 非邊界:插件在代理的 uid 下進程內運行,無法阻止通過模型通道本身的潛在數據泄露。
* 審計優先:必須顯式配置 mode: enforce 才能產生阻斷效果,否則僅起到監控作用。

結語

dsh-netguard 是 DeepSeek Harness 插件生態中用於增強網絡控制的關鍵組件。它通過主機白名單和命令參數檢查,填補了 DSH 在網絡層面的空白。安裝時請務必檢查源碼與許可證,並根據實際需求調整審計與強制模式。

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

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

小夜