概要
Ruby の JSON gem に おいて、フォーマット 文字列 インジェクション の 脆弱性 が 発見 されました。この 問題 は allow_duplicate_key: false オプション を 使用 して JSON を パース する 際 に 発生 します。重複 キー を 検出 した 場合 の エラー メッセージ 生成 処理 に おいて、JSON の キー 値 が フォーマット 文字列 として 解釈 される ため、攻撃者 が 制御 する JSON データ を 通じて フォーマット 文字列 インジェクション が 可能 に なります。
この 脆弱性 は CWE-134(Use of Externally-Controlled Format String)に 分類 されます。フォーマット 文字列 攻撃 は 古典的 な 脆弱性 カテゴリ ですが、Ruby の JSON パーサー の ような 広く 使用 される ライブラリ で 発見 された こと は 注目 に 値します。
影響 を 受ける バージョン は JSON gem v2.14.0 から v2.19.1 まで です。デフォルト 設定 で は allow_duplicate_key は true の ため、明示的 に false を 設定 して いる アプリケーション のみ が 影響 を 受けます。しかし、セキュリティ の ベスト プラクティス として 重複 キー を 禁止 する 設定 を 推奨 して いる フレームワーク も ある ため、影響 範囲 は 限定的 では ない 可能性 が あります。
CVSS スコア は 9.1 で Critical と 評価 されて います。修正 バージョン として 2.15.2.1、2.17.1.2、2.19.2 が リリース されて います。Ruby アプリケーション を 運用 して いる 場合 は、使用 して いる JSON gem の バージョン を 確認 し、速やかに アップデート して ください。
Ruby on Rails を はじめ と する 多く の Ruby フレームワーク は JSON gem に 依存 して おり、影響 範囲 は 広い 可能性 が あります。特に Web API で JSON を 受け付ける アプリケーション は、攻撃者 が リクエスト ボディ に 悪意 ある JSON を 送信 する こと で 容易 に 攻撃 可能 です。CI/CD パイプライン に Bundler Audit や Dependabot を 組み込み、脆弱 な 依存 関係 を 自動 検出 する 仕組み を 導入 する こと を 推奨 します。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 9.1(Critical) |
| 攻撃 元 区分 | ネットワーク |
| 攻撃 条件 の 複雑 さ | 低 |
| 必要 な 特権 レベル | 不要 |
| ユーザー 関与 | 不要 |
| CWE | CWE-134(Use of Externally-Controlled Format String) |
影響 を 受ける ソフトウェア
| 製品 | ベンダー | 影響 バージョン |
|---|---|---|
| JSON gem | Ruby | v2.14.0 から v2.15.2.0 |
| JSON gem | Ruby | v2.16.0 から v2.17.1.1 |
| JSON gem | Ruby | v2.18.0 から v2.19.1 |
修正 バージョン と 回避策
- 修正 バージョン: 2.15.2.1、2.17.1.2、2.19.2
- 回避策:
allow_duplicate_key: falseオプション を 使用 しない(デフォルト の true を 使用) - 回避策: JSON 入力 を パース する 前 に、信頼 できない ソース から の データ を バリデーション する
- 推奨:
bundle update jsonで 最新 の 修正 バージョン に アップデート する - 推奨: Gemfile.lock を 確認 し、依存 関係 に 含まれる JSON gem の バージョン を 検証 する
関連 リンク
データソース: NVD (NIST) AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
