Node.jsのWebの仕組み「Express」で広く使われる部品「body-parser」に、1回の要求でアプリが止まる欠陥(CVE-2026-111181)が見つかりました。送られてきた本文を読む部品で、既定の設定のままで当たり、認証も要りません。GitHubの勧告のデータベースには、日本時間の10月24日に載りました。
直った版の1.20.9と2.4.0は、10月22日(協定世界時)に出ています。
勧告で分かったこと
body-parserの直った版と、Expressの依存の範囲作成: 編集部 / もとの資料: GitHub Advisory Database(GHSA-27r3-jxmh-p828)、body-parserのリリース、npm
| 項目 |
勧告の内容 |
| 起きること |
gzipなどで圧縮した本文の後ろに余分なバイトを付けると、展開の部品が誤りを出し、捕まえられずにアプリの処理が終わる |
| 条件 |
既定の設定のbody-parserを使うアプリ。経路の振り分けの前に本文を読むため、認証も、当たる経路も要らない |
| 深刻度 |
High(CVSS 3.1で7.5) |
| 対象 |
1.20.9より前、2.0.0以上2.4.0未満 |
| 直った版 |
1.20.9、2.4.0 |
| 回避策 |
圧縮した本文を受け付けないなら、inflate: falseを渡す |
勧告によると、要求そのものには普通に応答したあとで、処理が落ちます。アプリを自動で起こし直す仕組みがあっても、同じ要求を繰り返されると、止まったり動いたりを繰り返すことになります(当社の見立て)。
Expressを上げなくても直る
npmの記録では、Expressの最新の版は、次のようにbody-parserを指定しています。
| Expressの版 |
body-parserの指定 |
直った版が範囲に入るか |
| 4.22.3(4系の最新) |
~1.20.5 |
入る(1.20.9) |
| 5.3.0(5系の最新) |
^2.3.0 |
入る(2.4.0) |
指定の範囲に直った版が入るため、Expressの新しい版を待たなくても、依存を入れ直せば直った版が入ります。ただし、ロックファイル(package-lock.jsonなど)で古い版に固定されていると、そのままでは変わりません。
影響する会社・しない会社
- 影響する: Node.jsとExpressで、社外に公開するWebのアプリやAPIを動かしている会社です。1回の要求で止められる恐れがあります。
- 影響する: 委託先が作ったNode.jsのアプリや、Node.jsで動く製品を使っている会社です。中にbody-parserが入っているかを確かめます。
- 影響しない(勧告の範囲では): body-parserを使っていない仕組みです。