注目★★★★★GitHub Advisory
oj gem全バージョンにUse-After-Free脆弱性 SAJモードで35バイト以上のキーが対象
30秒で把握
- 1oj gem 全バージョンでSAJモードのUse-After-Free脆弱性 CVE-2026-54902 が確認
- 235バイト以上のキーでGC起動時にセグフォルト・RIP 0x4242でメモリ制御示唆
- 3短いキー (34バイト以下) は安全・SAJモード利用アプリは実装確認が必要
要約
Ruby の JSON ライブラリ oj gem の全バージョンに Use-After-Free 脆弱性 (CVE-2026-54902) が確認された。SAJ モードの `Oj::Parser` が 35 バイト以上のキーをヒープ上の Ruby String として保持する際、`hash_end` コールバック内で GC が起動するとキー文字列が解放され、C パーサが解放済みポインタにアクセスしてセグフォルトが発生する。クラッシュ時の RIP が `0x4242` を示しており、解放済みメモリの内容が制御可能なことを示唆する。34 バイト以下の短いキーはスタック上に格納されるため影響を受けない。
あなたへの影響
oj gem を SAJ モードで使用するアプリ (特に 35 バイト以上のキーを含む JSON を処理する場合) は、コールバック内で GC が誘発される実装になっていないか確認が必要。
推奨:現時点で修正バージョンが確認されていないため、ワークアラウンドとして SAJ モードの使用を避けるか、コールバック内での明示的な GC 呼び出しを排除する対策が有効な可能性がある。