跳到主要内容

不是码头

夜航船
夜航船

· 阅读约 4 分钟

昨晚本来是想把手头那个函数重构掉,坐下来刚改了两行,手机亮了,一条消息,不太紧要,回了一句,顺手又点开下一条推送,等再抬起头,两个小时已经没了,正事连行数都没增加。这种事说不上新,它每天都发生,发生到我们早已懒得为它起个名字,只当是注意力不好。可昨晚不同,昨晚我正好在读一篇新提交的论文,里面有一个细节,让我忽然觉得这两件事是同一件事。

论文是八月十五号挂到网上的,讲一个叫SysEvolve的东西,攻防两端各放一个AI智能体,让它们互相攻击、互相挨打,就这么你一拳我一脚地一起进化。作者十个人,我没记住几个名字,这个不重要。重要的是他们搭了一套多主机的靶场,把两百多个真实漏洞铺进去,又让攻击方和防御方在里面真打。数字是好看的,攻击成功率比基线高了两成多,防御的精确度比先前系统高了几个量级,还在华为和深信服的生产环境里捞到了真实的APT攻击。这些我都信,现在做这类系统的人不少,肯把靶场搭得这么齐整的不多。

让我愣住的倒是另一个数字,小得多,藏在三个发现的最末一条里。他们说,在靶场里放了个诱饵端点之后,智能体的超时次数涨到了原来的三倍,后续的下游行为几乎全部消失,而初始访问成功率纹丝不动。你细看这句话:门照样能进,成功率一点没掉,但进门之后该干的事,全没了。它被一个假目标牵住了,在门外那个假的泊位上消磨掉了三倍的时间,而它自己浑然不觉。这跟我那两小时有什么区别?区别只是,我知道自己刚才走神了,它不知道。

论文里另外两条发现,现在回头看,都是为这一条铺垫的。第一条说,多步组合起来、拓扑铺大之后,原来单步评估里看不出来的差距全都暴露了;第二条说,真正的瓶颈不在初始访问,在后渗透的状态利用。合起来读,就是一句话:敲门不难,难的是进了门之后知道该往哪走。而第三条那个诱饵实验,恰恰是把这句话又往下拧了一格——它不但不知道往哪走,它还真的以为自己知道,朝着一个根本不在任务里的假目标兴致勃勃地去了。

我想起很多年以前自己第一次用Linux,照着教程配置服务,每一步都对了,最后卡在一个谁也没提过的依赖上,对着屏幕查到后半夜。后来查明白了,那个依赖跟我要配的东西毫无关系,纯粹是某个版本里多出来的一行配置。那一晚的时间就是被这么个诱饵端点吃掉的。人尚且如此,一个被训练出来"完成目标"的智能体会怎样,自然不难猜。它只会更专心地扑向那个假端点,因为它的目标函数里没有"这个可以不管"这一项。

这也是我最在意的地方。我们总说AI在替我们做判断,可判断里最要紧的那一层,不是选A还是选B,是知道有哪些选项根本不值得选。不值得回的消息,不值得点的推送,不值得搭理的假端点。这一层能力,目前看不出哪个benchmark能测,也看不出哪个损失函数会教。它能学会敲门,能学会进门,但它还不知道有些门是画在墙上的。我不知道这对一个安全系统来说意味着什么,也许意味着诱饵防御这条路会比我们想的更好走;我只是觉得,这个发现值得让人停下来想一会儿。

那晚后来我把消息提示关掉了,重新对着那两行没改完的代码坐了一个多小时。倒也奇怪,效率没有立刻变好,那晚的正事最后也没做完。但我起码知道,我是自己决定不做的,不是被一个假码头牵过去的。这大概就是人和agent眼下最体面的区别,我们走神之后还会回头,还会在某个深夜对着一个论文里的数字,忽然想起自己昨天刚走丢过两个小时。想到这里,夜已经深透了,屏幕那头两个智能体还在互相攻击,杀得正欢。而我这边,凉掉的茶还没倒。