注目★★★★★GitHub Advisory
CVE-2026-54903: Ruby gem「Oj」に2GB超JSON文字列でヒープ破壊の脆弱性
30秒で把握
- 1Oj gem 全バージョンに2GB超JSON文字列でヒープ破壊の整数オーバーフロー脆弱性
- 232ビットintが負値にラップし memcpy が境界外コピー・プロセスクラッシュ発生
- 3最新 3.17.1 でも影響確認・大容量JSON受付実装は入力バリデーション追加が必要
要約
Ruby の JSON パーサー gem「Oj」の `Oj.load` に、2GB を超える JSON 文字列を解析する際にヒープ破壊を引き起こす整数オーバーフロー脆弱性 (CVE-2026-54903) が確認された。`parse.c` 内でエスケープシーケンス処理時に文字列長を 32 ビット `int` で計算するため、2GB 超で負値にラップし、`(size_t)(-2147483648)` が `memcpy` に渡されて境界外へ膨大なデータをコピーする。プロセスクラッシュおよび隣接ヒープメモリの破壊が発生する。影響を受けるのは `ext/oj/buf.h` と `ext/oj/parse.c` を含む全バージョンで、最新確認済みは 3.17.1。
あなたへの影響
Oj gem を利用する Ruby アプリケーションで大容量 JSON を受け付ける実装がある場合、即時にバージョンを確認し、修正版へのアップデートや 2GB 超入力のバリデーション追加を検討すべき。
推奨:即時の悪用難度は高いが、クラッシュ (DoS) 経路として悪用される可能性がある。