no_ctrl — PS5 fsc2h_ctrl カーネル脆弱性のPoC
概要
このリポジトリは、PS5 のファームウェア(<=10.40)における fsc2h_ctrl システムコールに関連したスタックの use-after-free(UAF)を再現する Proof-of-Concept(PoC)です。PoC は JavaScript で記述され、スレッドの状態遷移と一時停止によるレースコンディションを誘発して、サスペンドされたスレッドのスタックが解放される状況を作り出します。復帰時にそのスタック領域が再利用されることでメモリ破壊が起き得ることを示し、カーネル空間の整合性が損なわれるリスクを可視化します。研究と保護のための分析用に提供されており、実運用機に対する悪用は慎重な扱いが必要です。
リポジトリの統計情報
- スター数: 10
- フォーク数: 0
- ウォッチャー数: 10
- コミット数: 5
- ファイル数: 2
- メインの言語: JavaScript
主な特徴
- PS5 の特定ファームウェア向けに設計されたカーネル脆弱性の PoC
- JavaScript 実装により、ユーザ空間からの条件再現を示す
- スレッドの一時停止と再開を絡めたレースコンディションを検証
- 簡潔な構成(README と payload ディレクトリ)で再現ケースを提示
技術的なポイント
本プロジェクトは、カーネル内でスレッドのスタックが意図せず解放される状況を作り出す点に注目しています。概念としては、複数スレッドによる同一リソースの競合とスレッド制御(サスペンド/リジューム)を組み合わせることで、あるスレッドのスタックが解放されるタイミングと別処理による領域再利用が重なるレースコンディションを発生させます。PoC はこのレースを安定化させるためのトリガを用意し、解放されたスタック領域に別データを配置させることで、スレッド復帰時に意図しないメモリ破壊や不整合が発生することを示します。
重要なのは、この種の問題が「スタックの use-after-free」に分類され、単純な境界チェックや入力検証では防げない場合がある点です。対策としてはスレッドライフサイクル管理の厳密化、サスペンド時の参照保持、スタック割当て/解放の同期強化、さらにメモリ安全機構(カナリア、ASLR の強化、メモリ保護)の適用が考えられます。加えて、この PoC は研究目的であるため、実運用での完全な権限昇格や遠隔攻撃のための手順を含みません。実際の悪用には追加の不具合や環境依存の条件が必要であり、ローカル実行権限や特定ハードウェア上での実験が前提となる点に注意が必要です。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- payloads: dir
まとめ
研究目的のPoCであり、脆弱性解析と防御策検討に有用です。
リポジトリ情報:
- 名前: no_ctrl
- 説明: Proof-of-concept for PS5 kernel vulnerability in fsc2h_ctrl syscall (<=10.40 fw)
- スター数: 10
- 言語: JavaScript
- URL: https://github.com/MeisterLone/no_ctrl
- オーナー: MeisterLone
- アバター: https://avatars.githubusercontent.com/u/18056032?v=4