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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
chronomaly — CVE-2025-38352 に対する Android カーネルエクスプロイト。以前、実環境(in-the-wild)での悪用が確認されています。脆弱な x86_64 Linux カーネル v5.10.x を標的とします。 | Kitploit
ツール/GitHubGitHub/farazsth98/chronomaly
Androidセキュリティ脆弱性分析エクスプロイト論文と研究学習と教育バイナリエクスプロイト
GitHubfarazsth98/chronomaly

chronomaly

CVE-2025-38352 に対する Android カーネルエクスプロイト。以前、実環境(in-the-wild)での悪用が確認されています。脆弱な x86_64 Linux カーネル v5.10.x を標的とします。

リポジトリを見る
3104848ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Chronomaly

Chronomaly は、CVE-2025-38352 を利用した Android / Linux カーネル向けのカーネルエクスプロイトです。このエクスプロイトは Linux カーネル v5.10.157 専用に作成されましたが、特定のカーネルテキストオフセットを必要としないため、影響を受けるすべての v5.10.x カーネルに対して動作するはずです。

この脆弱性については、PoC からエクスプロイトに至るまで、3 部構成のブログ連載で詳しく解説しています。

  • パート 1 - 実環境で発見された Android カーネル脆弱性の分析 + PoC
  • パート 2 - カーネルパッチなしでレースウィンドウを広げる
  • パート 3 - Chronomaly の解明

demo

ビルド環境

このエクスプロイトは、QEMU で動作する x86_64 Linux カーネル v5.10.157 でのみテストされています。友人に Pixel 6a のカーネル設定を送ってもらい、それをベースにカーネル設定を作成しました。このエクスプロイトに重要な設定オプションは以下のとおりです(kernelCTF の設定をベースにしています)。

  • CONFIG_POSIX_CPU_TIMERS_TASK_WORK=n
  • CONFIG_PREEMPT=y (完全プリエンプション、RT なし)
  • CONFIG_SLAB_MERGE_DEFAULT=n
  • DEBUG_LIST=n
  • BUG_ON_DATA_CORRUPTION=n
  • LIST_HARDENED=n

CONFIG_POSIX_CPU_TIMERS_TASK_WORK を無効にするには、最初のブログ記事 こちら で説明している手順に従ってください。

QEMU の実行スクリプトについては、qemu.sh ファイルを参照してください。テストには 4 コアと 3 GB の RAM を使用しました。

変更が必要なエクスプロイトパラメータ

このエクスプロイトは CPU タイマーに依存しているため、環境に合わせて変更が必要なパラメータが 2 つあります。

CPU_USAGE_THRESHOLD

このパラメータは、race_func() 内で CPU 時間を消費してタイマーを発火させる際に使用されます。次の条件を満たすように設定する必要があります。

  • タイマーが毎回のリトライ試行で発火しないこと(CPU_USAGE_THRESHOLD が高すぎると、race_func() スレッドが終了する前にタイマーが発火してしまうため)。
  • タイマーがたまにしか発火しないこと(つまり、スレッドが終了する前にタイマーが発火することもあれば、終了中に発火することもある)。

タイマーが発火しているかどうかを確認するには、free_func() 内の SIGUSR1 ポーリングコードに printf() ステートメントを挿入します。メッセージが出力されれば、タイマーが発火したことを意味します。

正しく設定されている場合、ターミナルに "Parent raced too late / too early" というメッセージが表示され始めます。

PARENT_SETTIME_DELAY_US

PARENT_SETTIME_DELAY_US。このパラメータは、親プロセスが子プロセスと同時に send_sigqueue() 内の 2 番目のレースウィンドウを狙うために使用されます。エクスプロイトを実行して観察し、次のように変更してください。

  • "Parent raced too late, readjusting..." というメッセージが頻繁に表示される場合 – このパラメータを減らします。
  • "Parent raced too early, readjusting..." というメッセージが頻繁に表示される場合 – このパラメータを増やします。

理想的には、"raced too late" と "raced too early" の両方が出力されるのを確認でき、エクスプロイトは 1 分以内に動作します。どちらか一方が多く発生する場合は、それに応じて調整してください。

考えられる改善点

クロスキャッシュ実装では、カーネルがそれほどビジーではなく、struct sigqueue の割り当てがそれほど多くないことを前提としていました。これを改善するために必要なことは、sigqueue_crosscache_preallocs() 内のコメントに記載しています。

カーネルが非常にビジーである場合、または per-cpu / per-node のパーシャルリストに struct sigqueue のスラブページが既にいくつか存在する場合、exploit.c の現在のクロスキャッシュ実装は失敗し、uaf_sigqueue / realloc_sigqueue がパイプバッファデータページとして再割り当てされません。

ビジーなカーネルではクロスキャッシュが機能しないように意図的に設計しました。エクスプロイトが悪用されないようにするためです :)

質問

ご質問がある場合は、X / Twitter でお問い合わせください。

ツールをダウンロード