Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
detect_CVE-2026-86950 — CVE-2026-86950を悪用するPDFファイルを検出するPythonツール | Kitploit
ツール/GitHubGitHub/decalage2/detect_cve-2026-86950
静的分析脆弱性スキャナー脆弱性分析エクスプロイトマルウェア分析論文と研究
GitHubdecalage2/detect_cve-2026-86950

detect_CVE-2026-86950

CVE-2026-86950を悪用するPDFファイルを検出するPythonツール

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-86950 PDF エクスプロイト検出ツール

このプロジェクトと CVE-2026-86950 の詳細については、https://decalage.info/CVE-2026-86950/ を参照してください。

免責事項: この readme の大部分と検出コードは、AI コーディングエージェントの支援を受けて作成されました。このツールは、数千の正規 PDF ファイル、およびこちらで公開されている利用可能な概念実証に対して、成功裏にテストされています。 ただし、このツールは新しく、検出アルゴリズムはかなり複雑であるため、注意して使用してください。

detect_cve_2026_86950.py は、CVE-2026-86950(「The Great Glyph Grift」)を悪用するために細工された埋め込みフォントを PDF ファイル内から静的にスキャンします。これは Apple CoreGraphics のアンチエイリアス付きグリフラスタライザにおける境界外書き込みです(iOS / macOS 26.7.1 で修正済み)。

このツールはフォントをレンダリングしたり、エクスプロイトコードを実行したりすることは一切ありません。PDF と埋め込みフォントプログラムを解析し、攻撃の構造的シグネチャを探します。

脆弱性(検出が機能する理由)

CoreGraphics は、浮動小数点のデバイス座標を、おおよそ次のようにして 16.12 固定小数点整数に変換します:

int32_t aa_double_to_fixed(double px) { return (int32_t)(0.5 + 4096.0 * px); }

4096 * px が int32 の範囲を超えると、そのキャストは未定義動作となり、2 つの呼び出し箇所(aa_moveto と aa_lineto)で動作が食い違います。一方は飽和し、もう一方は切り捨てます。この食い違いが aa_add_edges におけるグリフのバウンディングボックス計算を破壊するため、aa_cache_render のカバレッジバッファが小さすぎるサイズで確保され、ラスタライザが範囲外に書き込みを行います。26.7.1 のパッチでは、明示的なクランプを ±0x3FFFF001 に追加しています。

公開されている実証コード(PoC)は、このような過大な座標を強制する悪意のある TrueType フォントを構築します。

  • コンポジットグリフの深い連鎖で、それぞれが前のものを約 2 倍にスケーリングする(F2Dot14 スケールは最大値の約 1.99994 付近)。
  • 大きな座標に縮退した 2 点の輪郭を持つ、ごく小さなリーフグリフ。
  • その結果、最上位グリフの実際のアウトラインは約 1600 万フォントユニット(em スクエアの約 1000 倍)に達する一方、グリフの保存されたバウンディングボックスはごく小さいままです。
  • 大きなテキストサイズ(/Tf 1024)では、4096 × device_coord が int32 をオーバーフローします。

検出器がチェックする内容

  1. pikepdf を使用して、埋め込まれたすべてのアウトラインフォントプログラムを抽出します — TrueType(/FontFile2)および CFF / OpenType(/FontFile3)。
  2. fontTools で各フォントを解析し、各グリフの真の座標範囲を測定します。
    • TrueType: コンポジットコンポーネントを再帰的に解決します(そのため、ネストされたスケーリング連鎖が実際の範囲まで追跡されます)。
    • CFF / Type2: 各 charstring を制御バウンズペンで描画します(そのため、多数の相対演算子をまたいで累積された座標が測定されます)。
  3. 次のいずれかに該当する場合、そのフォントにフラグを立てます。
    • グリフの実際のアウトラインが em スクエアをはるかに超えて広がっている(正当なグリフはそうなりません — しきい値は 10× em、100× em を超えるとほぼ確実)。
    • 実際の範囲がグリフ自身の宣言されたバウンディングボックスをはるかに凌駕している(エクスプロイトが依存するバウンディングボックスの「嘘」)。
    • (TrueType のみ)深いコンポジットのネストとアップスケーリング(>1)コンポーネントの組み合わせ — 公開 PoC が使用する座標増幅連鎖。
  4. 最悪ケースの座標を、ページコンテンツストリームで使用されるテキストサイズ(/Tf、Tm)と組み合わせ、4096 × device_coord が実際に INT32_MAX を超えるかどうか — つまり、固定小数点オーバーフローが到達可能かどうかをチェックします。

判定: exploit(オーバーフローが到達可能)、suspicious(ジオメトリは過大だが、観測されたサイズではオーバーフローしない)、clean。

インストールと実行

# with uv (recommended)
uv venv
uv pip install -r requirements.txt

# or any environment with pikepdf + fonttools
python3 detect_cve_2026_86950.py suspicious.pdf
python3 detect_cve_2026_86950.py -v *.pdf      # per-font details
python3 detect_cve_2026_86950.py --json f.pdf  # machine-readable

終了コード: 0 クリーン、1 エクスプロイト/不審、2 エラー。

制限事項

  • この CVE の根本原因は、CoreGraphics の共有 aa_* パスラスタライザにおける固定小数点変換にあり、これは TrueType の glyf と CFF/Type2 の両方のアウトラインをレンダリングする。公開されている PoC は TrueType の複合グリフで座標を増幅させるが、CFF フォントは(例えば相対演算子を累積させることで)直接的に過大な座標に到達できるため、/FontFile2 と /FontFile3 の両方が解析される。複合チェーンのヒューリスティックは TrueType 固有のものであり、CFF の場合のシグナルは過大座標/バウンディングボックスの偽装チェックである。
  • コンテンツストリームのテキストサイズ(/Tf、Tm)スキャンはベストエフォートであり、PDF のグラフィックス状態/CTM を完全には評価しない。サイズが見つからない場合、オーバーフローチェックには保守的なデフォルト値 1024 が仮定される。フォント固有の過大ジオメトリのシグナルはこれに依存しない。
  • これはヒューリスティックな構造検出器であり、サンドボックス化されたレンダラーではない。既知のエクスプロイトパターンと明らかに不正なフォントを検出することを目的としており、ファイルが安全であることを証明するものではない。
ツールをダウンロード