3.2 KiB
Raw Blame History

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バイトを読み取り、ゼロにしますが、割り当てられたバッファ内に収まることを確認していません:

// 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 をタグの sizetagDataSize)に設定します。
  • タグデータブロックの直後に攻撃者が制御するデータを配置して、ヒープメタデータを上書きします。
  1. 解析をトリガー:
sips --verifyColor malicious.icc
  1. ヒープメタデータの破損: OOBゼロ書き込みがアロケータメタデータまたは隣接ポインタを上書きし、攻撃者が制御フローをハイジャックし、 sips プロセスのコンテキストで任意のコード実行を達成できるようにします。

影響

成功した攻撃は、脆弱な sips ユーティリティを実行しているmacOSシステム上でユーザープリビレッジでのリモート任意コード実行を引き起こします。

検出

  • 一般的なプロトコルFTP、HTTP/S、IMAP、SMB、NFS、SMTPでのファイル転送を監視します。
  • 署名 acsp を持つ転送されたファイルを検査します。
  • mAB または mBA タグについて、 Offset to CLUT フィールドが Tag data size に等しいか確認します。
  • この条件が満たされる場合は、疑わしいとしてフラグを立てます。

参考文献

{{#include /banners/hacktricks-training.md}}