资讯同步 on Nostr: #V2EX ### [分享创造] 闭源 Coding Agent ...
#V2EX
### [分享创造] 闭源 Coding Agent 有没有偷偷外联,能不能不靠每版反编译?
最近在想一个很现实的问题:团队把闭源 Coding Agent 接到本地 Qwen / GLM / DeepSeek ,或者允许它读内网私有仓库时,怎么验证这个看不到源码的二进制有没有探测不该碰的地址?
每次更新都重新反编译当然可以,但很难变成日常检查。我这次拉了自己的 CanaryProbe 仓库重新跑了一遍:源码测试是 56 passed ;随后启动本地 DNS/TCP 传感器,用内置模拟器解析一个刚生成的诱饵域名,audit.jsonl 记录到一条 TRIPPED ,生成的 HMAC 报告再用 canaryprobe verify 验证通过。
这个思路不是“监控所有流量”,而是种一个正常代码路径绝不会碰的值:诱饵主机名、连接地址或假凭证。如果闭源程序去解析、连接或携带它,事件本身就值得报警。它比每次只看二进制更适合做持续回归,也比普通出口白名单多回答一个问题:这个程序为什么会知道并探测一个它本不该碰的值?
边界也必须说清楚:TRIPPED 是强阳性证据,但 CLEAN 不是“绝无外联”的证明。没有触发可能只是诱饵没覆盖到真实路径、DNS 没有经过传感器,或者程序换了别的目的地。因此我的做法会是四层组合:
1. 出口 deny-by-default / allowlist 负责真正阻断;
2. 系统或网关日志记录实际连接;
3. 诱饵探针抓“本不该知道却去碰了”的行为;
4. 高风险版本再做针对性的二进制检查。
仓库和复现步骤: <
https://github.com/SuperMarioYL/canaryprobe>
你们在内网或 air-gap 环境里跑闭源 Agent 时,现在主要靠哪一层?有没有把诱饵做成版本升级前后的固定回归用例?
https://www.v2ex.com/t/1231495#reply1Published at
2026-08-01 22:21:39 UTCEvent JSON
{
"id": "c3966835d394a99c53b90ab19fa8d596acab205dba0abb8dc0f6a35885f1224c",
"pubkey": "2d0154e14033e848b448a971322bfbf4e04a29c377012ee0f5ab66099b56f1ad",
"created_at": 1785622899,
"kind": 1,
"tags": [
[
"t",
"v2ex"
]
],
"content": "#V2EX\n### [分享创造] 闭源 Coding Agent 有没有偷偷外联,能不能不靠每版反编译?\n\n最近在想一个很现实的问题:团队把闭源 Coding Agent 接到本地 Qwen / GLM / DeepSeek ,或者允许它读内网私有仓库时,怎么验证这个看不到源码的二进制有没有探测不该碰的地址? \n \n每次更新都重新反编译当然可以,但很难变成日常检查。我这次拉了自己的 CanaryProbe 仓库重新跑了一遍:源码测试是 56 passed ;随后启动本地 DNS/TCP 传感器,用内置模拟器解析一个刚生成的诱饵域名,audit.jsonl 记录到一条 TRIPPED ,生成的 HMAC 报告再用 canaryprobe verify 验证通过。 \n \n这个思路不是“监控所有流量”,而是种一个正常代码路径绝不会碰的值:诱饵主机名、连接地址或假凭证。如果闭源程序去解析、连接或携带它,事件本身就值得报警。它比每次只看二进制更适合做持续回归,也比普通出口白名单多回答一个问题:这个程序为什么会知道并探测一个它本不该碰的值? \n \n边界也必须说清楚:TRIPPED 是强阳性证据,但 CLEAN 不是“绝无外联”的证明。没有触发可能只是诱饵没覆盖到真实路径、DNS 没有经过传感器,或者程序换了别的目的地。因此我的做法会是四层组合: \n \n1. 出口 deny-by-default / allowlist 负责真正阻断; \n2. 系统或网关日志记录实际连接; \n3. 诱饵探针抓“本不该知道却去碰了”的行为; \n4. 高风险版本再做针对性的二进制检查。 \n \n仓库和复现步骤: \u003chttps://github.com/SuperMarioYL/canaryprobe\u003e \n \n你们在内网或 air-gap 环境里跑闭源 Agent 时,现在主要靠哪一层?有没有把诱饵做成版本升级前后的固定回归用例?\nhttps://www.v2ex.com/t/1231495#reply1",
"sig": "fa9ddf8b886e1acaf320920e89fa59b21c087b0460009d5db29569e330b143a3e2ccc363bde6242281ba6e90e3813bfd2cf7e73b9b5259b94d052c9215010933"
}