GitHub Advisory Databaseは、NodemailerのDKIM署名処理でサービス拒否を引き起こす脆弱性「CVE-2026-110871」を掲載しました。対象はnpmパッケージのnodemailer 10.0.9以下で、メール送信をきっかけに同じ実行環境の他の処理も滞る恐れがあります。資料では掲載日を確認できません。
宛先数や長い件名が、処理停止の入口に
DKIMは、送信メールに電子署名を付ける仕組みです。今回の脆弱性は、送信メールのDKIM署名が有効で、利用者が送信ヘッダーの大きさを操作できるアプリが対象です。ヘッダーは、宛先や件名などを記載する部分です。大量の宛先、長い件名、独自ヘッダーなどが攻撃の入口になります。
原因は、複数行に分かれたヘッダーの継続行を結合する処理にあります。結合によって膨らむ文字列に正規表現による処理を繰り返すため、処理量が入力の大きさの二乗に応じて増える「O(n^2)」になります。
アドバイザリでは、Node.js 24で継続行が約20,000行のときに約2.8秒、約40,000行のときに約11.5秒停止したとしています。また、60,000宛先のToヘッダーを使った送信処理では、約6.6秒停止しました。
署名中は、Node.jsで処理を進める仕組みであるイベントループが止まり、他の処理も滞ります。細工したメールの送信ごとにサービス拒否を繰り返せるとされており、メール送信処理だけの問題として切り分けないことが重要です。
本文のサイズ制限では防げず、修正版の確認も必要
DKIM処理には、ヘッダーの容量や継続行数の上限がありません。既存の署名処理のサイズ制限は本文用で、ヘッダーには効かないとされています。「メールのサイズは制限済み」という確認だけでは、今回の対策を済ませたことにはなりません。
暫定対策として、アドバイザリはDKIM署名対象の宛先数と、ヘッダー値の長さの制限を推奨しています。具体的な上限値は資料に示されていないため、自社の送信要件を踏まえて設定を検討する必要があります。
修正状況には確認が必要です。アドバイザリ本文は未修正とする一方、参考リンクにはv10.0.10のリリースがあります。この情報だけで「10.0.10に更新すれば修正済み」とは断定できません。更新を担当する開発者や委託先には、版の変更だけでなく、この脆弱性への修正内容まで確認してもらう必要があります。
影響する会社・しない会社
- 影響する: nodemailer 10.0.9以下を使い、送信メールのDKIM署名を有効にしている会社で、利用者が宛先数や件名、独自ヘッダーなどの大きさを操作できるアプリを運用している場合です。
- 影響しない: Nodemailerを使っていない会社は、今回示されたパッケージの影響範囲には含まれません。また、送信メールのDKIM署名が無効な場合は、記載された悪用の前提に当たりません。ただし、これを理由に署名を無効化するのではなく、利用条件と対策を確認してください。
日本での提供は発表には書かれていません。今回の影響範囲として示されているのは、地域や会社規模ではなく、パッケージの版と利用条件です。
情シスが今日やること
以下は、情シスから開発担当者や委託先へ依頼する確認手順です。
- 今日、メール送信機能を持つアプリの担当者に、依存パッケージの一覧でnodemailerの有無と実際に使っている版を確認してもらいます。10.0.9以下なら、確認対象として管理します。
- 対象アプリのメール送信設定と処理を担当者に点検してもらいます。DKIM署名が有効か、利用者の入力から宛先、件名、独自ヘッダーをどこまで変更できるかを整理します。特定の管理画面や項目名は資料に示されていません。
- 更新までの暫定対策として、宛先数とヘッダー値の長さを制限する案を開発担当者に依頼します。既存の本文サイズ制限だけで対応済みと判断せず、ヘッダーに制限が掛かるかを確認します。
- 更新先を決める前に、アドバイザリとv10.0.10のリリース内容を照合してもらいます。今日の確認結果は、対象アプリ、利用版、DKIMの設定、暫定対策、修正状況の未確認点に分け、運用責任者へ共有してください。