注目★★★★★Hacker News
Fil-C がメモリ安全なコンテキスト切り替え実装、setjmp/longjmp と ucontext API に対応
30秒で把握
- 1Fil-C が setjmp/longjmp と ucontext API をメモリ安全に実装・v0.680 以降で dangling stack 復元を panic で検出
- 2C の誤用で stack 破壊・スタックトレース表示不可のクラッシュが発生・攻撃者の悪用リスク存在
- 3シグナルハンドラー例外処理・コルーチン/fiber 実装の安全性向上・既存 C コードベースの信頼性向上に活用可能
要約
Fil-C は setjmp、longjmp、getcontext、setcontext、makecontext、swapcontext をメモリ安全な方式で実装し、バージョン 0.680 以降で ucontext API に対応した。通常の C では dangling stack への復元によるスタック破壊が可能だが、Fil-C ではそうした誤用をパニック (panic) で検出するか、安全な実行に自動変換する。setjmp/longjmp は関数リターン後のコンテキスト復元やスレッド終了後の実行をメモリ安全に処理し、ucontext API も同様に stack-after-free を防止する。従来の C では debugger がスタックトレースを出力できない難解なクラッシュが発生しており、攻撃者に悪用される恐れがある。Fil-C はこれらの危険を排除する。
あなたへの影響
C 言語の low-level API (setjmp/ucontext) は実装が難しく、メモリ安全言語への移行または Fil-C のような safety レイヤーの導入が、システムプログラミングの脆弱性低減に有効な選択肢となり得る。
推奨:既存の longjmp/ucontext を多用する C コードベースを保守しているチームは、Fil-C への移行評価を検討する価値がある。