Puma 7.2.1:PROXYプロトコルv1パーシングの脆弱性修正

puma/puma

Puma 7.2.1では、PROXYプロトコルv1のパーシングに存在する2つのセキュリティ上の問題が修正されました。細工された入力によるPROXYヘッダの悪用と、keep-aliveリクエストへのヘッダ注入という2つのリスクに対処しています。

背景

#3947 は、PROXYプロトコルv1の解析処理における2つの問題を報告し修正したPRです。PROXYプロトコルはロードバランサーがバックエンドサーバーにクライアントの実IPアドレスを伝えるために使われる仕組みで、Pumaはこのヘッダを受け取ってリクエスト情報に反映します。

パーシングの実装が不十分な場合、攻撃者が細工した入力を送り込んでPROXYヘッダの解釈を歪めたり(abuse)、keep-alive接続の後続リクエストにPROXYヘッダを注入(injection)したりできる可能性があります。これらが悪用されると意図しない動作を引き起こす可能性があるため、早急な修正が求められていました。

技術的な変更

今回の修正は#3947に含まれる2つの対策としてHistory.mdに記録されています。変更点は以下の2つです。

  • PROXYプロトコルv1パーシングへの制限とアンカリング: 細工された入力による悪用を防ぐため、パーシング処理に長さ制限と入力境界の固定(アンカリング)が加えられました。
  • 1接続につきPROXYプロトコルを1回のみ解析: keep-alive接続において後続リクエストにPROXYヘッダを注入する攻撃を防ぐため、接続ごとの解析を最初の1回に限定するよう変更されました。

バージョン文字列は lib/puma/const.rb 内の PUMA_VERSION および VERSION 定数が "7.2.0" から "7.2.1" に更新されています。

まとめ

Puma 7.2.1は、PROXYプロトコルv1の解析処理における入力検証の不備を修正したセキュリティリリースです。PROXYプロトコルを有効にして運用しているPuma環境では、本バージョンへのアップデートが強く推奨されます。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
90890138

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
3回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

「リード文(総論)→背景・技術的な変更(各論)→まとめ(結論)」という3部構成が明確に適用されており、非常に分かりやすい記事構成です。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

PR番号のリンク記法(例: [#3947](URL))が正しく使用されています。ファイル名付きシンタックスハイライトは使用されていませんが、誤用もありません。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

PumaやPROXYプロトコルに関する知識を持つエンジニアを対象としており、専門用語の使い方が適切で、過度な初心者向けの説明がありません。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフが「総論→各論」の構成で書かれています。また、各段落の先頭にトピックセンテンスが配置されており、要点を掴みやすい構成です。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

History.mdとlib/puma/const.rbの変更内容を正確に記事に反映しています。特にバージョン番号の更新やセキュリティ修正の要点を的確に抽出できています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「PROXYプロトコル」「パーシング」「keep-alive」「ヘッダ注入」などの技術用語を正確かつ適切な文脈で使用しています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

PROXYプロトコルv1のパーシングに関する2つの問題点と、それに対する修正内容(制限・アンカリング、解析回数の限定)の説明が技術的に正確です。

事実の突合 ⚠ WARNING

PR情報による主張の裏付け(ハルシネーション検出)

PROXYプロトコルの一般的な説明がPR情報にはない補足情報ですが、読者の理解を助ける技術的に自明な内容であり、許容範囲の警告と判断します。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#3947, #3948)やバージョン番号(7.2.1, 7.2.0)が正確に記載されています。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

PRの主題である「v7.2.1のリリース」の核心(脆弱性修正)を的確に捉えた、分かりやすいタイトルになっています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

PR情報に記載のないバージョンサポート状況やリリース日程など、外部の具体的な知識を持ち込んでおらず、事実に忠実です。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

記事内には時間表現に関する記述はありません。元PRのDiffに含まれる未来の日付(2026-05-27)に言及しておらず、混乱を避ける適切な判断ができています。