科尔多瓦推开消防楼梯的门,冲进联邦大楼侧面的停车场。她的车还停在昨天下午的位置,挡风玻璃上落了一层薄薄的灰。她拉开车门坐进去,发动引擎,轮胎在柏油路面上擦出一声尖啸。她一边把车开出停车场,一边拨通了圣安妮之家隔壁那家医院的电话——她在母亲住院时保存过护士站的直拨号码。响了三声,接起来的是一个年轻的女声:“圣安德鲁康复中心,您好。”
“我是艾琳·科尔多瓦,三楼西区病房家属。请你立刻确认我母亲的病房供电是否正常,以及备用发电机是否在线。如果看到任何异常电压波动或照明闪烁,马上把病人转移到手动通风区域。”
电话那头停顿了两秒,然后护士的声音变得急促了一些:“我刚刚看到走廊的灯闪了两下……我马上过去看。”
科尔多瓦挂了电话,踩下油门。车穿过阿什兰市中心午后的街道,红灯在她面前亮起,她没有停,从左侧车道绕了过去。她的手机放在副驾驶座上,屏幕亮着,蒂娜的短信停留在那行字上——“南港激活了”。她用手指划了一下屏幕,打开蒂娜随后发来的第二条消息,是一段简短的技术描述:“激活源不是南港设备本身,是水利局旧服务器内部的定时继电器。触发时间设置为今天下午三点整,同步触发条件似乎是某条外部消息——可能是一条新闻推送或法律裁决的公布。”
三点整。科尔多瓦看了一眼仪表盘上的时钟——下午两点五十四分。还有六分钟。她不知道这个定时继电器是和什么外部信号同步的,但她知道自己在六分钟内赶到圣安德鲁康复中心的距离是四英里,按现在这个速度她大约需要四分钟。她有将近两分钟的余量。
她把车拐上通往东区的主干道,路面变窄,两旁的树影快速掠过头顶。她在两点五十七分把车停在康复中心急诊入口的消防通道上,没有熄火,直接从驾驶座跳下来,冲进旋转门。大厅里的保安朝她喊了一句什么,她没有听清,径直跑向消防楼梯,一口气冲到三楼。走廊里的灯已经变得很不稳定——日光灯在亮和暗之间快速切换,每隔一两秒就轻微地闪一下,像是一根电线在反复接触和分离。
她跑到母亲病房门前,推开门。护士正站在床头,手里攥着一台便携式血氧仪,看到科尔多瓦进来,语速很快地说:“呼吸机还在运行,但电压不稳。我们已经准备了一台手动复苏气囊,正在隔壁病房取备用电池组。”
科尔多瓦看了一眼病床上的母亲——老人闭着眼睛,呼吸均匀,呼吸机的气囊正在有节奏地起伏。她的心稍微落下了一拍,但她知道这只是暂时的。如果供电完全切断,备用发电机的切换响应时间大约是二十秒,而那二十秒里呼吸机会停止工作。
她低头看了一眼手机——下午两点五十九分。她走出病房,在走廊里拨通了蒂娜的电话:“继电器触发的外部同步信号是什么?能不能反制?”
蒂娜的声音在电话里断断续续,像是信号不稳定:“我还在解析……我看到触发条件是一个HTTP请求,目标地址是旧服务器的维护网关,请求的URL里包含一个时间戳。那个时间戳和今天下午三点某个公开事件的公告时间完全一致……我正在查那个事件是什么……”
科尔多瓦靠在走廊的墙壁上,看着走廊尽头那盏正在疯狂闪烁的日光灯,忽然想到了一件事——今天下午三点,联邦最高法院会公布几项判决。她之前在自己的案件追踪日历上标记过,其中一项是关于人身保护令的第二次申请程序界限的判决。那件案子的当事人姓里弗斯,和她调查的这份网络攻击没有表面上的关联,但里弗斯和维加在同一个监狱的C区里。
电话里传来蒂娜的一声吸气:“找到了。那个URL里嵌入的时间戳对应的是最高法院今天下午三点公布的一份判决书的电子发布时间。判决书编号是24-817——Rivers v. Guerrero。”
科尔多瓦握着手机的手紧了紧。里弗斯的判决公布时间,被用来触发南港节点的定时继电器。这意味着攻击的策划者不仅知道那份判决的内容,还把它的发布时间当作攻击启动的计时信号。而里弗斯和维加都在监狱里待着——这份判决出来之后,里弗斯的上诉路径将完全被封闭。
她没时间想更多了。走廊尽头的灯光忽然全部熄灭,然后应急灯亮了起来,发出惨白的绿光。呼吸机的电源指示灯变成了闪烁的黄色。她转身冲回病房,看到护士已经把手动复苏气囊接上了气管插管,正在以稳定的节奏按压。
科尔多瓦没有停下来。她冲过走廊,跑到护士站后面的配电间,推开金属门。配电间里有一排断路器和一个备用发电机的控制面板。她看到控制面板上有一个外接的黑色小盒子,用双面胶粘在面板侧面,盒子上伸出一根细线,连入了发电机的自启动信号端口。她把那个小盒子扯下来,指甲差点把外壳抠碎,然后用力拔掉那根细线。备用发电机发出一阵低沉的轰鸣——它还是启动了,但没有收到来自那个盒子的附加指令,只是按照默认程序平稳地切换到供电模式。走廊里的应急灯重新变成了白色。
呼吸机重新亮起了绿色指示灯。科尔多瓦攥着那个小盒子站在配电间里,大口喘气,额头上的汗滴在地面上。她低头看了一眼那个盒子,外壳已经被她捏出了裂纹,露出一小块电路板,上面只有一个简单的定时触发模块和一个继电器。它是最基础的电子元件,不需要网络连接,只要在设定时间接收到一个微弱的电压脉冲就能触发攻击。
她把它装进外套口袋里,走出配电间。走廊里的灯光已经完全恢复正常,护士们在各自的岗位上忙碌地确认设备状态。她走到母亲病房门口,透过玻璃看到呼吸机运转正常,护士已经松开了气囊,正在记录监护数据。
她靠着门框站了一会儿,然后拿出手机,看到了一条来自赫尔曼的短信:“判决结果刚刚公布。9比0,驳回。攻击被阻止了吗?”
她回复了一个字:“嗯。”然后把手机放回口袋。
下午四点半,科尔多瓦坐在康复中心一楼大厅的塑料椅上,面前放着一杯自动售货机里买的热可可,杯子已经凉了。她给蒂娜打了一个电话,告诉她攻击节点已经被物理移除,南港节点的其他关联设备可以通过远程方式逐一关闭。她又给温特打了一个电话,请他帮忙把那两块旧服务器的硬盘安全封存,等待正式的证物提取程序。
她在那里坐了很久,看着大厅里来来往往的人——推着轮椅的护工、拎着水果篮的探视者、穿着白大褂快步走过的医生。这些人都不知道,就在不到两个小时前,这栋楼差点在一场无声的电力中断中变成一座无法呼吸的孤岛。
她站起身,走出康复中心大门。阳光斜斜地照在门前的台阶上,把她的影子拉得很长。她穿过停车场,坐进车里,关上车门,靠进座椅里。
半个月后,她坐在联邦大楼四楼的工位上,把一份结案报告的最后一页打印出来,装进档案夹。报告里记录了她在阿什兰市政SCADA系统17号后门调查中发现的所有链条——从1987年的测试报告注释,到格雷森空壳公司的授权凭证,到NSIB服务器和水利局旧服务器之间的回传链路,以及最后那个用最高法院判决发布时间触发的继电器攻击。她有意隐去了蒂娜·陈的具体身份,只用了“匿名线人”作为代称。赫尔曼被调回费城接受内部审查,但没有被正式停职。克劳斯在结案前一周主动提交了辞呈,同时向州司法部提交了一份完整的自述材料。维加和里弗斯仍在南方管教所服刑。黎文山依然在橡树坪经营那家河粉店,每天早晨削白萝卜。
科尔多瓦把那本档案夹推到办公桌的一角,然后站起来,走到窗边。阿什兰的秋天快要来了,窗外的树叶正在一点一点地变黄。她看着远处东区的天际线,那个方向里有圣安妮之家、枫树街四二七号、橡树坪公寓,以及已经恢复正常运行的议会大厦泵站。
她的手机震了一下。是一条来自未知号码的短信,内容只有一行字:“下一场停电,会在你看不到的地方开始。”
她盯着那条短信看了十秒,然后把它删掉了。她没有回复,也没有追踪那个号码。她把手机放回桌上,重新坐下来,翻开下一本案卷。
窗外的云层缓缓移动,在桌面上投下一片流动的阴影。她握着笔的手停了一下,然后继续在卷宗的边缘写下了一个批注:“此案存档。监控目标:NSIB相关节点,周期复查。”
她合上卷宗,站起身来,把外套挂到椅背上。秋天的风从窗缝里渗进来,带着一点干爽的凉意。她看了一眼窗玻璃上自己的倒影,然后转身走向走廊尽头那台自动售货机——咖啡机里还有最后一杯热的。


暂无评论,来抢沙发吧!