对。最可怕的是,它看起来仍然是你们签过的东西。像有人用你的印章盖在另一份合同上。”
林昼的后背一阵发凉。印章这个比喻太贴近他今晚的感受:院办的“协调”就是印章,二号室的“急用补充”就是盖章后的工单。盖一次,就把责任挪走一点。
“那怎么追?”林昼问。
周工敲了敲屏幕:“追‘镜像指纹’。镜像的每一层都有摘要,构建环境也会留下痕迹。哪怕他们重打包,只要对照足够多的特征,总能找到同一只手的‘纹路’。”
他说着把一个窗口打开,里面是几条对照线:同一份镜像在不同时间被发布,但其中一层的摘要反复出现一个极短的偏差——像同一把刀每次切下去都多出一丝毛边。
“这就是指纹?”林昼问。
“这是指纹的一部分。”周工说,“更关键的是签名链。”
他点开另一份记录:“你们提到‘中间证书更新’。更新不是错,错的是更新发生在敏感窗口,而且更新后签名验证策略从严格变成了宽松。宽松一开,就给幽灵留下了门缝。”
梁组长的眼神更沉:“你能证明是谁把门缝开出来的吗?”
周工没有立刻回答,反而把一条日志放大:“看这个。04:05。签名动作发生在一个不是常规构建机的节点上,节点名称像是临时跑出来的:runner-tk-07。你们平时的构建节点命名规则更规整,这个像外来的。”
林昼的心脏猛地一跳:“04:05……我们之前也提到过这个时间。”
他想起那种被夜色切开的感觉——夜里最安静的时候,最容易发生“以为没人看见”的动作。
“你们能把这个runner定位到哪里?”梁组长问。
周工摇头:“不靠IP定位,那太容易伪装。靠它使用过什么钥匙、从哪里拉过代码、向哪里推送过镜像、用了谁的令牌。令牌就像手指,印在每一次请求上。”
“令牌在你们那边?”林昼问。
“理论上不该在任何人手里长期存在。”周工说,“但现实里,总有人为了省事,把钥匙挂在门口。”
他说完抬头看林昼,目光第一次像真正落在人身上:“你今晚做的那些编号、封条、双人见证,本质就是把钥匙从门口拿走。现在我们要做的