WORK.SIGNALALL SIGNALS
/ 仕事 / DEEP DIVE

Express関連のbody-parserに重大脆弱性。認証不要の1リクエストでサーバー停止の恐れ

93 / 100SIGNAL DEEP DIVE仕事約3分で読める

Expressなどで使われるbody-parserにHigh(CVSS 7.5)のDoS脆弱性。圧縮リクエストの末尾データが未捕捉例外を起こす可能性があり、修正版1.20.9/2.4.0への更新が必要だ。

30秒でわかる / THE SIGNAL

body-parserのCVE-2026-111181は、gzipなどの圧縮リクエストを処理する際に未捕捉例外が発生し、Node.jsプロセスが終了する可能性がある脆弱性。High(CVSS 7.5)。body-parser 1.20.9または2.4.0へ更新し、圧縮リクエストが不要な環境ではinflate: falseも検討したい。

何が起きた? 認証不要のリクエストでサービス停止の恐れ

2026年10月22日、Expressエコシステムのbody-parserについて、CVE-2026-111181(GHSA-27r3-jxmh-p828)が公開された。深刻度はHigh、CVSS v3.1は7.5。影響を受けるアプリケーションでは、細工された圧縮リクエストを1回送信するだけでNode.jsプロセスが異常終了し、サービス停止につながる可能性がある。

問題は圧縮データを展開するストリームの後処理にある。正しい圧縮フレームの後ろに余分なバイト列を付けたリクエストを処理すると、レスポンスを返した後にデコーダーがエラーを発生させ、その例外が捕捉されずプロセスを終了させ得る。body-parserがルーティング前に動作する構成では、認証や特定のURLへのアクセスを必要としない。

影響バージョンと修正版

影響するのはbody-parserの1.20.9未満、および2.0.0以上2.4.0未満。修正版は1.20.9と2.4.0。利用しているメジャーバージョン系列に応じて修正版へ更新する。Node.js本体の更新とは別に、アプリケーションの依存パッケージとしてbody-parserを確認する必要がある。

なお、Expressを利用するすべてのアプリケーションが必ず同じ条件で影響を受けるわけではない。body-parserの利用有無、バージョン、圧縮リクエストの受け付け方、ミドルウェアの設定を確認したい。

なぜ重要? 攻撃者の権限が不要

公式アドバイザリでは、ネットワーク経由で攻撃可能、攻撃の複雑さは低く、事前の権限やユーザー操作は不要と評価されている。機密情報の流出やデータ改ざんではなく、可用性への影響が中心となる。

サービスの再起動設定があっても、攻撃リクエストが繰り返されれば障害が継続する恐れがある。外部に公開するAPIやフォームなど、リクエスト本文を受け付けるサービスでは、利用状況を優先的に点検したい。

企業・運用担当者が確認したい3項目

第一に、アプリケーションの依存関係を確認する。package-lock.json、pnpm-lock.yaml、yarn.lockなどのロックファイルや「npm ls body-parser」等で、直接・間接依存を含めた利用状況と実際に解決されるバージョンを確認する。

第二に、body-parserを利用しているサービスの公開範囲と、Content-Encoding付きリクエストを受け付ける設定を調べる。Express標準のリクエスト処理や別のパッケージからの間接利用もあるため、単にソースコードでbody-parserを検索するだけでは見落とす可能性がある。

第三に、body-parser 1.20.9または2.4.0以降へ更新し、動作テストを実施して再デプロイする。更新後は稼働環境で修正版が読み込まれていることまで確認したい。

更新できない場合の暫定対策と注意点

圧縮されたリクエスト本文を受け付ける必要がない場合、body-parserミドルウェアに「inflate: false」を指定することで、デコード処理に入る前に圧縮リクエストを拒否できる。これは公式アドバイザリが示す回避策だ。ただし圧縮リクエストを利用する正規クライアントには影響するため、適用前に仕様を確認する。

実際の悪用が確認されたという一次情報は、今回参照した公式アドバイザリには記載されていない。脆弱性の公開と実環境での悪用確認は区別すべきだ。

一次情報:Express/body-parser公式セキュリティアドバイザリ https://github.com/expressjs/body-parser/security/advisories/GHSA-27r3-jxmh-p828

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

気になった変化を共有して、次のシグナルへ。

SHARE THIS SIGNAL

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS