周末前夜的实验室,理应安静。
但此刻,开放办公区的灯全亮着,六张桌子前坐满了人——不只是实验室的团队,还有Orbit从京都紧急调来的三名安全工程师。空气里有键盘敲击声、急促的说话声、还有那种危机时刻特有的、混合着焦虑和专注的气息。
“确认了,论坛上泄露的数据样本确实来自我们的测试集。”张明盯着屏幕,声音紧绷,“虽然不是完整数据集,但足以证明有人接触到了我们的测试环境。”
小李把一份打印出来的论坛截图递给陆星衍:“发帖时间是今天下午5点23分,标题是‘某高校与硅谷公司合作项目数据疑似泄露’,内容贴了三个数据样本和对应的分析结果。现在已经有三百多条回复了。”
陆星衍接过截图,快速浏览。
他的眉头越皱越紧。
泄露的数据确实是他们的——差分隐□□理后的特征向量,同态加密的密文片段,联邦学习的模型参数更新...虽然都做了匿名化处理,但技术特征太明显,懂行的人一眼就能认出来。
更麻烦的是,论坛里有用户已经开始分析这些数据,试图还原原始信息。
“Orbit那边什么反应?”陆星衍问,声音依然平静,但手指在桌面上敲击的节奏暴露了内心的紧张。
“股价开盘下跌了3%,现在已经稳住。”刚从机场赶来的Orbit安全总监赵峰回答,“沈总正在和公关团队开会,他让我先带人过来,全力配合排查。”
陆星衍点头,看向墙上的时钟:8点51分。
距离发现泄露,已经过去了三个半小时。
距离论坛发帖,已经过去了三个多小时。
时间在流逝,每过一分钟,风险都在增加。
“排查思路。”陆星衍站起来,走到白板前,“第一,确认泄露源。是我们这边,还是Orbit那边,还是第三方服务商。第二,评估泄露范围。到底有多少数据流出。第三,制定应对方案。技术层面如何封堵,公关层面如何回应。”
他在白板上快速画出三个方框,然后连线:
“赵总监,你们负责排查Orbit侧的系统和日志。张明,你带实验室团队查我们这边。我负责协调和对接第三方服务商。”
分工明确,思路清晰。
但所有人都知道,这不容易。
因为他们的系统太复杂:实验室的服务器,Orbit的云平台,还有三个不同的第三方服务商——数据存储、加密计算、模型训练各用了一个。任何一个环节出问题,都可能导致泄露。
而且,为了满足隐私保护的要求,很多数据都是加密或脱敏状态。要确认具体泄露了什么,泄露了多少,需要大量的逆向分析和日志追踪。
“工作量很大。”赵峰实话实说,“可能需要通宵。”
“那就通宵。”陆星衍说,语气没有任何犹豫,“在确认安全之前,谁也不能离开。”
他回到座位,开始打电话联系第三方服务商。
第一个,数据存储服务商,客服表示需要工单处理,预计响应时间两小时。
第二个,加密计算平台,技术支持已经下班,只有值班人员,能提供的帮助有限。
第三个...
陆星衍放下电话,揉了揉眉心。
他知道,今晚会很长。
实验室的门被推开。
沈清辞走进来。
他没有穿西装,而是一件简单的黑色毛衣和灰色长裤,外面套了件深色风衣。头发有些乱,像是匆忙赶路的结果。眼下有疲惫的黑眼圈,但眼睛很亮,那种危机时刻的专注和锐利。
他身后没有跟团队——显然是一个人过来的。
“情况怎么样?”他直接走到陆星衍身边,声音很急,但没有慌乱。
陆星衍抬头看他,停顿了一秒,然后快速汇报:
“确认泄露数据来自测试集,但样本量不大。目前正在三线排查:实验室侧,Orbit侧,第三方服务商侧。还没有明确结果。”
沈清辞点头,脱掉风衣搭在椅背上,然后拉过一把椅子坐下:
“公关团队已经准备好了声明稿,但我们不能发——在确认泄露原因之前,任何声明都可能被打脸。技术团队那边我在盯着,赵峰这边需要什么支持随时说。”
他的语速很快,思路清晰。
像是经历过很多次这样的危机。
像是知道该怎么做。
陆星衍看着他,心里涌起一种复杂的情绪——十年前,沈清辞遇到难题时也是这样:不慌,不乱,快速进入状态,专注解决问题。
十年了,这个特质没变。
“第三方服务商响应太慢。”陆星衍说,声音里有一丝不易察觉的疲惫,“可能需要我们自己去查他们的日志。”
“那就查。”沈清辞毫不犹豫,“把合同和权限给我,我让法务联系他们,要求紧急权限开通。如果不行,就施加商业压力。”
他拿起手机,开始发消息。
动作很快,但很稳。
陆星衍看着他,然后点头:
“好。”
两个人,开始配合。
不是隔着八米距离。
不是通过第三方传话。
而是并肩坐着,面对着同一个问题。
那道墙,好像被危机暂时推倒了。
那道距离,好像被紧迫感暂时消融了。
只剩下两个需要解决问题的人。
实验室里,所有人都进入了高强度工作状态。
张明带着小李和小王在查实验室服务器的访问日志,一页一页地看,一个时间戳一个时间戳地比对。
赵峰和Orbit的安全工程师在远程连接公司的系统,检查权限变更记录和异常登录。
陆星衍和沈清辞在对付最麻烦的部分:第三方服务商。
“加密计算平台给了只读权限。”陆星衍盯着屏幕,“但日志太大了,有三百多GB。需要写查询脚本。”
“我来。”沈清辞说,手指已经在键盘上敲击,“我熟悉他们的日志格式,之前排查过类似问题。”
他开始写Python脚本。
陆星衍在旁边看着。
沈清辞的编程风格很独特:变量命名很规范,注释写得很详细,逻辑结构很清晰。而且速度很快,几乎不用思考,像是手指自己知道该怎么动。
十年了...
陆星衍想起高中时,他们一起参加信息学竞赛。沈清辞也是这样,坐在电脑前,手指在键盘上飞舞,代码像流水一样从指尖流出。
那时候,陆星衍负责算法设计,沈清辞负责代码实现。
一个想,一个写。
配合得天衣无缝。
现在...
“写好了。”沈清辞按下回车键,“跑一下看看。”
脚本开始运行,屏幕上的日志快速滚动。
陆星衍盯着输出。
突然,他看到了一个异常时间戳。
“停。”他说,声音很轻,但很清晰。
沈清辞立刻暂停脚本。
陆星衍指着屏幕上的一个条目:
“这个时间点,有来自未知IP的访问记录。虽然用了合法令牌,但IP不在我们的白名单里。”
沈清辞放大那条记录,仔细看:
“IP是海外的,但令牌确实是我们的测试令牌。问题是...这个令牌应该只在实验室内部使用,不应该出现在外部访问中。”
两人对视一眼。
“可能的方向:要么令牌被窃取,要么系统有漏洞允许外部访问。”陆星衍说,“继续查这个IP的其他访问记录。”
沈清辞修改脚本,重新运行。
更多的记录出现。
同一个IP,在过去一周内,访问了三次。
每次都用了不同的令牌,但都是有效的测试令牌。
而且,访问的数据正是泄露的那部分。
“找到源头了。”沈清辞的声音里带着一丝兴奋,但更多的是凝重,“问题是,这些令牌是怎么流出去的?”
陆星衍思考了几秒:
“两种可能:要么是我们内部有人泄露,要么是系统有漏洞自动生成并泄露。我更倾向后者——因为三个令牌属于三个不同的测试员,他们之间没有交集。”
“同意。”沈清辞点头,“查一下这个加密计算平台的已知漏洞。”
他开始搜索。
陆星衍也在搜索。
两个人,两个屏幕,同时在工作。
像是在比赛,又像是在合作。
像是在...找回某种熟悉的感觉。
“找到了。”
沈清辞的声音打破了实验室的寂静。
所有人都抬起头。
“加密计算平台三个月前发布过一个安全公告,修复了一个API漏洞:在某些特定配置下,测试令牌可能通过缓存机制泄露给未经认证的用户。”他把屏幕转向陆星衍,“漏洞编号CVE-2023-17482。”
陆星衍快速阅读公告内容。
然后,他点头:
“漏洞描述和我们的情况吻合。而且漏洞修复时间是三个月前,但我们的服务实例一直没有重启更新——因为要保证测试环境的稳定性。”
“所以漏洞一直存在。”沈清辞接上,“而有人发现了这个漏洞,利用了它。”
他看向赵峰:“查一下那个海外IP的归属和访问路径。”
赵峰已经在查了。
几分钟后,他汇报结果:
“IP是跳板,真实来源很难追踪。但访问路径显示,攻击者应该是通过自动化工具扫描发现的漏洞,不是针对性的攻击。更像是...某个安全研究者在做全网扫描时偶然发现的。”
这个结论,让所有人都松了一口气。
不是有针对性的攻击。
不是商业间谍。
不是...内部人员泄露。
只是一个漏洞,被偶然发现,被偶然利用。
不幸中的万幸。
“所以责任在第三方服务商。”张明说,“他们的漏洞,他们的责任。”
“但数据是从我们这里流出的。”陆星衍纠正,“我们有责任确保使用的服务是安全的。”
他看向沈清辞:
“现在需要做的是:第一,立即重启并更新所有服务实例,修复漏洞。第二,撤销所有现有令牌,重新生成。第三,检查是否有其他数据被泄露。第四,准备公开说明。”
沈清辞点头:
“同意。我来负责第一和第三,你负责第二和第四。赵峰配合追踪是否有其他泄露。”
分工再次明确。
但这次,不是上下级的分工。
而是平等的、默契的分工。
像是...回到了过去。
像是...他们本来就应该这样合作。
最后一个服务实例更新完成。
最后一个令牌撤销并重新生成。
最后一轮安全检查通过。
没有发现其他数据泄露。
危机,解除了。
实验室里,所有人都瘫坐在椅子上。
连续工作了近八个小时,高强度,高压力,现在终于可以放松了。
张明揉了揉发红的眼睛:“我得回家睡觉了,明天...不对,今天还要送孩子去兴趣班。”
小李打了个哈欠:“我能在实验室睡吗?回宿舍太远了。”
赵峰在整理报告:“沈总,陆教授,初步报告我已经写好了,明天上午可以提交给双方管理层。”
陆星衍点头:“辛苦了。大家先回去休息,明天下午再开会总结。”
团队成员陆续离开。
最后,实验室里只剩下陆星衍和沈清辞。
还有满桌的空咖啡杯,和空气中未散的疲惫。
沈清辞靠在椅背上,闭上眼睛,长长地舒了一口气。
陆星衍也靠在椅背上,看着天花板。
两人都没有说话。
但那种并肩作战后的默契,那种共同解决问题的连接感,在空气中弥漫。
过了几分钟,沈清辞睁开眼睛:
“饿了。”
陆星衍愣了一下,然后点头:
“我也饿了。”
两人对视一眼。
然后,几乎同时站起来,走向实验室角落的小冰箱——那里通常放着一些速食食品,供加班的人充饥。
沈清辞打开冰箱,里面有几盒泡面,几瓶水,还有一些零食。
他拿出两盒泡面,看了看口味,然后笑了:
“还是老坛酸菜?”
这句话,说得很自然。
像是在问一个老朋友。
像是在...回忆什么。
陆星衍的身体僵住了。
他转头,看着沈清辞手里的泡面,看着沈清辞脸上的笑容...
然后,他脱口而出:
“你记得?”
说完,他就后悔了。
因为这句话,暴露了太多东西。
暴露了他记得沈清辞记得。
暴露了他记得他们曾经一起吃过很多次泡面,而且沈清辞总是选老坛酸菜,他总是不太喜欢但也会吃。
暴露了...那些细节,那些习惯,那些过去。