本文へ移動
情シスのミカタ
ニュース約3分で読めます

multerにサービス停止の欠陥 非同期のfileFilterで落ちる 2.5.0へ

Node.jsのWebの仕組みExpressで、ファイルのアップロードを受け取るのに広く使われる部品multerに、1回の要求でNode.jsのプロセスを止められる脆弱性CVE-2026-113872(High、CVSS 7.5)が見つかりました。ファイルの選別(fileFilter)を非同期で書いている場合が対象で、2.5.0で直っています。

公開 情シスのミカタ編集部AIにより執筆チェック済み
文字
multerにサービス停止の欠陥 非同期のfileFilterで落ちる 2.5.0へ

この記事のまとめ

  • multerは、Expressでファイルのアップロードを受け取る部品です。ファイルを受け入れるかを決める処理(fileFilter)を非同期で書いていると、1回の要求でNode.jsのプロセスが止まる恐れがありました。
  • 認証のいらない1回の要求で起きるとされ、保存先の種類に関係なく、非同期のfileFilterを使うすべての仕組みが対象です。同期のfileFilterなら影響しません。
  • 対象は2.0.0以上2.5.0未満で、2.5.0(10月22日)で直りました。すぐ上げられなければ、fileFilterを同期の処理に書き換えます。
  • 1.x系は今回の範囲の外ですが、npmは1.x系に複数の脆弱性があるとして2.x系へ上げるよう案内しています。
こんな方に#20代#30代#40代実務

社内の申請の仕組みや、取引先から書類を受け取るWebの画面を、Node.jsとExpressで作っている会社は少なくありません。そのファイルのアップロードの受け取りに、よく使われるのがmulterです。Expressの開発の団体が保守しています。

このmulterに、認証のいらない1回の要求で、Node.jsのプロセスを止められる脆弱性CVE-2026-113872が見つかりました。深刻度はHigh(CVSS 7.5)です。条件は、受け取るファイルを選ぶ処理(fileFilter)を非同期で書いていることです。10月22日に出た2.5.0で直っています。

GitHubの勧告のデータベースのページ。題はmulter vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown。深刻度はHigh、7.5。影響する版は2.0.0以上2.5.0未満、直った版は2.5.0。説明は、非同期のfileFilterを設定していると1回の要求でNode.jsのプロセスが落ちうること、認証のいらない1回の要求で足り、保存先に関係なく影響し、同期のfileFilterは影響しないこと、2.5.0以降へ上げること、回避策は同期のfileFilterを使うこと。CVSS v3の値は、攻撃元がネットワーク、条件の複雑さが低、特権と利用者の関与は不要、可用性への影響が高。
multerの勧告。非同期のfileFilterで1回の要求でも落ちる出典: GitHub Advisory Database「GHSA-q7qp-rjg7-q26m」(引用)

起きることと条件

項目 内容
CVE CVE-2026-113872(GHSA-q7qp-rjg7-q26m)
深刻度 High(CVSS 3.1で7.5)。影響は可用性(サービスの停止)
起きること Node.jsのプロセスが落ちる
条件 fileFilterを非同期で設定している。保存先(ディスク・メモリなど)の種類は問わない
認証 要らない。1回の要求で起きる
影響しない場合 fileFilterが同期の処理
対象 2.0.0以上2.5.0未満
直った版 2.5.0(2026年10月22日)
回避策 fileFilterを同期の処理にする

なぜ1回の要求で落ちるのか

勧告によると、1つの要求に複数のファイルが入っていて、あるファイルが断られるなどして要求が打ち切られたとき、別のファイルの非同期のfileFilterがまだ結果を返していないことがあります。その処理があとから終わると、multerがもう片づけた読み込みの流れを動かそうとします。下で使っている部品(busboy)がその流れでエラーを出しますが、受け止める処理がもう無いため、Node.jsはこれを処理されないエラーとして扱い、プロセスを終わらせます。

ファイルの中身を調べる、データベースに問い合わせる、といった処理をfileFilterの中で待つ書き方は、珍しくありません。その書き方が、今回の条件にそのまま当てはまります(当社の見立て)。

1.x系は別の理由で上げる

今回の範囲は2.x系だけですが、1.x系を使い続けている仕組みもあります。npmは1.x系の最後の版(1.4.5-lts.2)に、「1.x系は複数の脆弱性の影響を受けており、2.x系で直っている。最新の2.x系に上げるように」との注意を付けています。1.x系の仕組みは、この機会に2.5.0へ上げる計画に入れます。

影響する会社・しない会社

  • 影響する: multerの2.0.0から2.4.x系を使い、fileFilterを非同期で書いているNode.jsのWebの仕組みを動かしている会社。アップロードの受け口を外に開いていれば、外から止められる恐れがあります
  • 確かめる: 外部に開発や保守を任せた申請の画面や、取引先との書類のやり取りの画面を持つ会社。中でmulterを使っているかを委託先に聞きます
  • 影響しない: multerを使っていない仕組み。fileFilterを使っていないか、同期の処理で書いている仕組みも、今回の条件には当てはまりません

情シスが今日やること

  1. 使っている仕組みを洗い出します。 開発の部門や委託先に、npm ls multer などでmulterの版を調べてもらい、アップロードの受け口を持つ仕組みの一覧を作ります。
  2. fileFilterの書き方を確かめます。 非同期で書いているか(Promiseを待つ、外の処理の結果を待つ、など)を、仕組みごとに記録します。
  3. 2.5.0へ上げます。 外に開いたアップロードの受け口から優先して上げます。すぐ上げられない仕組みは、勧告の回避策のとおり、fileFilterを同期の処理に書き換えます。
  4. 落ちたときに気づけるようにします。 プロセスが異常終了したときに通知が届き、自動で立ち上がるかを確かめます。アップロードの受け口に、同じ送り元からの要求の数の上限を設けることも考えます(当社の見立て)。

よくある質問

QfileFilterを使っていなければ影響しませんか。

A勧告は、非同期のfileFilterを設定している場合が影響すると書いています。fileFilterを使っていない場合や、同期の処理で書いている場合は、今回の条件に当てはまりません。ただし、最新の2.5.0に上げておくのが確かです。

Q落ちてもすぐ立ち上がる設定なら大丈夫ですか。

Aプロセスの管理の仕組みで自動で立ち上がるとしても、1回の要求で落ちるため、繰り返されるとサービスが止まり続けます。処理の途中の要求も失われます。2.5.0への更新が対策です。

出典・参考

チェック済み。この記事は監修者によってチェックされました。(2026年10月25日)

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします