机房的冷气吹出一股潮白的雾,贴着地皮漫开,混着机箱散热的风扇味。刘南生坐在老齐旁边,盯着屏幕上的权限日志,已经看了四十一分钟。眼睛发酸,他没揉,只把手机屏幕翻过来又扣下去。
老齐的光标停在第三行,停了很久:“凌晨2:17,运维组陈永杰,管理员令牌,访问生产密钥库。导出文件大小4.2兆,路径是三号保险柜的根目录。三分钟后,删除访问日志。”
“之后呢?”
“锁屏,刷卡出门。没回工位,直接下班。”老齐把另一块屏幕转过来,监控截图里,陈永杰的背影在走廊尽头拐了个弯,没回头。他走的是内网跳板机,用的自己的账号,前后十分钟。
刘南生把这句话在脑子里过了一遍。管理员令牌,导出4.2兆,再删日志。每一步都是实名操作。这个人要么太蠢,要么是故意的。
“先不动他。”他说。
老齐摘下眼镜:“不动?他手里可能攥着生产密钥的副本。等于把保险柜钥匙递出去了,门还开着。”
“所以他碰过的钥匙已经废了。你把生产密钥全部轮换,原位置挂一套新的蜜钥——跟真的一模一样,但每次读取,都会把来源IP、设备指纹、时间戳全记下来。”
老齐敲了几下键盘:“蜜钥已部署,读取探针在线。”
“再放一个文件在蜜钥旁边。”刘南生说,“文件名要像核心用户库,里面掺几张假表,埋一层反查探针。他什么时候偷,我们什么时候知道他在给谁供货。”
老齐沉默了一阵,把眼镜戴回去:“陈永杰本人呢?”
“留着。”刘南生站起来,椅腿蹭过地面,“发布会之前,他不能出任何差错。你去把今天接触过生产密钥的人都列出来,一个一个排查背景。陈永杰放最后。”
“你怀疑他不是一个人?”
“我怀疑有个接钥匙的人在外面等着。”刘南生说,“明天上午,帮我约一个人。补天客。”
老齐愣了两秒:“论坛上那个补天客?他从不跟公司合作。”
“所以我亲自去。”
大排档的铁锅灶沿结了层黑壳,油星子溅到塑料凳上,热浪裹着炒牛河的锅气和隔壁烧烤摊的烟。补天客真人跟网上一样瘦,镜片厚得像啤酒瓶底,灰夹克洗得发白。面前那碗炒牛河他筷子挑了两下,没吃。
“你找错人了。”他说,“我只修漏洞,不给人打工。”
“不打工。”刘南生把自己那碗河粉也推过去,“请你当顾问。审深付通全矩阵的安全基线,上线前后、每次版本更新,你都签一个字。签了,算你认可。发现漏洞,费用你开,不还价。”
补天客的筷子停在半空:“全矩阵?你知道那是什么工作量?”
“知道。”
“知道还放话不还价?”补天客放下筷子,“我不收钱。”
“那你要什么?”
补天客盯着他看了好一阵。锅气燎上来,他眼镜片蒙了层白雾。“每年出一份公开年报。漏洞数、修复率、平均响应时间,全写进去,谁都能看。”
“哪怕里面有坏消息?”
“坏消息比没消息强。”补天客说,“没消息,用户只能靠猜。你能接受,我干。”
刘南生从筷筒里抽出双新筷子,掰开,递过去。木裂的声响很脆。“成交。明天上午十点,你带人进机房。报销单我签字,不设上限。”
“还有一个条件。”补天客接过筷子,“就我一个不够。我带支队伍进来,叫磐石。六个人,跟我干了五年。”
“行。”
“你都不问他们什么背景?”
“你认可的人,我信。”刘南生站起身,走出两步又停住,“但年报那条——你敢写,我就敢发。一年一版,不删一个字。”
大排档的风从马路对面灌过来,卷着灰尘和尾气的气味。补天客低下头,终于开始吃那碗坨了的河粉。
刘南生走到街边,摸出诺基,键盘硌手。屏幕上一条赵凯的短信:“明天早上那什么补天客要是放你鸽子,我上论坛蹲着堵他。”
他没回。路灯的光把他影子拉得很长,他摸了摸口袋里的烟盒纸,边角被汗浸得发软,折痕还在。
隔天上午,三十一层会议室。白板前,市场部马涛写下四个字:深盾计划。
“黑产咬了深付通一口,没咬动。但用户不知道,他们只看见‘支付公司出事’的标题。”马涛的笔尖敲了敲白板,“与其等别人的稿子来定义我们,不如自己把话说满。”
“说满的代价呢?”财务的老袁发话,“千万基金、赔付承诺、悬赏金额,哪一样不是钱?要是隔三差五来一次,账上撑得住?”
“先把边界锁住。”林若诗翻着手里的草案,钢笔在条款上划了一道,“单笔赔付封顶五十万,年度总盘一千万,超出的部分跟保险公司谈共保。漏洞悬赏按等级定价,高危一条两万封顶。风险敞口收死了,剩下全是收益。”
“用户认的就是那个数字。”赵凯往椅背上一靠,“单笔五十万,报纸能写头条。”
刘南生没接话。他站在窗边,看楼下车流在太阳底下折出白光。他在想另一件事:这话说满了,明天要是冒出一个更狠的招,怎么兜底。
“补天客昨晚扫了第一轮。”他开口,“十七个高危,六十三个中危。高危的中午修复上线一批,剩下的七天清完。”
“他们才进场一天就有结果?”马涛眼睛亮了。
“所以我能坐在这里说这话。”刘南生转身,“发布会三天后开。场地换深圳会展中心,按行业峰会规格。”
“预算得多三分之一。”老袁肉疼。
“加。”刘南生说,“今天所有工作停一半,全押在发布会。任何对外口径,法务过一遍才准放。散会。”
走回办公室的路上,赵凯跟上来,压低声音:“陈永杰今天请假了。”
刘南生脚步慢了一拍:“什么理由?”
“感冒。”赵凯说,“早上八点半打过卡,九点拿请假条走了。走之前在茶水间泡了两杯茶,一杯自己喝,一杯没动,搁在台子上。”
“留给谁的?”
“不知道。但我盯着呢。”赵凯说完,又补了一句,“你指路,我走。”
刘南生推门坐下,把圆珠笔按得咔咔响。笔帽弹开,合上,弹开。半晌,他拿起电话:“老齐,今晚加一轮扫描,所有三级以下的应用也过一遍。”
发布会当天早上,刘南生在酒店浴室的镜子前把领带系了三次,第三次才打好。前两次不是手抖,是他在想开场第一句话。
会展中心的发布厅比他预想的大。三百多个座位全坐满。前排是财经记者和行业媒体;后排挤着创客、大学计算机系的学生,还有几个背着登山包、像是论坛网友的年轻人。最角落里坐着四个深色西装的中年人,其中一张脸刘南生认得——某家友商支付公司的副总裁。他没多看。
第一排,补天客在。灰夹克,厚眼镜,坐得笔直,腿上搁着一台旧的ThinkPad,屏幕亮着。他没必要来,但他来了。
刘南生上台。没有演讲稿。他扫了一圈台下,口袋里的烟盒纸硌着大腿,隔着布料,能摸到那道折痕。他在话筒前停了一秒。
“三天前,深付通遭到了一次有组织的攻击。”他开口,声音在厅里落稳,“有人用重放的方式,套我们系统里的钱。他套走了十七个黑产账户,全部被冻结。钱,一分没丢。”
台下有人点头,有人举起手机。
“但我今天不是来报喜的。”刘南生顿了顿,“深付通上线第一天起就有漏洞。不是可能,是事实。磐石安全进场第一轮,扫出十七个高危、六十三个中危。高危的,今天中午十二点全部修复上线;中危的,七天之内清完。”
底下一阵骚动。有记者举手,被赵凯拦住。
“有人会问,把漏洞摆上台面,不是打自己的脸吗?”刘南生说,“藏着掖着,黑产就不会来?迟早的事。我们把话说开,所有人就都看着——看着我修,看着我补。欠的账,一笔一笔,全摊在太阳底下还。”
他往台侧点头。两个工人抬上来一块黑色泡沫板,一米五见方,立在舞台中央。板上贴着四张白纸卡,写着四行字:重放攻击、零日、越权调用、密钥泄露。
刘南生走到台侧,提了一把铁锤。锤头沉得坠手,他拎起来时小臂的肌肉绷紧,袖口的布料跟着收拢。闪光灯密集地亮起来。有人喊了句什么,他没听清。他往后撤了半步,腰一沉,抡圆了砸下去。
“砰——”
泡沫板碎成雪片。四张纸卡崩飞,一片打着旋儿落在第一排记者的笔记本上。碎屑溅上他西装袖口,他没弹。锤柄的震感从虎口传上来,一直震到手腕。
全场安静了两秒。
“今天,我代表深付通宣布三件事。”他握着锤子没放,“第一,设一千万安全基金。提交有效漏洞的人,按级别奖励,五千到二十万。第二,用户因平台漏洞产生的损失,先行垫付,单笔最高五十万。第三——”
他看向补天客。“行业第一份公开年度安全报告,由磐石安全出具。明年这个时候,所有人都会看到我们有多少漏洞、修了多少、漏了多少。一个数字都不少。”
掌声从后排先响起来。大学生们站起来鼓掌,有人喊了声“漂亮”。前排记者跟着站起来,闪光灯连成一片。角落那几个深色西装的中年人互相看了一眼,没说话。
刘南生把铁锤放在地上,退到台侧,手心里全是汗,虎口震得发木。赵凯凑过来,声音压得极低:“陈永杰没来。”
“昨晚见的人呢?”
“查到了。恒达集团旗下一个投资公司的项目经理,叫黄立群,昨天下午飞到深圳。”
刘南生没接话。他把汗湿的手掌在裤腿上蹭了一下,看向台下的相机阵列。
下午的新闻像水泼进热油锅。
本地财经频道滚动播出发布会画面。刘南生挥锤那一下被放了三遍,主持人点评:“深付通把移动支付的风控标准抬到了一个新高度——敢把漏洞写进公开年报,内地金融科技公司里是头一份。”
傍晚六点,客服电话被打爆。新增用户和充值额在后台屏幕上跳。老齐把数据发过来,刘南生扫了一眼,没回。
用户信任涨了。但他高兴不起来。
晚上九点四十,补天客发来一个链接。标题是《深付通上演苦肉计?“深盾计划”或为掩盖根本漏洞的公关秀》。
刘南生点开。帖子写得工整,从“发布会过于隆重”讲到“砸板子属于表演”,最后落在一行小字上:“谁还记得,深付通2006年上线时有一笔598万的错账,拖了三周才被发现?现在换了块板子砸,漏洞还是那些漏洞。”
598万。三周。
这两个数字他只在内部高管会上提过。三周这个时间点,老齐都不知道——当年平那笔账的,只有他和财务一个人。
发布会结束才六个小时,帖子就出来了。发帖时间比散场还早。引的全是内部数据。
他拨通林若诗的电话。“发帖人的IP查到了吗?”
“正在查。三点前给你答复。”听筒里传来键盘敲击声,键帽落得比平常重,“有一点先说——稿子的措辞太像通稿了。网民写不出这种句式。”
“查完把IP和原文发我。”
“好。”林若诗停了一秒,“发布会很成功。”
“谢谢。”他挂了电话。手机屏幕暗下去,又亮起来。赵凯的短信:“黄立群住凯宾斯基,明天上午约了两个人见面,其中一个,是陈永杰的堂兄。哥,恒达这名字,你眼熟吗?”
恒达。
刘南生盯着那两个字,屏幕的光凉凉地映在脸上。他翻到通讯录后半段,拇指停在一个名字上——周明远。这个号码存了七年,从没拨通过一次。
他翻了身,把手机屏幕朝下扣在窗台上。路灯在夜色里排成一列,亮到看不见尽头。
“周明远。”他低声说,声音在房间里落稳,“二十年了。你又出招了。”