年终奖拿了380块,我照样下班,当晚公司320亿核心数据被攻击,上司打了480个电话,我
第1章
会议室空调开得太足,吹得我后颈发凉。
“徐明,你什么意思?”赵东升把那张工资条拍在会议桌上,指甲盖敲得咚咚响,“三百八,公司亏待你了?”
我没说话,看着那张从财务室窗口飘出来的纸条,上面的数字印得清清楚楚:年终奖,380.00元。
旁边坐着十二个人,有部门主管,有隔壁组过来看热闹的,还有人力资源那个永远涂着大红唇的周莉。没人吭声,都在等我的反应。
“你今年绩效C,年终奖按系数算下来就是这么多。”赵东升把身子往椅背上一靠,两手一摊,“有意见可以提,但别摆脸色。公司有公司的规矩。”
我拿起那张工资条,折了两下,塞进工装裤口袋里。
“没意见。”我说。
赵东升的眉毛挑了一下,显然没料到这个回答。他可能准备了一肚子的话,比如“你看看人家隔壁组的老王”“你要是不满意可以走人”“今年大环境不好你要体谅公司”之类。我没给他机会。
“没意见就散会。”他挥了挥手,像赶一只苍蝇。
我站起来,椅子腿在地板上划出一声短促的尖响。旁边几个同事低着头刷手机,没人看我。周莉翻着手里的文件夹,嘴角带着那种人力资源特有的、训练有素的微笑。
走出会议室的时候,我听见赵东升在后面跟周莉说了一句:“现在的年轻人,给多少都不知足。”
我没回头。
我的工位在靠消防通道那排,挨着打印机。桌上摆着一个马克杯,杯壁上印着公司的LOGO,里面还剩半杯凉透的茶水。我把抽屉里的东西一件件拿出来:一个充电宝,一包没拆封的纸巾,半盒薄荷糖,还有一本记满了服务器IP地址和端口号的黑色笔记本。
旁边工位的孙磊凑过来,压低声音:“明哥,你真不生气?三百八,打发要饭的呢。”
“不生气。”我把笔记本塞进背包夹层。
“赵东升那孙子就是故意的,上个月你拒了他那个破需求……”
“孙磊。”我打断他,“帮我个忙。”
“你说。”
“我桌底下那个机柜钥匙,你帮我交回运维部。就说我放那儿了。”
孙磊愣了一下:“你现在就走?这才四点。”
我把工牌从脖子上摘下来,放在键盘旁边。工牌上的照片还是三年前入职时拍的,那时候头发比现在多,眼神也比现在亮。
“到点了。”我说。
背上包,我往电梯间走。经过赵东升办公室的时候,玻璃墙后面的他正靠在真皮椅子上打电话,笑得很响。行政部的李姐端着咖啡从旁边过,看了我一眼,张了张嘴,又闭上了。
电梯来了。我进去,按下一楼。门合上之前,我最后看了一眼办公区。格子间里的人都趴在自己的工位上,像一排排被晒蔫的庄稼。
走出写字楼的时候,保安老周正在岗亭里听收音机。他探出头来跟我打招呼:“小徐,今天走这么早?”
“嗯,没事了。”
“明天见啊。”
我没接话,往地铁站走。手机在口袋里震了一下,是孙磊发来的微信:“你真把钥匙交了?赵东升刚出来找你,脸色不对。”
我没回。
地铁上人不多,我找了个角落坐下。对面坐着一对母女,小女孩手里攥着一根棒棒糖,舔一口,冲她妈笑一下。我摸出那张工资条,又看了一遍。
三百八。
够加两箱油,或者交半个月水电费,或者请自己吃一顿好点的火锅。但赵东升不知道的是,三天前,我提交了离职申请。系统里已经批了,最后工作日就是今天。
他也不知道,我那个黑色笔记本里记的东西,远不止服务器IP和端口号。
到家的时候天还没黑。出租屋里一股方便面调料包的味道,昨晚上吃的碗还没洗。我把包扔在沙发上,打开冰箱拿了瓶水,坐在电脑前。
屏幕亮起来,邮箱里躺着一封未读邮件。发件人是个乱码地址,主题栏写着:“确认吗?”
我盯着那五个字看了很久。光标在回复框里闪烁。
最后我打了两个字:“确认。”
点了发送。
然后我打开一个加密文件夹,里面整整齐齐码着几十个日志文件,时间跨度从我入职那天到今天。每一个文件都是一份操作记录:什么时候登录了核心数据库,什么时候修改了权限设置,什么时候把某段代码推上了生产环境。
赵东升一直以为我是个技术一般、性格软、让干什么就干什么的普通运维。他错了。运维这个岗位,想搞垮一家公司,根本不需要多高的技术,只需要足够多的耐心。
我建了一个定时任务。
触发时间是今晚十一点整。
做完这些,我关了电脑,去厨房洗了碗,把灶台擦干净,又把阳台上晾了三天的衣服收下来叠好。然后我洗了个澡,换了身干净衣服,坐在沙发上等。
晚上九点四十分,手机响了。
屏幕上跳动的名字是“赵东升”。
我没接。
铃声响了四十七秒,停了。隔了十秒,又响起来。还是赵东升。我按了静音,把手机扣在茶几上。屏幕的光一下一下地亮着,照在天花板上,像某种无声的警报。
十点十五分,手机屏幕上累积了二十三个未接来电。全部来自赵东升。
十点四十分,未接来电数量变成五十一个。
十点五十五分,孙磊发来微信:“明哥你在哪?公司出事了,核心数据库被攻击了,全部锁死!赵东升疯了,到处找你!”
十一点整。我站起身,拿起手机。屏幕上是赵东升的第六十九个来电。
我按下接听键。
“徐明!你在哪!赶紧回公司!”他的声音劈了,背景里一片嘈杂,有人在喊“备份也打不开”,有人在哭。
“赵经理。”我的声音很平静,“我的年终奖是三百八。”
“什么他妈年终奖!你赶紧……”
“三百八十块。”我打断他,“这个数字我记住了。公司三百二十亿的核心数据,我也记住了。”
电话那头突然安静了。
安静了整整五秒。
“你说什么?”赵东升的声音忽然低下来,像从嗓子眼里挤出来的,“你什么意思?”
“没什么意思。”我走到阳台上,晚风灌进来,吹得人很舒服,“我已经下班了。公司的事,跟我没关系。”
“徐明!你他妈……”
我挂了电话。
手机屏幕暗下去。三秒后,又亮起来。第七十个来电。
我关掉手机,把它扔在沙发上。城市的夜景铺在眼前,万家灯火,车流如织。远处那栋写字楼的顶楼还亮着灯,那是赵东升办公室的位置。
我看了很久。
直到那盏灯也灭了。
第2章
我是被敲门声吵醒的。
凌晨两点十七分,出租屋那扇薄木门被人砸得山响。我从沙发上坐起来,脖子僵得发酸,手机还扣在茶几上,拿起来一看,未接来电一百零三个。
“徐明!开门!我知道你在里面!”
赵东升的声音从门缝底下挤进来,嘶哑得像砂纸磨铁皮。我走过去,没急着开,先从猫眼里往外看。走廊灯坏了一盏,昏暗中能看见三个人影,赵东升站最前面,西装外套搭在胳膊上,衬衫领口湿透了,后面跟着两个穿保安服的男人。
我拉开门。
赵东升差点一头栽进来,他扶着门框稳住,抬头看我,眼睛里全是血丝。那件一万多块的衬衫皱得像抹布,领带歪到锁骨下面去了。
“你手机为什么关机?”他声音哑得几乎听不出原来的调,“你知不知道公司出多大事了?”
“知道。”我往后退了一步,让他们进来。两个保安站在门口没动,赵东升自己走进来,环顾了一圈我这间不到四十平的出租屋,目光扫过厨房水槽里昨晚洗好的碗,阳台上叠得整整齐齐的衣服,最后落在我脸上。
“你预谋的。”他说。
“我预谋什么了?”
“数据库。”赵东升往前逼了一步,压低声音,“你定时攻击了公司核心数据库。运维部已经查了,入侵路径是你负责的那台跳板机。”
“赵经理,我六点就下班了。打卡记录你可以去查。”
“你走之前部署了定时任务。”
“证据呢?”
赵东升的嘴唇抖了一下。他当然拿不出证据。我用的那个脚本层层跳转,日志文件全部加密,触发之后自动清除痕迹。就算他们能把服务器恢复,也找不到任何直接指向我的东西。
“徐明。”他的语气忽然软了,那种求人的软,跟他白天在会议室里拍桌子的样子判若两人,“你告诉我,数据到底能不能恢复?备份服务器也被加密了,整个生产环境全瘫了。老板已经知道了,明天早上八点要开董事会。”
“跟我有什么关系?”
赵东升盯着我,像在看一个陌生人。也对,在他眼里我从来就是个透明人。三年了,每次绩效考评都是C,每次涨薪都轮不到我,每次部门聚餐都没人叫。他可能到今天才知道我长什么样。
“你想要什么?”他问。
“我什么都不要。”
“你疯了?”赵东升的音量忽然拔高,“三百二十亿!公司三百二十亿的数据!你知道这意味着什么吗?客户资料、交易记录、清算系统,全部……”
“全部锁死了。”我替他说完,“我知道。”
他喘着粗气,胸口起伏得厉害。门口那两个保安互相看了一眼,其中一个悄悄把警棍往身后藏了藏。
“徐明,你听我说。”赵东升伸出手,想拍我的肩膀,我侧身让开了。他的手悬在半空,尴尬地停了两秒,收回去,“只要你把密钥交出来,年终奖的事咱们重新谈。我给你补,按A级绩效补,翻十倍都行。”
“三百八十块翻十倍是三千八。”
“三万八!我给你申请三万八!”
“赵经理。”我走到厨房,接了杯水,慢慢喝了一口,“公司去年营收多少?”
他愣了一下:“问这个干什么?”
“你猜我知不知道?”
赵东升的脸白了一层。公司去年实际营收比财报上少了一大截,这件事只有总监以上的人知道。但我为什么会知道?因为那台跳板机上跑的数据,我全都看过。
“你到底是谁?”赵东升的声音开始发颤。
“徐明。三年前入职,运维工程师,月薪八千五,年终奖三百八。”我把水杯放在台面上,“对了,还有一件事你可能不知道。上个月你让我做的那个需求,我没拒绝。”
赵东升眼睛猛地瞪大了。
“你说那个需求涉及修改用户表结构,我拒绝了。但实际上我没拒绝,我做了。”我靠在厨房门框上,看着他,“只不过我改的不是用户表,是你名下那套测试环境的权限配置。你应该还没登录过吧?登录一下就知道了。”
赵东升手忙脚乱地掏手机,手指哆嗦着戳了好几次才打开VPN。他盯着屏幕,脸色从白变青,又从青变紫。
“你……你把我所有环境的权限都锁了?”
“对。包括你现在想远程连上去也连不了。你现在手里只有一个能打电话的手机,和两个保安。”
赵东升把手机攥得咯咯响,牙关咬得死紧。沉默持续了将近半分钟,走廊里传来隔壁住户开门骂了一句“大半夜吵什么吵”,又砰地关上了。
“徐明。”赵东升的声音忽然变得异常冷静,那种冷静比他刚才发疯更让人不舒服,“你这么做,把自己也毁了。行业就这么大,信不信我一个电话,全城的互联网公司都不会要你。”
“我信。”
“那你图什么?”
我看着他,忽然想起三年前入职第一天。那天赵东升坐在现在这个位置,翘着二郎腿跟我说:“小徐啊,运维这个岗位,就是公司的看门狗。门看好了,没人记得你。门看丢了,你就是第一条被宰的狗。”
当时我笑了笑,说了声“明白”。
“赵经理。”我走到沙发边坐下,把手机翻过来,屏幕上还是那一百零三个未接来电,“你打了一百多个电话给我,有没有想过一个问题。”
“什么?”
“密钥在哪?”
赵东升愣住了。
“你口口声声让我交密钥,可你怎么知道我手里有密钥?如果真是我攻击的,我完全可以不承认。你上门找我,说明你心里清楚这就是我干的。可你没有证据,报警也拿我没办法。”
赵东升的眼神闪了一下。
“除非……”我慢慢地说,“有人告诉你,密钥在我手里。”
空气凝固了。赵东升脸上那种伪装的冷静终于裂开一道缝,他的瞳孔猛地缩了一下,随即强迫自己恢复原状,但已经晚了。
我看见了。
“谁告诉你的?”我问。
“没人告诉我。”他回答得太快了。
“那你来干什么?”
赵东升张了张嘴,没发出声音。他身后的两个保安开始不自在了,高个子那个掏出手机看了一眼,然后凑到赵东升耳边说了句什么。赵东升的脸色彻底变了。
“你走吧。”我站起来,“天快亮了,你还有董事会要开。”
“徐明……”
“门在那边。”
赵东升站在原地,胸膛剧烈起伏。有那么一瞬间我以为他会扑上来,但他没有。他最后看了我一眼,那眼神里有恨,有恐惧,还有一丝我读不懂的东西。
然后他转身走了。两个保安跟在后面,走廊里脚步声渐渐远去。
我关上门,上了锁。
回到沙发上,我捡起手机。屏幕上有条孙磊半小时前发来的短信,之前一直没注意看。
“明哥,赵东升在查你的入职档案,他发现了一件事。你的紧急联系人填的是谁,你自己还记得吗?”
我盯着这条短信看了很久。
紧急联系人。三年前入职的时候,HR让我填一栏“紧急联系人”,我填了一个名字和一个号码。
那个号码我从来没打过。那个名字我快三年没叫过了。
我打开通讯录,翻到“E”开头那一栏。没有。又翻到“L”,也没有。最后在“Z”下面找到了。
周莉。
人力资源部那个涂着大红唇的周莉。
我的前妻。
第3章
我没去。
早上八点,我坐在街角那家兰州拉面馆里,点了一碗毛细,加了个茶蛋。店里只有我一个客人,老板在后厨摔面团,啪啪的响声隔着帘子传出来。
手机放在桌面上,屏幕朝上。七点五十九分的时候,孙磊发来一张照片,会议室的落地玻璃后面坐满了人,长桌尽头那个位置空着。八点零三分,孙磊又发来一条:“赵东升进去了,脸色跟死人一样。”
我掰开筷子,挑了一筷子面。
八点十七分,手机响了。周莉。
我嚼完嘴里的面,擦了擦嘴,接了。
“你在哪?”她的声音跟三年前一模一样,干脆利落,每个字都像用裁纸刀切过的。
“吃面。”
“地址。”
“你找不到。”
沉默了两秒。我听见电话那头有人在喊“周总”,背景音里有投影仪的嗡嗡声。
“徐明,董事会已经开了。赵东升把昨晚的事全说了,但他拿不出任何证据。现在的情况是,公司三百二十亿的数据被锁,每过一小时损失按千万计。法务部要报警,但老板压着没让。”
“为什么压着?”
“因为赵东升说了一句话。”周莉的声音低了下去,像是走到了会议室外面,“他说,密钥在你手里。”
我把最后一口茶蛋塞进嘴里,慢慢嚼。
“周莉。”我说,“三年前离婚的时候,你跟我说过一句话,还记得吗?”
电话那头安静了。
“你说,‘徐明,你这辈子最大的问题就是太能忍。忍到最后没人记得你忍过什么。’”
“我没说错。”她的语气没变,但我听见她呼吸重了一拍。
“你是没说错。”我把筷子放下,“所以我不忍了。”
“你知不知道你在干什么?这不是你一个人的事……”
“周莉。”我打断她,“三年前我为什么从上一家公司离职?”
她又沉默了。这次沉默更久,久到我以为她挂了。拉面馆老板从后厨探出头来看了我一眼,又缩回去了。
“因为你不肯背锅。”她终于开口。
“对。那家公司数据泄露,明明不是我操作的,但赵东升让我签事故责任书。我没签。所以三年前我失业了,然后你跟我离了婚。”
“徐明,那件事……”
“然后我来了这家公司。入职第一天,赵东升跟我说,运维就是看门狗。我忍了三年。三年里我看着他拿我的方案去邀功,看着他把我做的系统说成是他带队开发的,看着他把我的绩效打到C,年终奖三百八。”
我站起来,扫码付了面钱。
“周莉,你今天是代表公司跟我谈,还是代表你自己?”
电话那头又是一阵沉默。我推开面馆的门,外面阳光很好,街边的梧桐树开始掉叶子了。
“董事会让我问你,要什么条件。”她的声音又恢复了那种公事公办的腔调。
“条件?”我沿着人行道往北走,“你让赵东升自己来跟我谈。”
“他不敢见你。”
“那就让老板来。”
“老板在国外。”
“那就让数据继续锁着。”
我挂了电话。
走到路口的时候,手机又响了。这次是个陌生号码,本地座机。我接了。
“徐明先生吗?这里是城东派出所。”
我站住了。
“有人报案称你涉嫌破坏计算机信息系统,请你来所里配合调查。”
“谁报的案?”
“对方自称是你们公司法务。”
我回头看了一眼拉面馆的方向,又看了看手里已经挂断的电话。周莉说老板压着不让报警,法务却自己报了。
“好。”我说,“我过来。”
派出所离得不远,走路十分钟。接待我的是个三十出头的民警,姓刘,说话挺客气,给我倒了杯水。问话室里只有我们俩,桌上摆着一台执法记录仪,红灯一闪一闪的。
“徐先生,你们公司法务说,你恶意攻击公司核心数据库,造成重大损失。有没有这回事?”
“没有。”
“那为什么他们指名道姓说是你?”
“因为年终奖给我发了三百八。”
刘警官手里的笔顿了一下。他抬头看我,我也看他。执法记录仪的红灯跳了两下。
“三百八?”
“三百八十块。整。”
他沉默了一会儿,把笔放下。“你说说,怎么回事?”
我把事情从头讲了一遍。三年怎么忍的,赵东升怎么抢功的,绩效怎么被打C的,年终奖怎么变成三百八的。刘警官偶尔插一句问细节,大部分时候在听。
“所以你没攻击数据库?”
“我没攻击。”我盯着他的眼睛,“但我确实部署了一个定时任务。”
刘警官手里的笔停了。
“什么任务?”
“一个数据完整性校验任务。检测到非授权访问时,自动锁定数据库。这是正常的运维安全措施,我作为运维工程师有权部署。至于锁定之后怎么解锁,那是另一回事。”
“解锁密钥在你手里?”
“不在。”
“在哪?”
“在赵东升手里。”我把水杯放下,“昨晚他去我家,亲口承认有人告诉他密钥在我手里。我问他谁说的,他没回答。但我知道是谁。”
刘警官往后靠了靠,椅子发出吱呀一声。
“谁?”
“周莉。人力资源总监,我的前妻。”我说,“三年前我还在上一家公司的时候,那家公司的数据库也出过类似的事。当时赵东升是项目经理,周莉是HRBP。事故责任书是他们俩一起逼我签的。”
问话室里安静得能听见走廊尽头有人在打电话。
“所以你的意思是……”
“我的意思是,赵东升手里有密钥,周莉也知道这件事。他们俩报的案,但他们不敢让警察查到密钥在哪,因为一旦查出来,三年前那件事也会跟着浮出来。”
刘警官盯着我看了很久。
“你有什么证据?”
“三年前那家公司的服务器日志,我备份了一份。存在一个加密U盘里。”
“在哪?”
“我家微波炉后面。”
刘警官的嘴角动了一下,不知道是想笑还是什么。他站起来,跟旁边监视器后面的同事交换了一个眼神,然后拿起电话拨了个号码。
“喂,李队,你过来一下。这个案子有点意思。”
他挂了电话,转回来看着我。
“徐先生,你先坐一会儿。等一下可能还得请你配合我们做个详细的笔录。”
“可以。”我说,“但我有个条件。”
“你说。”
“我要打个电话。”
“打给谁?”
“赵东升。”
刘警官想了想,点了头。
我拿出手机,拨了赵东升的号码。响了一声就接了,快得像是他一直攥着手机在等。
“赵经理。”我的声音很平静,“我在城东派出所。”
电话那头传来椅子倒地的闷响。
“你……你报警了?”
“你们法务报的。”
“什么?”赵东升的声音又尖又高,“谁让他们报的?我没让……”
“赵东升。”我打断他,“你听好。我给你两个小时。两小时之内,你到派出所来,当着警察的面把三年前的事说清楚。说不清楚也行,把你手里的密钥交出来,把数据库解锁了。”
“我没有密钥!”
“那你就来派出所,跟警察说清楚,谁告诉你密钥在我手里的。”
“徐明,你这是在讹诈……”
“两小时。过时不候。”
我挂了电话。
刘警官在旁边全程听着,脸上的表情很微妙。他把执法记录仪的角度调了调,然后坐回椅子上。
“你觉得他会来?”
“他会的。”我靠在椅背上,第一次觉得这间派出所的椅子比公司那把人体工学椅舒服多了,“因为他比谁都清楚,数据库如果真的瘫了,第一个坐牢的不是我。”
刘警官没接话,低头在本子上写了几个字。
走廊尽头那扇门忽然开了,脚步声由远及近。我抬起头,看见一个穿灰色西装的女人站在门口,手里拎着一只黑色的公文包,涂着大红唇。
周莉。
她看了我一眼,然后转向刘警官:“警官,我是公司法务代表。我要见我的当事人。”
刘警官看了看她,又看了看我。
“你的当事人是谁?”
“赵东升。”周莉说。
我笑了一下。周莉的目光扫过来,像一把刀。
“徐明,”她说,“你最好想清楚。有些事,做了就回不了头。”
“我早就想清楚了。”我看着她,“从你签离婚协议那天,我就想清楚了。”
走廊里传来急促的脚步声,越来越近。门被猛地推开,赵东升站在门口,衬衫还是昨晚那件,脸上的胡茬冒了一层青。他看见周莉,又看见我,最后看见刘警官桌上的执法记录仪。
“我……”他喘着气,“我来自首。”
周莉的脸色变了。
第4章
周莉的手从公文包里抽出来的时候,什么都没拿。
她只是把包放在桌上,拉链敞着,然后退后一步,抱着胳膊靠在墙上。那个动作太熟练了,像是演练过无数遍。刘警官的手从对讲机上松开了,但他没坐下。
“都坐吧。”他说。
赵东升没坐。他站在那里,两只手垂着,U盘已经交出去了,像是被人抽掉了骨头。周莉靠着墙,涂着红唇的嘴抿成一条线。我坐在原来的位置上,看着他们两个。
“谁先说?”刘警官把执法记录仪往桌子中间推了推。
赵东升看了周莉一眼。周莉没看他。
“三年前,”赵东升的声音沙哑,像是在砂纸上磨过,“三年前我在上一家公司做项目经理,周莉是HRBP。徐明是运维主管。”
刘警官在本子上记了一笔。
“那年出了个数据泄露事故。客户的交易记录被人扒了,挂在暗网上卖。公司要追责,得有人签字。”赵东升舔了一下嘴唇,“事故实际上是因为我们用了第三方开源组件,那组件有漏洞。但那个组件是我拍板用的。”
“所以你就让徐明签事故责任书。”刘警官说。
“是周莉提议的。”赵东升忽然抬起头,看着墙边的周莉,“她说徐明性格软,好说话,让他背这个锅,公司这边我来摆平。给他一笔补偿,让他走人。”
周莉的表情没变,但她抱着胳膊的手指收紧了一点。
“徐明没签。”赵东升接着说,“他不但没签,还把他手里的服务器日志做了备份。那日志里清清楚楚记着我什么时候推的代码,什么时候改的配置。如果那份日志交出去,走的就不是他,是我。”
刘警官转向周莉:“他说的是事实吗?”
周莉从墙上直起身来,走到桌边,拉开椅子坐下。她动作很稳,但我注意到她拿包的时候手指顿了一下。
“是事实。”她说,“但事实不止这一面。赵东升当时拿了我一份把柄,逼我配合他。他说如果我不同意,就把我经手过的另一件事捅出去。”
“什么事?”
周莉的嘴唇抿紧了。她看了我一眼。
“徐明,”她说,“你记得我们离婚前半年,我忽然升了总监吗?”
我记得。那半年她几乎不回家,天天加班到凌晨,回来倒头就睡。我问她怎么了,她只说项目忙。后来忽然就升了,工资翻了一倍,然后她跟我提了离婚。
“那次升职,是因为我替公司签了一份虚假的员工离职补偿协议。”周莉说,“赵东升当时是HRBP,他经手的。我签了字,他就拿这个威胁我。”
刘警官的笔停了一下。
“你们这家公司,人事关系挺复杂。”
“警官。”赵东升忽然开口,“我现在说的每一句话都是真的。三年前的事我认,该我担的责任我担。但昨晚数据库的事,不是我干的。我承认我拿了密钥,但我没锁数据库。”
刘警官看向我。
我从口袋里掏出手机,打开一个邮件页面,推到桌子中间。
“这是昨晚十一点整,我邮箱收到的自动转发邮件。来自数据库审计系统。上面记录了锁定操作的完整日志,包括操作者的IP和登录凭证。”
刘警官拿起来看。
“登录账号是赵东升的。IP是他家宽带。”我靠回椅背,“也就是说,昨晚十一点,有人用赵东升的账号从他家里登录了数据库,触发了锁定机制。”
赵东升的脸白了。
“不可能!我昨晚在你家!”
“你几点到我家?”
“两点多……”
“那就对了。”我说,“锁定发生在十一点。十一点到两点之间,你的账号从你家登录了三次。第一次尝试失败,第二次尝试失败,第三次触发了我预设的完整性校验,数据库自动锁定。”
赵东升张着嘴,看看我,又看看周莉。
“是你。”他猛地转向周莉,“你昨晚去过我家。你知道我习惯把备用钥匙放在门口花盆底下。”
周莉没说话,但她的脸也白了。
“警官。”我说,“我部署的那个完整性校验任务,本来只是个安全措施。只要没人用赵东升的账号去碰数据库核心表,它永远不会触发。但昨晚有人碰了。”
刘警官看看赵东升,又看看周莉。
“周女士,昨晚你在哪?”
周莉沉默了很久。然后她拉开公文包,从里面拿出一个信封,放在桌上。
“这是我昨晚从赵东升家拿到的。他藏了三年的东西。”她把信封推到刘警官面前,“里面是三年前那件事的完整证据,包括赵东升跟第三方组件供应商之间的回扣记录。”
赵东升猛地站起来,椅子被带倒在地。
“周莉!你他妈——”
“坐下。”刘警官的声音不大,但赵东升像被按了暂停键,僵在那里。
“我本来不想拿出来。”周莉的声音很平,“但今天早上董事会,老板说了一句话。他说,这次的事,不管是谁干的,只要把数据恢复,既往不咎。我一听就知道,他又想和稀泥。”
她转过头看着我。
“徐明。三年前我没站出来,三年后我再不站出来,我自己都看不起自己。”
我看着她,没说话。
刘警官打开信封,抽出几张打印件看了几眼,然后拿起对讲机:“李队,你过来一下。案子有重大进展。”
赵东升慢慢坐回椅子上,两手抱着头。周莉还是坐在那里,公文包敞着,大红唇在日光灯下显得格外刺眼。
走廊里传来脚步声。刘警官站起来开门,一个穿便衣的中年男人走进来,跟刘警官低声说了几句。然后便衣走到赵东升面前:“赵东升先生,请你跟我们到隔壁做一份详细笔录。”
赵东升站起来,像一摊泥被人从椅子上扶起来。经过周莉身边的时候,他停了一下。
“你早就算好了。”他的声音很轻,“从一开始,你接近我就是为了拿这些东西。”
周莉没抬头。
赵东升被带走了。便衣又走到周莉面前:“周女士,也麻烦你。”
周莉站起来,拿起公文包,走到门口,回头看了我一眼。
“徐明。”她说,“数据库的密钥,在赵东升家书房第二个抽屉夹层里。我昨晚看到了。”
然后她走了。
问话室里只剩我和刘警官。他坐回椅子上,长长地呼了口气,揉了揉后颈。
“你这个案子,”他说,“是我干这行十二年见过最绕的。”
“抱歉。”
“别道歉。”刘警官摆摆手,“你那个U盘,微波炉后面的,回头让人去取一下。还有,数据库的事你确实没直接动手,但那个定时任务是你部署的,严格来说……”
“我明白。”我说,“该我承担的部分,我承担。”
刘警官看了我一眼,没再说什么。他站起来给我倒了杯水,放在桌上。
“你先在这儿坐会儿。等那边笔录做完,可能还需要你补充一些情况。”
我点点头。他出去了,顺手带上了门。
问话室里只剩我一个人。执法记录仪的红灯还在闪,桌上那杯水冒着热气。我拿起手机,屏幕上有一条未读微信,来自孙磊。
“明哥!数据库恢复了!凌晨四点的时候自动解锁了!客户数据一条没丢!你在哪?”
我回了两个字:“派出所。”
孙磊秒回:“????”
我把手机放下,靠在椅背上。天花板上日光灯嗡嗡响着,外面的阳光从百叶窗缝隙里挤进来,一条一条落在桌面上。
我忽然想起来,今天是离职后的第一天。
第5章
陆广年坐下的动作很慢。
紫檀拐杖靠在桌边,他两只手叠在拐杖头上,花白的头发梳得一丝不乱。刘警官给他倒了杯水,他点头道了声谢,然后转过来看我。
“小徐。”他的声音很轻,带着那种上了年纪的人特有的沙哑,“我今早刚从旧金山飞回来。飞机上看了赵东升和周莉的笔录。”
我没说话,等他继续。
“三年前的事,我不知道。”他说这话的时候眼睛没眨,“你信吗?”
“信不信不重要。”我说,“您今天来,是想让我做什么?”
陆广年笑了一下,笑纹从眼角漾开,但眼神没变。他打开随身带的一个牛皮纸袋,从里面抽出一张纸,推到我面前。
是一份任命书。
上面写着我的名字,职位是技术运营中心总监,直接向董事长汇报。生效日期是今天。
“赵东升的位置。”他说,“他被带走之后,那个位置空出来了。”
我看了一眼那张纸,没拿。
“陆董,我刚从公司离职。准确地说,昨天下午六点,我的离职已经生效了。”
“我知道。”陆广年端起水杯,没喝,只是捧着暖手,“所以我不是以董事长的身份来跟你谈的。”
“那您是以什么身份?”
“以一个老头的身份。”他放下杯子,“我今年七十三了,这家公司是我四十五岁那年创立的。三百二十亿的数据,是我这二十八年攒下来的家底。昨晚差点全没了。”
我看着他,没接话。
“赵东升的事,周莉的事,都是你的私事。我不掺和。”陆广年往前倾了倾身子,“但数据库的事,是你给我兜住的。我看了审计日志,你那个完整性校验任务,触发之后只做了三件事:锁定数据库、自动备份、给管理邮箱发告警。一条数据都没删,一个漏洞都没留。”
“我本来就没打算毁公司。”我说,“只打算毁赵东升。”
“我知道。”陆广年点点头,“所以我才来。”
他从牛皮纸袋里又抽出一张纸。这次是一张支票,数额我看了一眼,没仔细数零。
“这是补偿。不是年终奖,是奖金。你应得的那份。”他把支票放在任命书旁边,“但我今天来,不是想用钱买你回来。”
“那您想干什么?”
陆广年沉默了一会儿。窗外的阳光移动了,百叶窗的影子从他脸上挪开,照出他眼底一层灰色。
“我想问你一句话。”他说,“你昨晚坐在家里等电话的时候,心里什么感觉?”
这个问题我没准备好。
我盯着他看了很久。日光灯嗡嗡响着,执法记录仪的红灯还在闪。刘警官不知道什么时候出去了,问话室里只剩我们两个人。
“没什么感觉。”我最后说。
“不对。”陆广年摇摇头,“你有。”
我没说话。
“小徐,我活了七十三年,见过很多人。”他把拐杖从桌边拿起来,握在手里,杖头的紫檀被磨得发亮,“人在做极端决定之前,一定有一个瞬间,心里某个东西断了。我就想问你,那个瞬间是什么时候?”
我想了很久。
三年了。从签下那份离职协议那天起,从周莉把离婚协议书放在桌上的那晚起,从入职新公司第一天赵东升跟我说“运维就是看门狗”那一刻起。每一天都在往一个方向走,像水往低处流,没什么特别的瞬间。
直到昨天下午。
“昨天下午。”我说,“财务把工资条从窗口递出来。赵东升当着十二个人的面问我什么意思。我说没意见。他说‘现在的年轻人,给多少都不知足’。”
陆广年看着我。
“那个瞬间,”我说,“我把工资条折起来放进口袋,心里有个声音说,行了,够了。”
“所以你什么都没做。”
“对。我什么都没做。我收拾东西,打卡下班,坐地铁回家。然后晚上十一点,定时任务触发了。”
陆广年把拐杖靠在桌边,站起来。他个子不高,中山装有点松垮,但站得很直。
“小徐,你的那个‘什么都没做’,值三百二十亿。”他伸出手,“我请你回来。不是当看门狗,是当合伙人。”
我没伸手。
“陆董,有个问题。”
“你说。”
“三年前那家公司的事,您真的不知道吗?”
陆广年的手悬在半空。
“那家公司的投资人,是您的老朋友。事故之后,赵东升从项目经理升到了总监,是您批的。”我看着他的眼睛,“您可以不知道细节,但您不可能什么都不知道。”
陆广年的手慢慢收回去,按在拐杖头上。
“你说得对。”他说,“我听说过一些,但没深究。那时候公司正在冲上市,我不想节外生枝。”
“所以赵东升才敢一而再再而三。”
“是。”陆广年承认得很干脆,“所以我今天来了。”
他把任命书和支票收回牛皮纸袋,放在桌上,然后从口袋里掏出一张名片,压在纸袋上面。
“我不逼你。你考虑三天。三天之内给我答复,什么时候都行。”他拿起拐杖,往门口走了两步,停下来,“对了,周莉那边的笔录做完了。她让我带句话。”
“什么话?”
“她说,‘你跟三年前不一样了。’”
陆广年走了。拐杖敲在地砖上的声音一下一下远去,走廊里有人跟他打招呼,他嗯了一声,然后安静了。
我一个人坐在问话室里。
桌上放着那个牛皮纸袋和一张名片。名片很简单,白底黑字,只有名字和一个手机号。没有头衔,没有公司LOGO。
我把纸袋打开,抽出任命书又看了一遍。技术运营中心总监。直接向董事长汇报。
底下压着的那张支票,我数了数零。七位数。
我把东西放回去,纸袋折好,放在桌上。然后我掏出手机,屏幕上有一条新微信,周莉发的。
“我在派出所门口。你有空吗?”
我回了两个字:“等着。”
走出问话室的时候,刘警官正在走廊尽头跟同事说话。他看见我,招了招手。
“笔录做完了。赵东升那边,涉嫌职务侵占和商业贿赂,已经移交经侦。周莉那边,她主动提供了证据,配合调查,暂时不予追究。”
“谢谢。”
“别谢我。”刘警官笑了一下,“你小子运气好。下次再有这种事,直接报警,别自己搞定时任务。”
“记住了。”
出了派出所大门,阳光晃得我眯了一下眼。台阶下面停着一辆白色沃尔沃,周莉靠在车门上,换了一件米色的风衣,口红补过了,还是那种红。
我走下去,站在她面前。
“说吧。”
周莉看着我,眼神跟以前不一样了。以前她看我的时候总带着一种审视,像在看一份需要判断真伪的文件。现在她的眼神里多了一点别的东西。
“赵东升的事,我配合调查了。他名下那套测试环境的权限配置,我交出去了。三年前的证据,我也交了。”她说,“该我还的,我还了。”
“嗯。”
“徐明。”她叫了我一声,然后停住了。风吹过来,卷起一片梧桐叶在脚边打了个旋。
“还有事吗?”
“你昨晚为什么没去董事会?”
“不想去。”
“你知道董事会如果决定报警抓你,你现在就在看守所里。”
“你不会让他们报警的。”我说。
周莉的睫毛颤了一下。
“你凭什么这么肯定?”
“因为你昨晚去了赵东升家。你知道他在哪儿藏东西,你知道他备用钥匙放哪儿。你做了这些事,就不可能让我进去。”
周莉盯着我看了很久。风把她的风衣下摆吹起来又落下。
“徐明。”她说,“我当初跟你离婚,是因为我觉得你这辈子就这样了。忍气吞声,逆来顺受,被人踩在脚底下还笑着说没事。”
“现在呢?”
“现在……”她抬起手,把被风吹乱的头发别到耳后,“现在我觉得我看错了。”
我没说话。
“但看错了不代表什么。”她拉开车门,“你三天后要给陆广年答复。不管你回不回去,有件事我得先跟你说清楚。”
“什么?”
“赵东升不是一个人。他背后还有人,公司里还有人。三年前的事,不只他一个。”
她坐进车里,发动引擎。车窗降下来,她最后看了我一眼。
“你要是回去,小心点。”
白色沃尔沃汇入车流,很快消失在路口拐角。
我站在派出所门口,手里攥着那张白底黑字的名片。阳光落在上面,陆广年的名字被照得发亮。
手机又响了。孙磊打来的。
“明哥!你在哪?公司现在乱成一锅粥了!赵东升被警察带走了,周总也不见了,陆董刚发了全员邮件说要重大人事调整!你知不知道——”
“孙磊。”我打断他。
“啊?”
“今晚有空吗?”
“啊?有……有啊。”
“帮我个忙。去我家微波炉后面拿个东西。”
第6章
三天后。
我没回公司。
陆广年那间办公室在写字楼顶层,落地窗正对着城市中轴线,能看见整条长安街从东到西铺开。他坐在那张宽大的红木桌子后面,手里摩挲着紫檀拐杖头,听完我的答复,沉默了很久。
“想好了?”
“想好了。”
“那你今天来干什么?”
“来告诉您一件事。”我把那个牛皮纸袋放在桌上,没碰里面的任命书和支票,“赵东升背后还有人,您知道是谁。”
陆广年的手指停住了。
“周莉告诉你的?”
“不用她告诉。”我拉开他对面的椅子坐下,“三年前那家公司,我走的时候备份了一份服务器日志。那日志里有一条操作记录,来自一个非本公司账号。IP地址指向您这家公司的内网。”
陆广年的眼神动了一下。
“那条记录的时间,是数据泄露发生前三天。”我看着他,“也就是说,三年前那件事,不是赵东升一个人做的。有人先在我们公司埋了雷,然后赵东升配合引爆。事后赵东升升了总监,那个人拿到了他想要的客户数据。”
陆广年把拐杖靠在桌边,两只手平放在桌面上。
“谁?”
“您身边那个从上一家公司跟您过来的老人。”我说,“技术顾问,陈伯年。”
陆广年的瞳孔缩了一下。
陈伯年。七十三岁,跟陆广年一起创业的元老,公司技术委员会名誉主席,三年前从上一家公司退休后被陆广年请过来当顾问。每周来公司半天,坐在陆广年办公室隔壁那间小会议室里,喝茶,看报,偶尔给年轻人讲讲当年。
“你怎么查到的?”
“孙磊帮我查的。”我说,“我来公司三年,运维权限在我手里。陈伯年每周来公司那天,他的笔记本连的是访客WiFi,但访客WiFi的日志归我管。我查了他这三年每次来公司那天的网络活动。”
我从口袋里掏出一个U盘,放在牛皮纸袋上面。
“这里面是陈伯年三年的访客WiFi日志。其中一百四十七次访问记录,指向公司核心数据库的备用端口。那个端口只有总监级以上的人知道。”
陆广年没动。他的目光落在那个U盘上,很久没移开。
“小徐。”他终于开口,声音比之前更哑了,“你知不知道陈伯年是我什么人?”
“知道。您妻弟。”
陆广年闭上眼睛。
窗外的阳光照进来,落在他脸上,那些皱纹一条一条的,像被刀刻进去的。他七十三了,这家公司是他四十五岁那年创立的。二十八年前,他跟陈伯年两个人,在一间租来的民房里写出了第一版代码。
“三年前,”陆广年的声音很低,“上一家公司那件事,我收到过一份匿名邮件。邮件里说数据泄露是内部人干的,让我查。我没查。”
“为什么?”
“因为那封邮件落款是赵东升。我当时觉得他在推卸责任。”陆广年睁开眼,“现在想想,那封邮件可能是真的。赵东升推的是陈伯年,不是他自己。”
我没说话。
陆广年站起来,走到落地窗前。他的背影在整面玻璃上投下一个灰暗的轮廓,外面是这座城市的天际线,高楼大厦一层一层铺向远方。
“陈伯年现在在隔壁。”他说,“每周三上午来公司,雷打不动。今天正好是周三。”
“我知道。”
“你想怎么办?”
“不怎么办。”我站起来,“证据我交给您。怎么处理是您的事。”
陆广年转过身,看着我。
“你查了三年,布局了三个月,昨天让孙磊去你家取U盘,今天来我办公室摊牌。现在你把东西放下就走?”
“对。”
“为什么?”
“因为三百二十亿的数据我保住了,赵东升进去了,三年前的事翻出来了。我要的东西都有了。”我走到门口,停了一下,“剩下的,是您的事。您七十三了,该自己做个决断了。”
我拉开门。
走廊尽头那间小会议室的门开着,陈伯年坐在里面,面前摆着一杯茶,手里拿着一份报纸。他听见门响,抬起头来看了我一眼。花白头发,圆框眼镜,穿一件灰色开衫,看起来就是个普通的退休老人。
我朝他点了点头。
他也点了点头,然后低头继续看报。
我走进电梯,按下一楼。门合上之前,我最后看了一眼走廊尽头。陆广年站在办公室门口,紫檀拐杖握在手里,目送着电梯门关上。
走出写字楼的时候,保安老周还在岗亭里听收音机。他看见我,探出头来:“小徐,今天来办事啊?”
“嗯,办完了。”
“明天见啊。”
“明天见。”
我往地铁站走。手机在口袋里震了一下,是孙磊。
“明哥,陆董刚才发了全员邮件。陈伯年辞去所有职务,即日生效。另外新设了一个技术安全委员会,直接向董事会汇报,负责全公司的数据安全审计。你猜主任是谁?”
我没回。
又震了一下。
“是你。陆董让你下周一报到。薪资翻了三倍,另外给了期权。”
我把手机揣回口袋,没回。
地铁站入口的风灌上来,带着地下通道特有的凉意。我站在台阶上,回头看了一眼那栋写字楼。顶层那排落地窗反射着下午的阳光,明晃晃的,看不清里面。
三天前我从这里走出去的时候,口袋里揣着一张三百八十块的工资条。
今天再站在这里,口袋里什么都没有。
我转身往地铁站里走。进闸机的时候,手机又响了。周莉。
“陆广年给我打电话了。”她说,“陈伯年的事,他跟我讲了。”
“嗯。”
“徐明。”
“嗯?”
“你当初要是这样,我们不会离婚。”
地铁从远处驶来,轰隆隆的声音灌满整个通道。我把手机贴紧耳朵。
“周莉。”
“嗯?”
“没有当初。”
电话那头沉默了几秒。然后她笑了一下,很轻,像风吹过树叶。
“你说得对。没有当初。”她顿了顿,“晚上有空吗?我请你吃饭。”
地铁进站了,车门在我面前打开。
“有。”
一年后。
公司搬了新的写字楼,技术安全委员会独立成部,直接向董事会汇报。我手底下管着四十多号人,负责全公司的数据安全审计和风险控制。孙磊被我调过来当了副手,天天跟我抱怨加班太多。
赵东升的案子判了,职务侵占和商业贿赂,七年。陈伯年没被起诉,陆广年把他送去了海南养老,每个月去看他一次。
周莉那顿饭吃了三个小时,之后我们又吃了几次。半年后她搬进了我的新公寓,离公司步行十五分钟。没有复婚,她说那样挺好,不用再填什么紧急联系人。
陆广年半退了,董事长位置让给了职业经理人,自己留了个顾问头衔,每周来公司一天,在我办公室隔壁那间小会议室喝茶看报。他有时候会隔着玻璃看我开会,看完也不说什么,拄着拐杖走了。
有天晚上加班到很晚,我站在落地窗前。这间办公室的窗户朝北,看不见长安街,但能看见整个园区的灯火。周莉推门进来,手里拎着两盒盒饭。
“还不走?”
“马上。”
她把盒饭放在桌上,走到我旁边,顺着我的目光往外看。园区里最后一班班车正缓缓驶出大门,车灯在地面上拉出两道长长的光。
“想什么呢?”她问。
“想去年这个时候。”
“三百八?”
“嗯。”
周莉打开盒饭,递给我一双筷子。
“徐明。”
“嗯?”
“你后来查过没有,那三百八到底怎么算出来的?”
我接过筷子,夹了一块红烧肉塞进嘴里,慢慢嚼完。
“查过。财务说赵东升特意交代的,按最低系数算,再扣掉一笔莫须有的‘绩效整改金’。”
周莉筷子顿了一下。
“你早知道?”
“知道。”
“那你还忍了三年?”
我把盒饭盖子掀开,又夹了一筷子米饭。窗外最后一盏办公室的灯灭了,园区彻底暗下来,只剩路灯还亮着,一排一排铺向远处。
“周莉。”我说,“有些事,忍的时候觉得是在忍别人。后来才知道,忍的是自己。”
她看着我,没说话。盒饭的热气在我们之间升起来,模糊了彼此的轮廓。
“吃饭吧。”我说。
她低下头,开始吃饭。窗外起风了,梧桐树的影子在地面上晃来晃去,像水里的墨。我吃了两口,忽然想起一年前那个晚上,我坐在出租屋的沙发上等赵东升的电话。那天晚上我洗了碗,擦了灶台,叠了衣服,然后坐在黑暗里,看着手机屏幕一下一下亮起来。
那时候我什么都没想。
只是觉得,该结束了。