Page 149 - 工业机器人控制技术研究
P. 149
第五章 工业机器人的安全防护
的各种网络服务,包括接受网络连接的 Dashboard 和控制程序 URControl。控制
器上运行的所有软件都由特权操作系统级用户(root)执行,违反了最低特权原则。
如前所述,这些服务允许根据各种协议在没有认证的情况下执行若干动作(如停
止和启动程序以及加载特定程序)。
通过使用此功能,攻击者可以导致拒绝服务、加载控制器上已经存在的任意
程序或泄露机密数据。同时,由 URControl 在 TCP 端口 30002 上公开的一个协议,
通过设计监听任意 URScript 代码并执行它。URScript 程序的功能有限,很明显,
这种“设计的代码执行”不允许攻击者获得对控制器的完全控制。例如,URCap
插件使用这个特性。图 5-1 显示了 URCap 插件如何通过网络套接字向机器人发
送 URScript 命令,以及这些命令如何依次使用 XML-RPC 功能来使机器人执行
某个动作(如使与 URCap 关联的产品上的 LED 灯闪烁)。执行可发起网络请求
的未经身份验证的 URScript 命令的能力,允许与控制器可达的任何服务和网络
进行通信,但不能从攻击者的网络进行通信,从而增加了攻击面。
图 5-1 URCap 插件中存在的“二级套接字”漏洞客户端的示意图
此外,控制器运行 Apache Felix 的默认安装,该安装公开了 TCP 端口 6666
上的管理控制台,该控制台仅监听来自本地主机的连接,即控制器本身。该控制
台允许客户端安装和运行任意的 SGI 包(即 Java 包)。利用这一点,网络攻击
者可以使用 URControl 接口允许的任意 URScript,来执行从控制器本身的角度连
接到控制器(即连接到本地主机)的脚本,并向 ApacheFelix 控制台发送命令,
否则无法通过网络访问该控制台。由于 ApacheFelix 以根据用户的权限运行,这
使得攻击者能够使用类似于“服务器端请求伪造”(SSRF)的攻击,在机器人
控制器上执行未经验证的任意和特权代码,我们称之为 DSL 请求伪造攻击,因
为它是通过机器人编程语言中的命令发起的。ApacheFelix 不是唯一易受此问题
141

