WORK.SIGNALALL SIGNALS
/ 仕事 / DEEP DIVE

ファイルを送るだけでサーバー停止?Node.jsのMulterに重大脆弱性、2.5.0へ更新を

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

Node.jsのファイルアップロード処理に使われるMulterで、非同期fileFilterを利用する場合に認証不要の1リクエストでプロセスが停止し得る脆弱性CVE-2026-113872が公表された。影響条件、修正版2.5.0、運用担当者が確認すべき点を整理する。

30秒でわかる / THE SIGNAL

ファイルアップロード用のMulter 2.0.0以上2.5.0未満にHIGH(CVSS 7.5)の脆弱性。非同期fileFilterを使用している場合、認証不要のリクエストでNode.jsプロセスが終了する可能性がある。公式は2.5.0以降への更新を推奨している。

ファイルアップロード機能が、サービス停止の入口になる

2026年10月22日、Node.js向けのファイルアップロード処理ライブラリ「Multer」に、サービス停止(DoS)につながる脆弱性CVE-2026-113872が公表された。深刻度はHIGH、CVSS v3.1は7.5。対象はMulter 2.0.0以上、2.5.0未満だ。

Multerは、Webフォームから送られる画像や文書などのアップロード処理に使われる。今回の問題はNode.js本体の脆弱性ではなく、その周辺ライブラリにある。Node.jsを利用するすべてのサービスが影響を受けるわけではない。

公式勧告:https://github.com/expressjs/multer/security/advisories/GHSA-q7qp-rjg7-q26m

なぜ、1回のリクエストで停止するのか

MulterのfileFilterは、アップロードされたファイルを受け付けるかどうか判定する仕組みだ。非同期のfileFilterを使っている場合、別のファイルの判定が終わらないうちにリクエストが中断されると、すでに終了処理されたストリームへ後からアクセスしてしまう場合がある。

その結果、内部のパーサー「busboy」が、受け取り先のないerrorイベントを発生させ、Node.jsプロセスが異常終了する可能性がある。公式勧告では、条件を満たす構成ならログインしていない攻撃者の単一リクエストで起こり得ると説明している。ストレージエンジンの種類には依存しない。

これは、ファイルをアップロードしただけであらゆるサーバーが停止するという意味ではない。非同期fileFilterの利用が重要な成立条件だ。

影響バージョンと修正版

影響するのはMulter 2.0.0以上、2.5.0未満。修正版は2.5.0で、公式リリースにもCVE-2026-113872の修正が明記されている。同期型のfileFilterだけを利用するアップロード処理は、この脆弱性の影響を受けないとされる。

確認時には、アプリケーションのpackage.jsonだけでなく、実際にインストールされた依存関係と本番環境への反映状況を調べたい。ライブラリが含まれていることと、脆弱な使い方をしていることは別の問題だ。

公式リリース:https://github.com/expressjs/multer/releases/tag/v2.5.0

管理者が今日確認したいこと

まず、公開中のサービスでMulterを使用しているか、バージョンが2.0.0以上2.5.0未満か、fileFilterを非同期で実装しているかを確認する。該当する場合はMulter 2.5.0以降へ更新し、アップロード、ファイル拒否、途中切断などの正常・異常系をテストしたうえで本番へ反映する。

直ちに更新できない場合、公式は同期型fileFilterの利用を回避策として示している。ただし、アプリケーションの要件によって変更が難しいこともあるため、保守担当者と影響範囲を確認したい。監視ではプロセス再起動や異常終了の増加にも注意する。

本稿執筆時点で、公式勧告から実際の攻撃での悪用を確認したとは読み取れない。脆弱性の存在と悪用の発生は分けて判断する必要がある。

WORK SIGNALの視点|本体だけ更新しても守れない

Node.js本体のセキュリティ更新を確認していても、周辺ライブラリに脆弱性が残る可能性がある。今回のMulterと、先に報じたbody-parserは、その分かりやすい例だ。

開発者だけでなく、サービスを発注・運営する企業にも問われるのは『誰が依存ライブラリの更新を確認するのか』という管理体制だ。公開後も保守対象の一覧を持ち、公式のセキュリティ勧告を受け取って対応できるようにする。サービスを止めないための仕事は、公開してからも続いている。

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

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

SHARE THIS SIGNAL

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS