交通信号机的安全风险
发表于:
2021-8-17 10:58
11265
交通信号系统负责城市交通路口信号灯、摄像头、传感器以及指示牌等等涉及交通管理的设备和系统。而被控设备中最关键的是交通信号灯,信号灯决定城市车流和人流的健康状况。早期的信号灯是单独的有时间设定的固定设备,之后采用人工操控的方式,通过在路口安排专职人员通过人为观察交通状况来操作信号灯,随着现代交通的发展,信号系统变得越来越复杂,智能化已经成为主流,比如绿波带,通过分析和判断整条路的车流情况以及交通情况,让车辆通行时可以按照一定的前进速度达到一路绿灯的效果。通过智能化的信号系统,可以实现诸如交通流量自动检测,车辆和行人识别,根据流量、行车或行人的状态自动变换信号灯,比如深夜的路口因为车流量不大,信号灯会自动切换到黄闪(黄灯闪烁)。
智能化的交通信号系统也为安全攻击提供了攻击面,原本独立的信号系统及设备出于城市道路协同和管理的需要,需要将各条道路及路口信号系统收集、处理的数据进行同步,而通过有线连接的方式成本过高,因此无线连接(无线电、WiFi、蓝牙、移动通信)成为系统间连接的首选,也因此成为了安全攻击的攻击面。
现代的交通信号系统由传感器、控制器、网络设备、MMU(故障管理单元)组成。
传感器用来检测车辆和检查基础设施,常用的传感器是埋在马路下面的地磁线圈(in-ground loops),检测车辆是否通过、是否停留以及停留时长,另一种检测车辆的方式是视频监测。
控制器与传感器直接连接,通过传感器传递的信息,控制器可以控制红绿灯的状态,控制器是交通信号机的一部分,通常放置于红绿灯路口的金属箱中。最简单的控制器是预先编码的控制系统,根据编码逻辑直接控制信号灯,复杂的控制器是半自动或全自动的,会根据传感器回传的信号判断道路状况,调整信号灯的状态,比如只基于辅路的传感器信号或基于辅路和主路的传感器信号。
控制器可以单独工作,出于交通状况监测和管理的需要,也可以通过与临近的控制器联网,或者每个控制器通过统一的平台进行数据交换。路口之间距离有近有远,通讯方式如果采用光纤方式,需要单独铺设线路,对于密集地区的路口,铺设和维护成本较高,因此会采用无线电的方式进行通讯,比如900MHz或5.8GHz的无线电,900MHz用于不同路口之间的远距离通讯,5.8GHz用于同一个路口的近距离通讯。
控制器的操控通常需要物理接触,需要打开路口的箱子实际接触控制器,但为了人工操控方便,比如当信号灯状态出现故障,需要重新编排信号状态规则时进行重置,控制器也会提供其他方式的操控方式,比如联网环境通过Telnet、FTP等协议直接写入控制器系统修改配置文件等。
MMU(故障管理单元)通常和控制器一样都放置于路口的金属箱中,MMU的作用是检测信号灯输入、输入信号的准确性和安全性,确保信号灯的状态是系统预设或计划内的状态,当信号灯的状态发生故障时能够接管信号灯的控制,因此MMU是硬件而非软件。比如当信号灯状态发生故障时,MMU可以接管信号灯控制,让信号灯处于黄闪状态。
对于信号机(包括控制器、MMU),攻击面包括传感器、控制器、设备网络。
本文分析是一款开源交通信号系统,用于某系列信号机,在无法接触信号机设备的情况下,可以通过分析信号系统的源码来查看该系统可能存在的安全风险。根据上面的攻击树,需要结合该系统相关的安装部署和使用手册来检查攻击面。
信号系统只是信号机的系统,不牵涉传感器,但涉及到控制器和MMU,其中MMU是该系列信号机中的故障检测板,在主控板控制出现故障时,会由故障检测板降级或直接操控。因此攻击面只能在信号机自身的主控板、故障检测板中寻找。
通过对该的Linux版本的源码分析,发现在系统配置功能的多线程类中存在安全风险:
与此风险类似的,是2020年的CVE-2020-12493漏洞,该漏洞影响奥地利交通设备厂商SWARCO,攻击者利用该厂商的控制器开放的调试端口,可以直接控制信号机状态,但需要在物理接触信号机的前提下进行。
随着交通信号系统的智能化,之前很难攻击的信号系统暴露的攻击面越来越多,攻击难度也越来越低。比如同样是在2020年的Defcon会议上,荷兰的安全研究员Rik van Duijn、Wesley Neelen分享了如何欺骗荷兰的交通信号灯,且攻击方式极其简单,攻击者只需要使用伪造GPS定位的App即可实现。原因是荷兰的交通信号系统会与Schwung、CrossCycle这样的App共享信号灯数据,自行车用户使用这两个App,可以将自己的定位信息与信号灯共享,当骑车人通过路口时,信号灯自动变绿,方便骑行者一路绿灯。
(代码分析过程已做删减)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课