注目★★★★★GitHub Advisory
Nodemailer 9.1.0でメール宛先DoSを修正、9.0.6は即更新
30秒で把握
- 1Nodemailer 9.0.6以前にO(n²)宛先解析でイベントループ停止
- 2約1.5MBの宛先でCPU 100%が約25〜30秒継続
- 39.1.0で修正、200,000件の解析を約25秒から約80msへ短縮
要約
Nodemailer 9.0.6以前のaddressparserに、細工した宛先リストでNode.jsのイベントループを停止させるO(n²)の処理欠陥がある。約1.5MBの入力でCPU使用率100%の状態が約25〜30秒続き、数MBでは停止が数分に及ぶ。To、Cc、Bcc、From、Reply-Toや公開APIのaddressparserが通常経路で影響を受け、特別な設定や受信者の協力は必要ない。Nodemailer 9.1.0で3つの二次計算量経路と大量宛先処理を修正し、200,000件の解析時間を約25秒から約80msへ短縮した。新たにmaxRecipientsの既定値100,000も追加された。
あなたへの影響
Nodemailer 9.0.6以前を使い、利用者入力が宛先に入る日本のサービスは、近日中に9.1.0へ更新し、入力長と宛先数の上限も確認してください。
推奨:O(n²)は入力が増えると処理量が二乗で増える計算量です。