工业,是一个国家得以安身立命的根本。虽然中国已经成为全球唯一拥有全部工业门类的国家,但在工业自动化的核心——工业控制软件方面却远称不上强。
随着 Simulink 等工业控制软件设计分析平台的被禁,大部分人已认清了形势,并在关键环节,恶补功课,展开追赶。
这个艰难的过程,离不开一些人的默默支持,他们就是负责工业控制软件安全方面的专家们。
工业控制软件安全无小事
工业控制软件的安全主要可以分成两个维度,信息安全(Security)和功能安全(Safety)。这两个维度互为表里,同样重要。
举几个现实生活中的例子。
2009 年 11 月,美国 NSA 制作的专门针对伊朗铀浓缩设施的“震网病毒”,通过对特定型号的变频器操控,让其生产效率大大降低,直接导致其研发进度退后多年。
2015 年 12 月 23 日,来自俄罗斯的黑客利用 SCADA 系统协议中的漏洞,攻击了乌克兰的电力控制系统,导致 7 个 110 KV 的变电站和 23 个 35 KV 的变电站出现故障,80000 用户断电数小时。
以上这些安全事件都属于信息安全领域,而引发广泛关注的仅为冰山一角。
据国家互联网应急中心报告指出,2019 年,累计发现针对我国工业设备的恶意嗅探事件约 5151 万起。
而在功能安全领域的事故更为触目惊心。
2011 年,我国发生了 “7·23” 甬温线特别重大铁路交通事故。由北京南站开往福州站的 D301 次列车与前方由杭州站开往福州南站的 D3115 次列车发生同向追尾事故,后车 D301 次四节车厢坠桥。据官方公布,事故造成 40 人死亡、172 人受伤,中断行车 32 小时 35 分,直接经济损失 1 亿 9371.65 万元。
还有持续至今的波音停飞事件,印尼和埃塞俄比亚先后两架波音 737 MAX 8 型客机失事,机上人员全部遇难。事后波音通过调查发现,在某些情况下,若查觉有失速(气流平衡被破坏)可能,737 MAX 客机可能会自动降低机头。而法国航空事故调查处分析指出,飞行员已完全遵从波音及美国联邦航空管理局发出的建议和指引去处理紧急情况,但仍无法修正控制系统持续压低机头的情况。
这一连串悲剧性的事件,无一不向世人昭示着工业控制软件安全的重要性。
姜宇正是这个领域的专家,他今年 31 岁,是清华大学软件学院的副教授、博士生导师。先后师从孙家广教授、Lui Raymond Sha 教授和任尚苹教授,以第一作者或通讯作者发表学术论文 47 篇。获 ICSE-SEIP、EMSOFT 等会议最佳论文奖或提名奖 5 次,授权发明专利 7 项。
9 月 9 日,姜宇荣获阿里巴巴达摩院所评选的“青橙奖”,该奖项面向全球范围对科技进步有关键推动作用的中国青年学者的年度奖项,旨在发掘和支持从事基础科学、应用技术研究的优秀青年工作者。
姜宇说,工业控制软件的安全和日常软件在安全方面主要有两点不同。
第一,工业控制软件的交互对象、使用环境方面非常复杂多变。大到飞机坦克,航母潜艇,小到一只机械手臂,都是工控软件控制的对象;而环境交互方面,雨林、沙漠、高山、海底,都可能存在它的身影。
第二,出现问题所导致的结果不同。轻则导致系统失效、生产停滞,重则引发严重的工业事故,导致生命财产的损失。
这是一个相对小众的领域,和传统应用软件的研究投入相比,国内专门从事工业控制软件的研究人员已经相对较少,而做工控软件安全的人可能还要少上一到两个数量级。
听到 “Bug” 就兴奋
姜宇说,很遗憾,在这个领域,中国也处于被 “卡脖子” 的状态。一些核心的工控软件控制器和工控软件设计分析工具,均为国外所掌握和垄断。
一方面,如高铁列车的控制网络包含的两种最典型的控制器,一个是 MVB(Multifunction Vehicle Bus,连接一节车辆或一组车辆单元内部各种设备的多功能车辆总线)控制器,一个是 WTB(Wire Train Bus 连接各节可动态编组车辆间的绞线式列车总线)控制器,目前我国使用的方案基本都是国外采购。前文提到的乌克兰停电事故中关键的电力控制系统(SCADA),内部的通信协议等核心软件也被我国普遍采用。
另一方面,目前主流的安全保障工具及核心设计分析技术如 Simulink、Peach、Defensics 等,均被国外垄断。
在这种情况下,使用国外的安全测评工具分析购买的国外的工控软件控制器,在某些时候会产生一些意想不到的问题,难以保障自主安全可控。
“当然,我并不是说应该全盘国产化,但是在关键、核心的领域还是应该如此。”
“国外媒体总说我们的硬件、软件有后门,却拿不出任何的证据。其实反过来也是一样,国外的软件有没有后门?对我们来说也是一个黑盒,如果真的有后门,在紧急时刻人家关闭使用权限,将造成难以预测的后果。不是自己写的终究不能放心。其次,随着 Simulink 等工具的使用限制,也不得不加速推进国产化的进程。”
图 | 姜宇在北京(来源:姜宇)
姜宇和他的研究团队已经取得了初步的成果,围绕工业控制软件展开,在功能安全性保障和信息安全性保障两个方向均作了探索。
图 | 姜宇和他年轻的研究团队 (来源:姜宇)
在功能安全性保障方面,他的主要研究成果是 Tsmart-MDD——一款应用于工业控制软件设计构造阶段的建模、验证与综合工具集。目前该工具集的部分功能已经开发完毕,投入到了小范围的测试之中。
图 | 模型驱动的工业控制软件安全设计工具(Tsmart-MDD)
在该工具集中,工业控制软件的功能设计阶段主要分三步:首先构建必要的环境模型、交互模型及控制软件本身的控制模型;然后通过模型去仿真验证一个个功能需求是否被满足;确认满足之后自动生成对相应的控制代码,这样就避免了手动编写代码可能产生的错误。
在 Tsmart-MDD 中,首先设计了一个异构形式计算模型,在这个计算模型的基础上去开发工控软件模型的仿真器、测试器, 和相应的代码生成器,可以自动生成 VHDL 代码,也可以生成 C 代码。
这部分工作主要是对标 Simulink 的部分典型应用场景。在与华为车控软件方面合作当中,通过 Tsmart-MDD 所生成的代码,相比 Simulink 和 Ptolemy 大概要减少约 28% 左右;生成的测试输入较 Simulink Design Verifier 生成的测试输入相比,可以提升模型覆盖率约 20%。他们的工作也得到了中车集团、日本三菱重工的认可和资助。
在信息安全性保障方面,研究团队研制了 Tsmart-DATE,用于工业控制软件的安全测试分析。通过覆盖率敏感的程序调度、跨进程的覆盖率统计和进程管理、动态搜索变异的集成等策略,显著提升当前主流工具的精度和效率。
图 | 静动结合的工业控制软件测试分析工具(Tsmart-DATE)
同国际通用的 Peach、AFL 等工具相比, Tsmart-DATE 覆盖率提升 27%,时间缩短三倍,平均多找出 17% 的漏洞。在国际通用的工控协议如 IEC61850, IEC104 等协议中,挖掘了大量的 CVSS 评分大于 9 的高危漏洞,相关的成果也连续获得嵌入式软件顶级会议 EMSOFT2019、2020 的最佳论文提名奖。
姜宇说,由于研究方向的缘故,他和小组成员听到 “Bug” 这个词时,会觉得兴奋。“每次在一些广泛应用的软件,比如说 Linux 内核、MySQL 等大型的系统软件里,使用我们的分析工具找出 Bug,我们就很开心。”
未来 3 到 5 年,姜宇和他的研究团队,将会继续围绕着工具平台进行算法和理论的创新,力争实现典型应用场景的国产化替代。
阴差阳错的科研路
在科研生涯的起步阶段,姜宇并非一下就认准了计算机。
他用了好几个 “阴差阳错” 来描绘自己的命运。“我最开始不是很喜欢计算机,考大学时想去同济大学念土木工程,也不知道为啥想去。”
但住在他家对面的老师说,北邮的软件工程专业好,出来能赚好多钱。于是阴差阳错地去了北京邮电大学。
后来,又阴差阳错地拿到了保送清华计算机系的资格,觉得不用有点可惜,所以就去了。
再后来,虽然对计算机还不是很感兴趣,但论文竟然发得还凑合,提前毕业还拿了优博,而且再一次阴差阳错地到美国伊利诺伊大学香槟分校做博士后。
事后姜宇回想,最关键的转变其实发生在他的读博阶段的第三年底,自己的第一篇 A 类期刊论文,历时两年半,前后被打回要求修改了 6 轮终于接收;师兄师姐带着一起研发的车辆总线控制器成功上车装配…… 让自己感受到了科研带来的乐趣和满足。个中辛苦,冷暖自知。
现在,姜宇的科研之路已经走得愈发坚实,他将自己称为工业控制软件的“羽林卫”,希望可以和组员一起,不负韶华,为工业控制软件设计和分析工具的自主可控贡献清华力量,为国产工业控制软件的安全保驾护航。