Mongooseの脆弱性CVE-2026-125120|countDocumentsの入力保護と修正版

公開 2026-11-13公表 2026-11-03資料確認 2026-11-13JavaScript / TypeScriptの脆弱性 312件のまとめ
対象製品Mongoose
識別番号CVE-2026-125120・GHSA-pcrw-h46h-c93h
影響範囲6.13.11未満、7.0.0〜7.8.11、8.0.0〜8.24.2、9.0.0〜9.9.1
修正情報6.13.11・7.8.12・8.24.3・9.9.2

MongoDBをNode.jsから扱うライブラリMongooseで、件数を数えるcountDocuments()に入力保護のsanitizeFilterが適用されない脆弱性CVE-2026-125120が公表されました。外部から受け取ったオブジェクトを検索条件に渡し、この保護に頼っている処理は確認が必要です。使っている系列の修正版に更新し、件数取得に渡る入力と保護の設定も確かめます。[1]

この記事の要点
  • 対象はcountDocuments()の検索条件です。sanitizeFilterを設定していても、修正前の版ではこの処理に適用されません。
  • この件の修正版は6.13.11・7.8.12・8.24.3・9.9.2です。同時期の接続単位の設定不備なども直す6.13.12・7.8.13・8.24.7・9.11.4を更新先にします。
  • 2026年11月13日の確認時点でCISA KEVへの掲載はありません。提供元はCVSS 3.1で9.8(緊急)と評価しています。

01countDocumentsで入力保護が働かない

MongooseのsanitizeFilterは、外部から受け取った値がMongoDBの検索演算子として扱われるクエリセレクターインジェクションを防ぐ仕組みです。提供元によると、修正前のcountDocuments()ではこの保護が適用されません。件数を数える処理にも、想定していない検索条件が入り込むおそれがあります。[1]

提供元Automattic/mongooseの深刻度はCVSS 3.1で9.8(緊急)です。この点数だけで、あらゆる利用形態でデータの取得や書き換えが可能になると判断せず、外部入力が届く処理を確かめます。[1]

02外部入力が件数取得の条件に入るか確かめる

対象パッケージはnpmのmongooseです。アプリケーション内のcountDocuments()を探し、引数の検索条件にリクエスト本文やURLパラメーターなどの外部入力が入るかを追います。入力を文字列などに限定しているか、オブジェクトをそのまま渡しているかも確認します。[1]

別件のCVE-2026-125119では、接続時のオプションにsanitizeFilter: trueを設定してもクエリに反映されません。接続の設定値がtrueと表示されることだけでは、保護が働くと判断できません。この別件については、グローバルまたはクエリごとの設定を使う利用者は影響を受けないと提供元が説明しています。[3]

03悪用の状況

2026年11月13日に確認した米CISAの「悪用が確認された脆弱性の一覧(KEV)」に、CVE-2026-125120は載っていません。これは悪用がないことの証明ではありません。[4]

この件の提供元アドバイザリには、実際の攻撃事例や攻撃用PoCの掲載はありません。掲載されたコードは、ミドルウェアで保護を適用する回避策です。[1]

04対象の版と推奨する版

提供元とOSVの影響範囲、npmで配布済みの版を2026年11月13日に照合しました。推奨する版は、この件に加え、接続単位のsanitizeFilterの不備など同時期の修正を含む版です。適用前に使用系列のリリースノートも確かめます。[2]

[3][5][6][7]

系列この件の対象この件の修正版推奨する版
6系以前6.13.11未満6.13.116.13.12
7系7.0.0〜7.8.117.8.127.8.13
8系8.0.0〜8.24.28.24.38.24.7
9系9.0.0〜9.9.19.9.29.11.4

5系以前は影響範囲の「6.13.11未満」に含まれますが、その系列向け修正版はアドバイザリに記載がありません。メジャー版を移る場合は互換性の確認が必要です。npmの実行環境要件は、上記の推奨版でそれぞれNode.js 12.0.0以上、14.20.1以上、16.20.1以上、20.19.0以上です。[5]

05確認・更新・反映の確認

  1. npm ls mongoose --allで、直接・間接の依存関係にある版を調べます。package-lock.jsonに記録されたmongooseの版も確認します。複数の版があれば、それぞれを調べます。

  2. countDocuments()に渡す入力とsanitizeFilterの設定箇所を確認します。更新は設定の代わりにはならないため、保護を使う設計なら有効になっていることも確かめます。

  3. 直接依存の8系ならnpm install mongoose@8.24.7のように使用系列の推奨版へ更新します。間接依存ならnpm explain mongooseで依存元を調べ、そのパッケージの更新を検討します。

  4. 通常の件数取得と、不正な型の入力を受け付けないことをアプリケーションのテストで確かめます。依存関係を含めて再ビルド・再配置し、配備する成果物でもnpm ls mongoose --allとlockファイルの版を確認します。

脆弱性の公表・更新一覧 2026年10月版の表紙
資料(無料)脆弱性の公表・更新一覧 2026年10月版60日間の公表・更新と、悪用が確認された脆弱性を分析し、どこから直すかの考え方と確認の手順をまとめた資料です。

06すぐ更新できないとき

提供元は、countDocumentsのpreミドルウェアでmongoose.sanitizeFilter(this.getFilter())を呼び出し、検索条件を明示的に処理する方法を掲載しています。スキーマやプラグインへの組み込みと動作確認が必要です。[1]

更新までの間も、件数取得のAPIが受け入れる項目と型を確認し、不要なオブジェクトを検索条件へ渡す経路を減らします。通常の検索が動くことだけでなく、件数取得の経路を個別にテストしてください。

07通常の検索と件数取得を別々に点検する

この脆弱性はcountDocuments()への適用漏れです。画面の一覧検索を点検していても、ページ数や総件数を取得する処理が別のクエリなら、その経路にも確認が必要です。接続設定の不備は別件なので、countDocuments()の修正版だけに留めず、上の推奨版と設定箇所を併せて確認します。[1]

[3]

よくある質問

MongoDB本体を更新すれば解決しますか?

今回の対象はNode.js側のMongooseです。アプリケーションが実際に使うmongooseの版と入力保護を確認します。

sanitizeFilterがtrueなら安全ですか?

修正前のcountDocuments()には適用されません。また、接続単位の設定が反映されない別件もあるため、版と設定箇所の両方を確認します。

8.24.3で止めず8.24.7にする理由は?

8.24.3はこの件の修正版ですが、8.24.7には接続単位のsanitizeFilterの不備など、同時期に公表された別の問題への修正も含まれます。

出典・参考資料

  1. Automattic/mongoose:GHSA-pcrw-h46h-c93h2026-11-03(日本時間)、2026-11-13確認 / countDocumentsへの適用漏れ、影響範囲、修正版、回避策、CVSS 3.1 9.8
  2. OSV:GHSA-pcrw-h46h-c93h2026-11-13確認 / CVE番号、パッケージ、系列ごとの影響範囲と修正版
  3. Automattic/mongoose:GHSA-gg4r-jv3p-qx3c2026-11-13確認 / 接続単位のsanitizeFilterの不備、設定条件、6.13.12・7.8.13・8.24.7・9.11.4の修正
  4. 米CISA:Known Exploited Vulnerabilities Catalog2026-11-13確認 / CVE-2026-125120の掲載がないこと
  5. npmレジストリ:mongoose2026-11-13確認 / 推奨版4系列の配布済み確認とNode.jsの実行環境要件
  6. Automattic/mongoose:8.24.7リリースノート2026-10-23、2026-11-13確認 / 接続単位のsanitizeFilterほか同時期の修正
  7. Automattic/mongoose:9.11.4リリースノート2026-10-23、2026-11-13確認 / 接続単位のsanitizeFilterほか同時期の修正

あわせて読みたい記事

JavaScript / TypeScript公開 2026-11-11

Viteの脆弱性GHSA-p4f5-76q4-ffq7|開発サーバーでコード実行、確認方法と修正版

ネットワークへ公開したViteの開発サーバーで、コード実行やファイル漏えいが起きる脆弱性。6〜8系とVite+の対象範囲、配布を確認できた修正バージョン、Rolldownを含む更新手順を説明します。

JavaScript / TypeScript公開 2026-11-01

Viteの脆弱性CVE-2026-118662|.envを読まれる6.4.4の確認方法と6.4.6への更新

Vite 6.4.4の脆弱性CVE-2026-118662は、ネットワークに公開した開発サーバーで、拒否したはずの.envなどを返すおそれがあります。10月6日の更新で6.4.4にした環境が対象になった理由、初期設定で条件がそろう点、Astro 5など間接の依存の確かめ方、6.4.6への上げ方を説明します。