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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
kernel-c-to-rust-spike — Rustによる書き換え+差分ファジング+形式検証でカーネルのCパーサーを堅牢化。最初のターゲット: UVC (CVE-2024-53104)。 | Kitploit
ツール/GitHubGitHub/runtimeverification/kernel-c-to-rust-spike
静的分析脆弱性分析リバースエンジニアリングファジングバイナリ解析論文と研究学習と教育
GitHubruntimeverification/kernel-c-to-rust-spike

kernel-c-to-rust-spike

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →

Rustによる書き換え+差分ファジング+形式検証でカーネルのCパーサーを堅牢化。最初のターゲット: UVC (CVE-2024-53104)。

リポジトリを見る
2853ヶ月前未レビュー
共有

カーネル C-to-Rust ハードニングスパイク: UVC ディスクリプタパーサ

セキュリティ上重要な Linux カーネルの C パーサを Rust で書き直すことでハードニングできるのか、しかもその書き直しが元のコードと等価であることを示したうえで形式的に検証できるのか。このスパイクは 1 つのターゲットに対してループ全体を実行する。ターゲットは UVC ビデオディスクリプタパーサ(drivers/media/usb/uvc/ の uvc_parse_format/uvc_parse_frame、v7.2-rc2)であり、16 年の隔たりをもつ 2 つの独立したメモリ安全性 CVE(CVE-2008-3496、CVE-2024-53104。後者は CISA KEV カタログに収録)を抱えていたことから選定した。

ループと、各ステップが確立したこと

  1. C リーフの抽出(c/)。パースロジックはカーネルからバイト単位でコピーし、環境のみをスタブ化した(// SPIKE-STUB)。C-ABI ライブラリとしてコンパイルされる。抽出したリーフにはカウントパスとサイズ付きアロケーションが含まれるため、CVE-2024-53104 のバグクラス(パースがカウントで確保した範囲を超えて書き込む)は抽象化で消されることなく到達可能である。

  2. Rust での書き直し(rust/)。同じパースリーフを安全な Rust で実装し、C ABI と結果構造体も同一にした。C からの逸脱はすべて // DEVIATION でタグ付けし、文書化している。

  3. 差分ファジング(fuzz/)。stable rustc 上の LibAFL ハーネスが両実装を同一入力で駆動し、出力をフィールド単位で比較する。結果: コンパイラ依存の符号付きオーバーフロー箇所における移植時の不一致を 1 件修正した後、54,019 回の実行で 93% のエッジカバレッジにわたり乖離はゼロ。忠実な v7.2-rc2 のコードでは範囲外アクセスに到達しない(両 CVE とも修正済み)。オプトインのネガティブコントロール(--features vuln、両言語でミラー)は CVE-2024-53104 の不一致を再導入する。同一入力に対して C はヒープの範囲外書き込みを行い(ASan)、Rust は安全にパニックする。詳細は fuzz/RESULTS.md。

  4. 形式的検証(verify/)。忠実な Rust リーフは Charon と Aeneas を経て Lean 4 に抽出され、生成コードに sorry はなく、Binder スパイクと違って union のブロッカーもない。定理は 2 つで、verify/VERIFY-REPORT.md と ROADMAP.md に記載している:

    • すべての入力に対する全安全性(あらゆる結果が ok / 制御された fail / 非終了のいずれかであり、未定義動作の結果には決してならない): 証明済み、sorry なし。これにより、C が欠いているメモリ安全性の性質を、検査済みの命題として明示する。
    • 整形式入力に対する非パニック(パニックは不正な入力に対してのみ発生し、そこでは C の範囲外書き込みに代わる意図された安全な挙動となる): 進行中。違反が CVE-2024-53104 となるカウント対書き込みの不変条件は sorry なしで証明済みであり、再利用可能な Aeneas のループ推論原理 2 つと、構造的に終了する 5 つのループに対する除算不要性も証明済みである。残りは、名前付きの位置走査の関数正しさコア(4 つの提示済み補題)に帰着する。ROADMAP.md を参照。

ステータス

ループは 1 つのターゲット上でエンドツーエンドに実証されている。書き直しが C と等価であることは差分ファジングで示され、メモリ安全性の差異はネガティブコントロールによって具体化され、Rust はクリーンに Lean へ抽出され、その全安全性の性質は機械的に検査されている。非パニック定理については、カウント不変条件(CVE-2024-53104 の中核)が sorry なしで証明され、残りの作業は名前付きの関数正しさコアに帰着しており、提示はされているがまだ証明されていない。証明の完全なステータスと未解決の補題は ROADMAP.md にある。

レイアウト

  • c/ — 抽出した C リーフとそのスタブ
  • rust/ — 安全な Rust による書き直し
  • fuzz/ — LibAFL 差分ファザー、結果、CVE クラスのコントロール
  • verify/ — Charon/Aeneas/Lean の抽出と定理
  • ROADMAP.md — 証明のステータスと残る未解決の補題
  • OPEN_CHALLENGES.md — コントリビューターが着手できる具体的なタスク
  • */README.md、fuzz/RESULTS.md、verify/VERIFY-REPORT.md — ステージごとの詳細

環境

カーネル v7.2-rc2(読み取り専用の参照)。Rust stable 1.94.0。LibAFL 0.15。Charon 909ff09a(v0.1.220、--preset=aeneas)、Aeneas c2015b86、Lean/mathlib v4.31.0。

ツールをダウンロード