首页 > 机器人资讯 > 黑科技:看我如何利用多个漏洞黑掉一台机器人系统

黑科技:看我如何利用多个漏洞黑掉一台机器人系统

日期:2019-02-25   人气:  来源:互联网
简介:黑科技:看我如何利用多个漏洞黑掉一台机器人系统 在我们看来传统的工业机器人是很无趣的。通常情况下,它们独自或者在人类的指导下在制造和生产环境中执行重复性的,程序化的任务。它们经常被用来执行危险或不适合人类去干的任务,因此,它们的工作环境往……

黑科技:看我如何利用多个漏洞黑掉一台机器人系统

在我们看来传统的工业机器人是很无趣的。通常情况下,它们独自或者在人类的指导下在制造和生产环境中执行重复性的,程序化的任务。它们经常被用来执行危险或不适合人类去干的任务,因此,它们的工作环境往往与人类或者其他有价值的机器隔离开来。

但是最新一代的协同机器人(cobots)并非如此。在符合安全标准的同时,他们与人类或者其他机器在共同的环境中工作。这一代机器人与人类携手并进,协助人类完成工作,而不仅仅是执行自动化的,危险性的操作。Cobots可以学习移动,通过高清摄像机看,或通过麦克风听到来完成工作。

因此,Cobots比传统的工业机器人呈现出了更为有趣的攻击研究。但是,Cobots只限于工业应用?不,他们也可以被集成到其他装置中!

去年二月,CesarCerrudo和我发表了一篇非技术论文HackingRobotsBeforeSkynet,在这篇论文中我们对来自多家知名厂商的几款家用,商用以及工业机器人进行了研究,在这些机器人中我们发现了近50个关键的安全漏洞。在Cobots这部分机器人部分,我们对包括来自RethinkRobotics的Baxter/Sawyer和Universal的UR机器人进行了研究,这些都是工业机器人行业的领导者。

Baxter/Sawyer:针对这款机器人,我们发现其存在身份验证漏洞,库卡机器人何服电机维修,采用不安全的协议传输和默认的部署配置,易受到物理攻击以及使用了一个存在多个安全漏洞的框架-ROS,该公司已经在2017年2月修复了我们报告的主要问题。

UR:我们在许多控制协议中发现了身份验证问题、易受到物理攻击、内存破坏漏洞以及不安全的通信传输等安全漏洞。所有这些问题在最新版本(3.4.2.65,2017年5月)的系统中中仍未修补。

根据IOActive网络安全公司漏洞披露的政策,我们已经在去年1月份与供应商取得了联系,所以他们有足够的时间来修复这些漏洞并通知客户。我们的目标是使cobots机器人更安全,防止攻击者利用漏洞对企业,员工和周围环境造成严重伤害。我真的希望这篇文章可以推动cobots机器人的安全性能够向前发展,使得我们可以安全地使用现在的这些机器人以及后续更多代的机器人。

在这篇文章中,我将讨论攻击者如何通过cobot(例如UR3,UR5,UR10-UniversalRobots)机器人的多个漏洞来远程修改安全设置,违反适用的安全准则,通过移动机器人对其周围的工作人员造成身体上的伤害。通过这个例子我们可以看到如果这些系统被黑客攻击或者控制可能会给人类造成多么严重的后果,操纵安全限制和禁用紧急按钮可能直接威胁到人的生命。在这个例子中,我们利用了cobot机器人的六个漏洞来改变其安全限制,并通过远程网络禁用安全面板和紧急按钮/传感器,演示视频可以在下面这个url中看到:

问:这些机器人真的可以伤害一个人吗?

答:是的,加拿大蒙特利尔(ETS)技术研究所的控制和机器人实验室的一项研究清楚地表明,即使是较小的UR5模型,其强大到足以严重伤害一个人。即使是在慢速移动中,他们的力量也足以造成颅骨骨折

问:等等,他们有没有安全功能,防止他们伤害附近的人类?

A:是的,但是黑客可以远程入侵,我将在下一个技术部分告诉你黑客是如何入侵机器人系统的。

问:这些机器人部署在哪里?

A:世界各地,每天在多个生产环境中都有机器人在工作。

集成商定义所有安全装置

UniversalRobots公司是UR机器人的制造商,但是在特定应用中安装UR机器人的公司是集成商,一个机器人只有集成和安装之后才被认为是一个完整的机器。UR机器人的集成商负责确保消除整个机器人系统的任何重大危险,这包括但不限于:

1.对整个系统进行风险评估,在许多国家,这是法律规定的的必要流程。

2.如果风险评估认为安全,则连接其他机器和其他安全装置

3.在Polyscope软件(控制面板)中设置相应的安全设置,确保用户不会使用安全密码来修改任何安全措施。

4.验证整个系统的设计和安装是否正确

UniversalRobots公司已经意识到集成商必须考虑机器人存在的潜在的重大危害例如:

1.机器人工具或者工具连接器上的锋利的刀边或者刀尖有可能刺伤皮肤;

2.机器人轨道附近的障碍物上的锋利刀边或者刀尖有可能刺伤皮肤;

3.由机器人的碰撞引起的瘀伤;

4.由机器人沉重的机器零件或者材料表面之间的碰撞而产生的扭伤或骨折;

5.由于未经授权更改安全配置参数而导致的错误

一些安全相关功能是专为cobot应用而设计的,这些功能包括:

1.力和功率限制:用于在机器人和操作员之间碰撞的情况下,减少机器人在运动方向上施加的夹紧力和压力;

2.动量限制:通过降低机器人的速度,用于在机器人和操作者之间碰撞的情况下减少高瞬态能量和冲击力;

3.刀具定向限制:避免锋利的刀边指向操作者;

4.速度限制:用于确保机器人手臂低速运行;

5.安全边界:用于限制机器人的工作空间,强制其停留在定义的虚拟平面的正确一侧,而不能通过它们。

6.安全I/O:当触发此输入安全功能(通过紧急按钮,传感器等)时,向输入端发送低信号,并使安全系统转换到减小模式。

安全设置可以有效防止许多潜在危险事件。但是,如果恶意攻击者绕过这些安全措施,操纵机器人来威胁人类生命,那可能会发生些什么呢?

UR用户指南的声明

远程更改安全配置

安全配置只能根据集成商进行的风险评估进行更改。如果改变了安全参数,机器人的整个系统应当被认为是新的,机器人维修,这意味着包括风险评估在内的整个安全审批流程应该相应的更新。

远程更改安全配置的过程如下所示:

步骤1.通过在URDashboardServer上利用身份验证漏洞来确认远程机器人系统的版本信息;

步骤2.通过在URModbusTCP服务中利用基于堆栈的缓冲区溢出漏洞获得对系统的控制权限,并以root身份执行命令;

步骤3.修改security.conf文件,该文件将覆盖所有的通用安全限制,接头限制,边界和安全I/O值限制;

步骤4.强制绕过计算校验和值,并上传新文件。我们需要伪造这个校验和值,因为通常集成商很可能在硬件上写入当前的校验和值;

步骤5.重新启动机器人,以便更新安全配置;

步骤6.通过利用UR控制服务上的认证问题,以任意危险的方式操作机器人。

通过逆向分析ursys-CB3.1-3.3.4-310.img这个系统镜像,我知道了机器人的入口点以及允许网络上的其他机器与操作系统进行交互的服务程序。对于此演示,我使用供应商提供的URSim模拟器,该模拟器包含了机器人镜像中大部分核心的二进制文件。尽管这个示例使用模拟器可以更为清楚展示攻击效果,但我还是修改了这个二进制文件,修改后的文件部分代码可以在Linux机器上正常运行。URControl这个二进制文件中导出了很多不同的网络服务,这些网络服务的私有协议在实现上都没有使用强大的认证机制。例如,网络上的任何用户都可以向其中一个服务发出命令,并获取正在运行的进程的远程操作系统的版本(步骤1):

免责声明:本网部分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的。如转载稿涉及版权等问题,请立即联系网站所有人,我们会予以更改或删除相关文章,保证您的权利。