2026 年,具备一定自主能力的安全智能体(Security Agent)和开发智能体(Coding Agent)成了新的战场。开放权重的模型、开源的 agent 框架层出不穷,「可审计」被写进每一份技术宣传,几乎每个团队都在被同一个问题追问:你的东西,为什么不开源?
我们的回答很直接:AVL Code 尊重开源,产品本身就站在无数开源的肩膀上;但对一件直接面向对抗的安全智能体,我们选择闭源。这不是对监督的拒绝,而是对一把双刃剑的必要约束。下面是四条理由。
一、智能体是能力,不是传统意义的脚手架
Linus 定律的现代回声是:「开源的智能体,足够多的社区会替你把它打磨得更安全。」这句话对一个开发脚手架或许成立——代码生成器里的 bug,终究只是 bug,多一双眼睛就少一处错。
但安全智能体不是传统意义的脚手架——我们曾专门论证过,一副为特定战场打造的「专用挽具」,会赢过一副更大更全的通用挽具。它内嵌的是检测逻辑、攻击知识、研判模型与处置能力——它本身就是能力,而能力天然双向。同一套「识别恶意行为」的知识,反向即是「如何规避识别」的图谱;同一套「自动化研判样本」的编排,换个提示词就是「自动化生产免杀样本」的流水线。漏洞不过是可被攻击者利用的一种特殊 bug;而对一件安全智能体,整体都是 dual-use。
因此我们的第一条原则是:安全智能体必须自我限定和约束。它需要护栏、需要能力边界、需要对自身滥用路径的封堵。把这样一把双刃剑无差别地开源,等于把开刃的两面同时递出去——而攻击者从不客气地只接防御的那一面。这也是为什么,当同一个智能体既能写代码、把一张需求脑图端到端做成企业级系统,又能研判一个真实的恶意样本时,我们把 samples/ 划成只读分析区、让执行类工具在其中强制失效,哪怕开了无限制模式这条线也不松动——给 AI 自由,但绝不交出方向盘。
二、不对称,是安全智能体的立身之本
对抗最锋利的一刀,是不对称性:入侵本就是信息天平持续向攻方倾斜的过程。闭源系统对攻击者保有系统级与配置级的双重不对称,而开源「自废武功」,把系统这一层也让了出去,只剩配置。
安全智能体把这一刀磨得更利。智能体的全部价值,恰恰在于它对攻击者的不对称认知——它的检测特征、启发式阈值、行为基线、研判权重。一旦源码级开放,对抗者读到的不是「一个软件」,而是检测器的完整判据,随即可以针对性地调参绕过(对抗样本、免杀、提示词层规避)。还原 Darkhotel 组织藏在 JPEG 里的隐写载荷 这类对抗样本时我们最有体会:真正值钱的从不是「能不能分析」,而是那套攻击者读不到的研判逻辑——把它开源,等于把答案连同考卷一起送出。这正是从「二进制级挖掘」降维到「源码级挖掘」——你以为让渡的是透明,实际让渡的是赖以生存的不对称。
有人会搬出 Bruce Schneier:「公开安全总是优于私有安全。」但请注意这句话的边界:它只适用于加密算法、安全协议、安全源码这一狭窄领域,因为它们有数学可证明性、主流算法有限、代码量小、实现被标准化复用考察。而对抗性检测策略不是一个有可证明安全性的算法——它是经验性的、演化的、随对手同步博弈的知识库。把 Kerckhoffs 原则(安全应依赖密钥而非算法保密)套到检测策略上,是一次危险的越界类比。我们坚持闭源,不是「隐藏即安全」的迷信,而是拒绝把不属于算法范畴的东西,当算法一样公开。
三、坚持二进制,才谈得上供应链可信
有一个至今无人真正回答的问题:如何证明二进制版本与源码一致? 2024 年的 xz-utils 后门(CVE-2024-3094)把答案摊在了台面上——一个长期「善意」的维护者,把只在特定条件才触发的杀机藏进测试文件,全程开源,却险些随发行版进入全球每一台 Linux。这类构造在代码逻辑上根本判定不了,即便被逮住,也无法证明是故意埋的。开源的透明,挡不住一个有耐心的恶意提交者。
于是我们把可信的锚点,从「源码可读」移到「发布物可验证」:坚持编译二进制形态,以证书和签名的方式,形成供应链侧的发布支撑。 这不是倒退,而是直面一个被开源叙事长期回避的事实——
开源并不能保证其与二进制发布结果的一致性,因为几乎没有用户走「开源审计 + 自我编译」的部署路径。
绝大多数人拉取的是预编译的包、镜像、权重文件。「你可以审计源码」的承诺是理论上的;你实际运行的,是一份你并未从审计过的源码亲手编译出来的二进制。可信源码与实际运行物之间的这道缝隙,正是供应链攻击栖身之所。 这不是抽象的担忧——我们自己就用 AVL Code 逆向过一个流行工具的发布版本,核验它是否在客户端里藏了从文档看不到的行为,而这类问题往往只有拆开二进制才看得清。可复现构建(Reproducible Builds)确实存在,但门槛高、验证者寥寥。既然如此,一条「闭源 + 强签名 + 可信发布链」的路径,与一条「开源 + 无人复现的二进制」的路径,其真实安全差距远小于口号所宣称——而签名与证书,才是那个真正兜底的东西。落到 AVL Code 上,这就是国密 SM2 / SM3 的技能验签、绑定机器 ID 的本地凭据加密,以及一条自己握得住的发布链。
而开源恰恰把伪造的门槛也一并降低了:拿到完整源码,编辑、夹带、再重新编译出一个以假乱真的「版本」,几乎没有成本;配上「反正没人从审计过的源码自行编译」的现实,这些仿冒夹带的版本便得以堂而皇之地流通。软件被「改头换面」塞进木马早已不是新鲜事,只是当战场从安装包挪到模型权重、扩展插件与 agent 工具链,它只会更快、更隐蔽。
四、开源大爆发,聚集的不是善意而是攻击者
开源社区常被想象成「全世界的眼睛」,仿佛注意力会自动汇聚到每一行代码上。现实是它高度不均——「众目」只眷顾少数明星项目,绝大多数安全关键组件长期无人细看。当每一个模型、每一个 agent 框架、每一条工具链都以开源为默认,这种摊薄被推到了极致。
必须说句公道话:Linux、Firefox 这些项目在安全上的长足进步是真实的。但它的本质,不是「开放」本身自动兑换了安全,而是在开源的基础上,长出了系统而严密的高水平社区运营——稳定的维护梯队、规范的响应流程、持续的资金与人力。问题在于,这套运营只供养得起少数大型著名项目。2014 年的「心脏出血」(Heartbleed)就是一记耳光:OpenSSL 被互联网上大量网站与设备依赖,一个致命漏洞却潜伏了约两年,而在事发之前,维护它的不过是一个靠零星捐助度日的极小团队。连 OpenSSL 都赢不到与其重要性相称的安全注意力——「足够多的眼睛」从不会自己到场。
这里藏着最被误读的一环。开源大爆发的时代,其结果并不是有益的安全资源聚集,而是为攻击者的漏洞挖掘带来了便利。 善意而专业的关注不会自动降临——它稀释在数百万个仓库里,从不为任何一个安全关键组件真正「聚焦」。而攻击者那一侧,聚合却在实实在在地发生:他们系统化地扫读开源、批量比对补丁、如今更以大模型辅助的代码审计大规模、自动化地读你的源码。有个老比喻说得好:花朵可以露天种植,但访问它的不一定只有蜜蜂,也可能有害虫。在大模型把「足够多的眼睛」变成攻方廉价算力的今天,露天花圃招来的害虫,比蜜蜂勤奋得多。
说到底,开源的透明确实给了用户一样东西——一种封闭系统靠用户协议给不了的「心理安全感」,这份价值我们承认。但要补上今天的实情:在绝大多数客户场景里,它是心理意义上的安全感,而非现实意义上的——因为客户既不会通读源码,也不会从审计过的源码自行编译。而同一份透明给攻击者创造的便利,却是现实的、可兑现的,并且要多得多。透明是一杆天平:一头是用户几乎用不上的「可以审计」,另一头是攻击者立刻上手的「尽情研读」。
真正的安全,来自「如何有效聚合善意而专业的关注」。我们的答案是把这份专注内化——由自己的红队、自己的研究者持续投入,也把二进制研判的看家本领(哈希与熵、IOC 抽取、PE / ELF / Mach-O 解析、反汇编、YARA 匹配)直接内置进智能体,而非寄望于人群的善意自发到场。道理也朴素:非开源方因先有可持续的盈利模式,才担得起更大的安全成本。
结语:让双刃剑的锋刃,指向它该指的一侧
整套「开源即安全」的论证,其实都架设在三个前提上:发布者善意、使用者无辜、攻击者不在其中。而对一件安全智能体,第三个前提在结构上就是破的——它的对手一定在它的用户之中,攻击者会第一时间取用它、研究它、反制它。这正是安全智能体区别于一切通用软件之处,也是我们不能照搬通用软件开源逻辑的根由。
还要说明一句:闭源不是敌视开源。 安天尊重开源,本身也是开源的参与者与受益者——我们发布过自己的开源代码(如 APM),赞助过 Android 逆向分析框架 Androguard 这样的开源安全项目,也连续多年支持「软件自由日」。正因为身在其中、清楚它的成色,我们才更看得明白:开源是一种了不起的协作方法,却不是安全的同义词,更不该被当作一件对抗性安全智能体的默认交付形态。
所以,我们选择闭源:
- 不是拒绝监督,而是以「可验证的发布」替代「可审计的源码」——证书、签名、第三方审计、公开的方法论,独独不公开可被规避的检测内核;
- 不是制造神秘,而是维持一件对抗工具对攻击者的必要不对称;
- 不是封闭能力,而是约束一把双刃剑的自我限定。
开源之于通用软件,可以是安全的朋友;但对一件直接面向对抗的安全智能体,透明本身就是一次不对称的让渡。我们选择闭源,是为了让这把双刃剑的锋刃,始终指向它应该指向的那一侧。
我们在 AVL Code 中等你,骑着驴,闭源、刀刃向着恶龙。
AVL Code,AVL 安全引擎,与智能随行。安天澜砥团队出品。
