HD-2024-1407

HTTPリクエストの密輸
影響
Node.js
4.21.3 LTS
Node.js
Node.js NES
感嘆符アイコン
パッチあり
この脆弱性はHeroDevsが提供するNever-Ending Support (NES)バージョンで修正されました。

概要

Node.jsの複数のバージョンに含まれるhttpモジュールのllhttpパーサーは、HTTPリクエストを区切るためにCRLFシーケンスを厳密に使用していないため、HTTPリクエストスマグリング(HRS)につながる可能性があります。 

HTTP Request smuggling は、HTTP サーバーによるリクエストの適切な処理を妨害します。この悪用がもたらす可能性のある影響には、システムへの不正アクセスの許可、攻撃者によるデータ(データベース、ユーザーアカウント、その他の記録)の変更、セッションハイジャック、情報漏洩、キャッシュポイズニング、サービス拒否などがあります。

この問題は、以下のバージョンのNode.jsに影響します:16.0.0から16.20.1まで(ただし16.20.1を除く)、18.0.0から18.16.1まで(ただし18.16.1を除く)、20.0.0から20.3.1まで(ただし20.3.1を除く

 

詳細

モジュール情報

影響を受けるパッケージ: llhttp

影響を受ける Node.js のバージョン: 14 LTS

リポジトリ https://github.com/nodejs/node

公開パッケージノード

パッケージマネージャ:npm

脆弱性情報

この深刻度の高い脆弱性は、多くのバージョンの llhttp ライブラリに存在します。RFC7230 セクション3は、CRLFシーケンスだけが各ヘッダーフィールドを区切るべきであることを示していますが、このライブラリの脆弱なバージョンは、HTTPヘッダーフィールドを区切るためにCR文字だけを許可しています(LFなし)。 

このライブラリはNode.jsにバンドルされているため、v16、v18、v20ブランチのNode.jsの多くのバージョンが影響を受けます。

回避策はない。

再現の手順

  • サーバに脆弱なバージョンのNodeをインストールする。
  • ヘッダーフィールドを終了するために、"CRLF "の代わりに "CR "だけを使うHTTPリクエス トを作成する。下の例では、1つ目のリクエストは♪だけで終わっているので、2つ目のリクエストが密輸される可能性があります(Webサーバーの特定のレイヤーに隠されたり、Webサーバーの特定のレイヤーに誤解されたりします)。2つ目のリクエストは正しく形成されています。
POST / HTTP/1.1
ホスト: example.com
Content-Type: application/x-www-form-urlencoded
コンテンツ長: 11
クッキー:session=abc123
\r
data=payload1
POST /secret HTTP/1.1
ホスト: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
 
data=payload2

回避策はない。

緩和

すべてのユーザは、この脆弱性のないバージョンの Node にアップグレードする必要があります。

その他のリソース

脆弱性の詳細
身分証明書
HD-2024-1407
影響を受けるプロジェクト
Node.js
影響を受けるバージョン
4.21.3 LTS
発行日
2024年10月16日
≈ 確定日
2024年6月30日
で修正
重大性
高い
カテゴリー
HTTPリクエストの密輸