postal-mime: 多数の結合可能なRFC 2047 base64エンコードされた単語を含むヘッダーをデコードする際の、2次的なCPU使用量
### 影響
`Subject`、`From`、`To`、ファイル名、または説明に含まれる、多数の結合可能なRFC 2047 base64エンコードされた単語が連続して含まれるヘッダーをデコードする場合、デコードにかかる時間は、単語の数に対して2次関数的に増加します。結合チェックでは、結合されたテキストに対して正規表現が適用され、これにより累積された文字列が毎回フラット化されます。約1.6MBのサイズのメッセージが、ホストによって1秒から20秒間、イベントループをブロックし、インラインの`message/rfc822`パートはさらにコストを増加させます。なぜなら、ネストされた各メッセージは、独自のヘッダー制限を持っているからです。
postal-mime 3.0.0から4.0.7までのバージョンで、信頼できないメールを解析するすべてのアプリケーション(エクスポートされた`decodeWords()`ヘルパーを含む)が影響を受けます。機密性や完全性への影響はありません。
### 修正
4.0.8で修正されました。パディングチェックでは、結合されたテキスト全体をテストするのではなく、最後に付加された単語を追跡するように変更されました。これにより、デコードにかかる時間はヘッダーの長さに比例するようになります。同じバージョンでは、インラインの`message/rfc822`サブメッセージのパートとヘッダーのバイト数を、メッセージ全体の制限に対してカウントし、`maxHeadersSize`の少なくとも64バイトのヘッダー行数をカウントし、パーサーの各段階を2つの入力サイズで測定するスケーリングテストを追加しました。
### 対策
メッセージごとのコストを制限するために、`maxHeadersSize`をデフォルトの2MiBから下げるか、信頼できないメールを、終了できるワーカープロセスで解析してください。
### 貢献者
Felipe Fernández氏が報告。
影響を受けるパッケージ:
- npm (JavaScript) postal-mime: 影響あり >= 3.0.0, < 4.0.8、4.0.8で修正済み。