第三百零八章 投资人战争
第三百零八章 投资人战争 (第2/2页)老曹终于点了点头:"年轻人,有底气。"
但李薇没有松口。她把报告还给炜杰,问了一个尖锐的问题:"王志远这件事,说明你们的代码审核机制有漏洞。一个分词工程师怎么能接触到同步层参数?"
"问得好。"炜杰说,"这是我们最大的教训。千度的代码权限管理是按模块划分的,王志远利用职务便利,在提交分词代码时夹带了同步层的参数修改。这个漏洞现在已经堵上了——所有跨模块的提交必须经过双人复核,核心架构层的任何改动需要三个技术负责人同时签字。"
他停顿了一下,补充道:"这个教训值八十万,但我们学到了。"
"八十万?"周正问。
"王志远从搜乎那边拿的价码。"炜杰看了赵明远一眼,"八十万,换一个可能拖垮千度三个月的漏洞。挺划算的买卖。"
赵明远的脸涨红了。他没想到炜杰会在这种场合把数字抖出来。
"炜杰,说话要负责。"赵明远的声音冷了下来,"搜乎和千度是竞争关系,但我们不会用下三滥的手段。"
"是吗。"炜杰从口袋里掏出一张纸,"这是王志远在北京银行的转账记录,八十万,付款方是搜乎科技的关联公司'搜乎信息服务有限公司'。需要我把复印件给在场的各位发一份吗?"
赵明远盯着那张纸,嘴唇动了动,没说出话来。
老曹忽然哈哈大笑起来:"行了行了,年轻人斗气,我们老家伙看戏。炜杰是吧?明天上午我去你们办公室,让我看看那个现场演示。"
"欢迎。"炜杰说。
同一时刻,中关村太平洋国际大厦十层,千度办公室的灯光还亮着。
何明一个人坐在工位上,面前摆着三台显示器。他的眼镜滑到鼻尖上,头发乱得像鸟窝,手边放着半杯已经凉透的咖啡。
他正在审计王志远改过的每一段代码。
三天前,炜杰交给他一个任务:把王志远在职期间提交的所有代码全部过一遍,不仅是同步层,是所有模块。何明当时还觉得小题大做——一个分词工程师,能碰的东西有限。
但现在他不这么想了。
第一个发现是在查询解析模块。王志远修改了一个看似无关紧要的字符串拼接函数,把默认的分隔符从逗号改成了竖线。单独看这个改动没有任何问题,甚至能通过所有单元测试。但何明注意到,这个改动和同步层的参数篡改结合在一起时,会导致查询结果在缓存阶段出现键值冲突。
第二个发现在日志轮转模块。王志远加了一行时间戳格式的代码,把"年年年年-月月-日日"改成了"日日/月月/年年年年"。这个改动被注释标记为"适配海外服务器格式",但千度根本没有海外服务器。何明追查下去,发现当日志轮转按这个格式运行时,会触发一个边界条件,导致旧日志文件在特定日期不会被正常清理。
第三个、第四个、第五个……
何明越查越心惊。王志远不只是改了同步层,他在六个不同的模块里留下了"微调"。每一个改动单独看都无害,甚至能通过代码审查。但把它们连起来看,就是一个精密的陷阱。
如果六个模块同时按王志远预设的路径运行,查询解析的键值冲突会不断累积,日志轮转的边界条件会在特定日期引爆磁盘空间,而同步层的参数篡改会在最关键的时刻切断备份通道。
系统性雪崩。
何明靠在椅背上,后背全是汗。这不是一个离职员工发泄不满的恶作剧,这是一份经过精心设计的自杀蓝图。
他拿起电话打给炜杰,但话筒里传来占线音。炜杰还在那个投资人聚会上。
何明放下电话,继续查。他的直觉告诉他,还有更深的东西没挖出来。
他开始检查系统日志。不是业务日志,是操作系统层面的内核日志。王志远在职期间,每天晚上十一点到十一点半,服务器上都有一个定时进程在运行,进程名是"系统同步备份",看起来像是系统自带的备份服务。
但何明知道千度的备份策略。所有备份任务统一由运维组的"备份主控"调度,不会用这种散装的定时任务。
他调出这个进程的完整调用链,一层一层往下追。调用链的末端指向一个隐藏在日志系统深处的脚本文件,文件名是一串随机字符,藏在日志归档目录下一个叫"第三方归档"的深层子目录中。这个目录的名字伪装成第三方日志存放路径,连何明都是第一次注意到它的存在。
何明打开那个脚本。
屏幕上的代码让他的呼吸停滞了。
那是一个定时触发器。触发条件写得清清楚楚:如果系统时间在一九九九年二月一日零点之前,且千度的存储层版本标识不等于"协同版二点一点七",则自动执行以下操作——
清空全部索引缓存。
重置存储层版本标识为出厂默认值。
删除近三十天的增量备份索引。
何明看了一眼电脑右下角的时间显示。
1999年1月12日,晚上九点十七分。
距离触发器的截止时间,不到二十天。