
Microvirt MEmu におけるリモートコード実行
CVEID: CVE-2019-14514
影響を受ける製品とバージョン: Microvirt MEmu(7.0.2より前のすべてのバージョン)
問題タイプ: CWE-78: OSコマンドに使用される特殊要素の不適切な無害化('OSコマンドインジェクション')
概要
MEmuはWindows向けのAndroidエミュレータです。テスト中に、root権限でコード実行を得るために悪用される可能性のある開放されたTCPポートを発見しました。 Microvirt MEmuの7.0.2より前のすべてのバージョンには、ポート21509で待ち受ける脆弱なバイナリが含まれています。攻撃者は、Unixシェルでコマンド区切り文字として使用される特殊文字を含む巧妙に細工されたメッセージを送信することで、エミュレートされたAndroidシステム上でroot権限によるリモートコード実行を得る可能性があります。
説明
/system/bin/systemd バイナリ(Freedesktop systemd initシステムとは無関係)はrootユーザーによって実行され、ポート21509でコマンドを待ち受けます。installer:uninstallで始まるコマンドが送信されると、攻撃者が制御する入力がシェルコマンドのテンプレートに挿入され、検証やエスケープなしに/system/bin/shに渡されます。つまり、リモートの攻撃者は;、&&、||のような特殊文字を挿入して、エミュレートされたシステム上でroot権限で実行される自身のシェルコマンドを送信できる可能性があります。
再現
echo "installer:uninstall;[shell_command_to_execute]" | nc [emulator_ip] 21509
エミュレータはコマンドを実行し、その後再起動します。
対策
MEmuをバージョン7.0.2以降に更新してください。