# WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236) {{#include ../../banners/hacktricks-training.md}} ## 概要 Apple macOS Scriptable Image Processing System (`sips`) ICCプロファイルパーサーにおけるバッファ外書き込みの脆弱性(macOS 15.0.1, sips-307)。これは、`lutAToBType` (`mAB `) および `lutBToAType` (`mBA `) タグの `offsetToCLUT` フィールドの不適切な検証によるものです。細工されたICCファイルは、ヒープバッファの16バイト先までのゼロ書き込みを引き起こし、ヒープメタデータや関数ポインタを破損させ、任意のコード実行を可能にします(CVE-2024-44236)。 ## 脆弱なコード 脆弱な関数は、攻撃者が制御するオフセットから始まる16バイトを読み取り、ゼロにしますが、割り当てられたバッファ内に収まることを確認していません: ```c // Pseudocode from sub_1000194D0 in sips-307 (macOS 15.0.1) for (i = offsetToCLUT; i < offsetToCLUT + 16; i++) { if (i > numberOfInputChannels && buffer[i] != 0) buffer[i] = 0; } ``` のみ `offsetToCLUT <= totalDataLength` のチェックが行われます。 `offsetToCLUT == tagDataSize` を設定することで、ループは `buffer` の終わりから16バイト先までインデックスされ、隣接するヒープメタデータが破損します。 ## 攻撃手順 1. **悪意のある `.icc` プロファイルを作成:** - 署名 `acsp` を持つICCヘッダー(128バイト)を構築し、単一の `lutAToBType` または `lutBToAType` タグエントリを追加します。 - タグテーブルで、 `offsetToCLUT` をタグの `size`(`tagDataSize`)に設定します。 - タグデータブロックの直後に攻撃者が制御するデータを配置して、ヒープメタデータを上書きします。 2. **解析をトリガー:** ```bash sips --verifyColor malicious.icc ``` 3. **ヒープメタデータの破損:** OOBゼロ書き込みがアロケータメタデータまたは隣接ポインタを上書きし、攻撃者が制御フローをハイジャックし、 `sips` プロセスのコンテキストで任意のコード実行を達成できるようにします。 ## 影響 成功した攻撃は、脆弱な `sips` ユーティリティを実行しているmacOSシステム上でユーザープリビレッジでのリモート任意コード実行を引き起こします。 ## 検出 - 一般的なプロトコル(FTP、HTTP/S、IMAP、SMB、NFS、SMTP)でのファイル転送を監視します。 - 署名 `acsp` を持つ転送されたファイルを検査します。 - 各 `mAB ` または `mBA ` タグについて、 `Offset to CLUT` フィールドが `Tag data size` に等しいか確認します。 - この条件が満たされる場合は、疑わしいとしてフラグを立てます。 ## 参考文献 - ZDIブログ: CVE-2024-44236: Apple macOS sipsユーティリティのリモートコード実行脆弱性 https://www.thezdi.com/blog/2025/5/7/cve-2024-44236-remote-code-execution-vulnerability-in-apple-macos - Apple 2024年10月セキュリティアップデート(CVE-2024-44236のパッチ) https://support.apple.com/en-us/121564 {{#include /banners/hacktricks-training.md}}