注目★★★★★GitHub Advisory
concurrent-ruby 1.3.6: Float::NAN でライブロックする脆弱性 CVE-2026-54904
30秒で把握
- 1CVE-2026-54904: AtomicReference#update が Float::NAN で無限ループ
- 2concurrent-ruby 1.3.6 が対象・NaN の等値比較が false になる仕様が原因
- 3CPU 枯渇・リクエスト永久停止のリスク・NaN ガード追加を要検討
要約
concurrent-ruby の `AtomicReference#update` は、格納値が `Float::NAN` の場合に無限ビジーループ(ライブロック)に陥る脆弱性 CVE-2026-54904 が公開された。原因は `Float::NAN == Float::NAN` が常に `false` を返す Ruby の NaN 比較仕様と、`compare_and_set` の同値チェックの組み合わせにある。外部から取得した数値を `AtomicReference` に格納するサービスでは、CPU 枯渇や処理の永久停止を引き起こす可能性がある。対象バージョンは 1.3.6(コミット 7a1b789)。
あなたへの影響
外部 API や計算結果の浮動小数点値を `AtomicReference` に格納している場合、NaN が混入すると CPU 使用率が 100% に張り付く可能性がある。
推奨:バージョン 1.3.6 を使用しているプロジェクトは、格納値に NaN が入り得るか確認し、修正版へのアップグレードまたは NaN ガード(`value.nan?` チェック)の追加を検討すること。