{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"toby-bridges-api-relay-audit","slug":"toby-bridges-api-relay-audit","rank":19,"url":"https://github.com/toby-bridges/api-relay-audit","name":"toby-bridges/api-relay-audit","category":"security","description":{"zh":"从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计，生成 Markdown 报告，覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。","en":"Runs local security audits of AI API relays and LLM proxies from DeepSeek Harness, producing Markdown reports for prompt injection, model substitution signals, tool-call rewriting, error leakage, stream integrity, and profile-gated Web3 risks."},"stars":798,"starsCheckedAt":"2026-08-21","repository":{"owner":"toby-bridges","repo":"api-relay-audit","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:toby-bridges/api-relay-audit","tarball":null,"added":"2026-08-18","page":"https://awesome-dsh-plugin.com/p/toby-bridges/api-relay-audit/","screenshots":[],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"toby-bridges-api-relay-audit","slug":"toby-bridges-api-relay-audit","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:19:40.731Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"00ce80208ea1178ac39116bf0843517a748e4dce","commitDate":"2026-08-16T03:21:58+08:00","artifactDigest":"sha256:a41cb0702e1bfcbd79744c2e1e69d66664958685e4843e9e35f3b62152fd092e","downloadUrl":"https://github.com/toby-bridges/api-relay-audit/archive/00ce80208ea1178ac39116bf0843517a748e4dce.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:toby-bridges/api-relay-audit","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-api-relay-audit","packageVersion":"2.4.0","bundle":{"patch":"./dsh/cordis.patch.yml"},"client":null,"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-commands","@deepseek-ai/dsh-credentials","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-settings","@deepseek-ai/dsh-subprocess"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"dsh-api-relay-audit","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"dsh/cordis.patch.yml","inserts":[{"id":"api-relay-audit","name":"dsh-api-relay-audit","path":"dsh/cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":null,"parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","network","subprocess","telemetry"],"outboundHosts":[{"host":"relay.example.com","count":13},{"host":"xxx.com","count":3},{"host":"hvoy.ai","count":2},{"host":"api.anthropic.com","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"api_relay_audit/client.py","pathClass":"source","line":869,"evidence":"subprocess.Popen","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"4216a93c7cbd965f5049289a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"audit.py","pathClass":"source","line":709,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f1d6ec457c9fa1a58d3f657c"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"audit.py","pathClass":"source","line":1602,"evidence":"subprocess.Popen","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"baa484750ce6960ad034b80b"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/audit.py","pathClass":"source","line":142,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"0e319eb9bebd0a247ca363f8"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/audit.py","pathClass":"source","line":152,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"0e319eb9bebd0a247ca363f8"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/build-standalone.py","pathClass":"source","line":79,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"d2573d129536a9b1b5494929"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/collect-metrics.py","pathClass":"source","line":79,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"400512d7e9d1a37c7daab35a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/collect-metrics.py","pathClass":"source","line":148,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"400512d7e9d1a37c7daab35a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-release-artifact.py","pathClass":"source","line":41,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"7d5c34f84915bae57cf41d88"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_client.py","pathClass":"test-example-docs","line":285,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"b5ca45ef9070765bd0551e8c"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_client.py","pathClass":"test-example-docs","line":297,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"b5ca45ef9070765bd0551e8c"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_client_stream.py","pathClass":"test-example-docs","line":468,"evidence":"subprocess.Popen","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"9985b6107a1566329182d706"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_client_stream.py","pathClass":"test-example-docs","line":506,"evidence":"subprocess.Popen","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"9985b6107a1566329182d706"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_dual_distribution_parity.py","pathClass":"test-example-docs","line":82,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"ccb9f308c5bc8ecc51a2cad7"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_dual_distribution_parity.py","pathClass":"test-example-docs","line":489,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"ccb9f308c5bc8ecc51a2cad7"},{"id":"HT-SECRET-001","title":"疑似硬编码凭据","severity":"critical","confidence":"low","layer":"static","path":"tests/test_error_leakage.py","pathClass":"test-example-docs","line":158,"evidence":"AKIAIOSFODNN7EXAMPLE","remediation":"立即吊销凭据，并改用 DSH credentials 服务或环境引用。","note":"包含占位/示例词汇；位于测试、示例或文档目录","hash":"453f8dfed1dd8ca71b3e87e4"},{"id":"HT-SECRET-001","title":"疑似硬编码凭据","severity":"critical","confidence":"low","layer":"static","path":"tests/test_error_leakage.py","pathClass":"test-example-docs","line":163,"evidence":"-----BEGIN RSA PRIVATE KEY-----","remediation":"立即吊销凭据，并改用 DSH credentials 服务或环境引用。","note":"位于测试、示例或文档目录","hash":"951b59b1ee18c1153c826e41"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/test_version_sync.py","pathClass":"test-example-docs","line":73,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"e23d39fbaf9386ef0a19d195"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"web/index.html","pathClass":"html","line":912,"evidence":".innerHTML=","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"5a2e219915f9de28a570252b"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"web/index.html","pathClass":"html","line":935,"evidence":".innerHTML=","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"5a2e219915f9de28a570252b"}],"counts":{"critical":0,"high":0,"medium":2,"low":9},"rawCounts":{"critical":2,"high":0,"medium":2,"low":16},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-missing","vulnerabilities":"lockfile-missing","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":116,"bytesScanned":1560261,"truncated":false,"lockfiles":[],"pathClasses":{"test-example-docs":50,"markdown":24,"source":29,"script":1,"cordis":1,"manifest":1,"data":1,"html":9}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:19:40.731Z","commit":"00ce80208ea1178ac39116bf0843517a748e4dce","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:17:28.226Z","commit":"00ce80208ea1178ac39116bf0843517a748e4dce","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:44:51.568Z","commit":"00ce80208ea1178ac39116bf0843517a748e4dce","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"00ce80208ea1178ac39116bf0843517a748e4dce","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:19:40.731Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"00ce80208ea1178ac39116bf0843517a748e4dce","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:17:28.226Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"00ce80208ea1178ac39116bf0843517a748e4dce","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:44:51.568Z"}]}