引言
随着机器人领域的不断发展,越来越多的智能机器人出现在我们的生活中,据国际数据公司(IDC)预测,到2023年全球在机器人和无人机上的支出将达到2414亿美元。目前很多公司都在使用ROS(Robot Operation System)进行机器人研发,因此ROS背后的安全隐患也因此变得越来越重要。
在本次讲座中,张老师为我们展示了他在ROS安全方面的其中两项工作:
- 机器人应用内函数交互所带来的安全隐患
- 使用形式化验证方法对ROS2进行系统性的安全分析
Security Investigation of Function Interaction Risks in Robot Apps
在ROS开发中,开发者可以将自己开发好的功能包上传到ROS仓库(Repository),经审核后,功能包可以被其他ROS开发这下载使用。这种开发流程提升了机器人应用开发体验,但同时也让攻击成本下降——攻击者在正常的功能包里面嵌入恶意代码,发布到仓库中(ROS仓库维护者只会检查代码规范,并不会检查代码中的安全问题),功能包的使用者有有可能会受到影响。
在这种威胁模型下,功能包内的恶意函数可以通过和正常应用进行交互,发起攻击,影响到整个正常应用的运行。这种攻击可以抽象成以下三类:
(1) General Risk (GR)
当多个函数节点共享同一个机器人状态时,这类攻击可以成功。如下图所示,不管是多话题(Topic)订阅还是单话题订阅,恶意函数(红色)都能通过伪造错误的机器人状态,导致监听该恶意函数的正常函数节点(黑色)受到影响。
(2) Robot-Specific Risk (RSR)
这类攻击和机器人的移动特性有关。通常机器人通过图像识别相关节点和速度控制相关节点进行运动控制。当攻击者控制图像识别或速度控制相关节点时,可以导致机器人失去对环境的判断能力。
在下图的例子中,攻击者可以控制最大速度节点,将最大速度增加,使得图像识别节点的帧率无法完全检测到周围环境,成功实施攻击。
(3) Mission-Specific Risk (MSR)
在机器人执行某一特定任务时,存在事件节点和动作节点。机器人通过事件节点感知物理环境,并通过动作节点进行移动控制。如果攻击者能够控制事件节点或动作节点,那机器人的任务执行有可能会出现异常。
下图是攻击者控制动作节点的一个例子:
为了防御上述提到的三种攻击,张老师组提出了RTron系统。RTron通过在有潜在安全问题的函数交互间增加用于防御的协调节点(Coordination Node),来降低恶意函数对机器人系统的影响。
RTron的整体构架如上图所示,其运行流程主要包括机器人应用安全分析,协调节点部署和运行这三个阶段。
在仿真环境下对RTron进行评估,实验结果显示:
- RTron能够有效地检测上述提到的三种类型攻击。
- 部署RTron所带来的开销非常小。在部署10个协调节点的情况下延迟也只是10ms
此外,张老师还举了一个在真实世界里面的例子,展示如何在一个Turtlebot3机器人上发起上述的三种攻击,同时也给出了基于RTron的防御方案。
Security Investigation of Secure ROS2
张老师在第一部分的工作介绍中解释了函数交互如何影响机器人应用的安全性,而在这一部分,张老师聚焦在如何利用一项形式化验证技术——模型检验(Model Checking),系统地对ROS2的安全特性进行分析。
研究方法如下图所示,主要由事件抽象,模型构建,模型检验和结果验证四部分组成。
经过模型检验和结果验证后,在ROS2中的五种漏洞被披露出来:
-
Permission File Replacement
许可文件(Permission File)规定了用户对特定文件的访问权。当ROS2在更新许可文件时,并没有撤消旧许可文件的有效性。因此,用户可以用旧许可文件去替换新的,实现一个回滚攻击。
-
Outdated Node Service
当系统所有者更新一个函数节点的访问控制策略(Access Control Policy)时,该节点需要重启以应用最新策略。但恶意的机器人可以拒绝重启节点,从而以旧的访问策略去做资源访问。
上述两种攻击的流程可以由下图概括:
-
Traffic Sniffing
恶意机器人可以通过嗅探网络流量并分析来重建其所在网络的拓扑结构。下图展示了一个例子,包含真实网络拓扑结构和攻击者所重建的拓扑结构:
-
Permission File Inference
ROS2对许可文件的完整性进行了保护,却忽视了机密性。攻击者可以从许可文件中推理出整个机器人网络的拓扑结构。
-
Default Mis-Configuration Leakage
ROS2中存在一些默认的配置错误,可以导致跨节点的信息泄漏。虽然这个漏洞已经在CVE-2019-19625和CVE-2019-19627中被确认,但至今未被修复。
直接修改ROS2底层源代码可以防御前述五种类型的攻击,但这种解决方法并不实际:一是直接修改ROS2底层代码需要很大工作量;二是现在的ROS2应用都需要更新。有鉴于此,张老师组提出了基于PBE(Private Broadcast Encryption)的防御措施,其不需对ROS2进行修改,并且能够抵御更多样的攻击。
结语
张老师的报告为我们揭示了ROS中鲜为人知的安全隐患。尽管目前看来,对于ROS的安全研究还比较少,但随着机器人生态的逐渐扩大,相信相关问题会越来越受到研究人员的关注。
此外,除了关注ROS这个中间件的安全问题,也有一些研究侧重于ROS所在的宿主操作系统(Host OS)的安全性,也即将研究问题从安全的ROS延伸到安全的机器人全系统。目前已有一些研究工作在整个机器人系统(包括ROS及其宿主系统)内采用零信任,可信执行环境等技术来进一步提高安全性。相信这也会是一个有意思的研究领域。
https://www.bilibili.com/video/BV1fL411j7x4?spm_id_from=333.999.0.0