WORK.SIGNALALL SIGNALS
/ SECURITY / DEEP DIVE

Hapi関連2件にHIGH DoS、multipart解析とJoiメール検証に影響

88 / 100SIGNAL DEEP DIVESECURITY約3分で読める

Node.js向けHapi関連ライブラリの@hapi/contentとjoiに、認証前のHTTP入力などからサーバーのイベントループを長時間停止させるHIGH脆弱性が公表された。いずれも正規表現の非効率な処理が原因で、開発元は@hapi/content 6.0.3、joi 17.13.9/18.3.1で修正した。影響はmultipartの受付設定やメール検証の使用条件によって異なる。

30秒でわかる / THE SIGNAL

Node.js向けHapi関連ライブラリの@hapi/contentとjoiに、認証前のHTTP入力などからサーバーのイベントループを長時間停止させるHIGH脆弱性が公表された。いずれも正規表現の非効率な処理が原因で、開発元は@hapi/content 6.0.3、joi 17.13.9/18.3.1で修正した。影響はmultipartの受付設定やメール検証の使用条件によって異なる。

multipart/form-dataの解析が認証前に止まる恐れ

CVE-2026-119202(GHSA-8494-f6mr-cjpv)は、@hapi/contentのContent.disposition()がContent-Dispositionパラメータを正規表現で解析する際、イコール記号を持たない長いトークンを繰り返し検査して二次計算量になる問題だ。@hapi/pezがmultipart/form-dataを処理するHapiルートでは、ハンドラや入力検証に到達する前に発生する。開発元の検証では約128KBの入力で約7秒、約1MBでは数分間処理が停止する例が示されている。外部公開のmultipart受付ルートがある場合、認証不要のDoSにつながり得る。

@hapi/content 6.0.3で修正、サイズ制限は補助策

公式GHSAによると@hapi/content 6.0.2以前が影響を受け、修正版は6.0.3。旧名contentの3.0.6~4.0.6も対象で、旧パッケージ側の修正版は記載されていない。パーサーの正規表現を変更し、長いトークンでも線形時間で処理できるようにした。更新までの一時的な負荷軽減策として、multipartを受け付けるルートのpayload.maxBytesを小さくすることが示されているが、根本的な修正の代替ではない。

Joiの複数メールアドレス検証にもHIGHのDoS

CVE-2026-118772(GHSA-4528-x5fx-h6hg)は、Joi.string().email({ multiple: true })の区切り文字処理に関する別件だ。長い空白文字列が入力されると、正規表現の試行が二次計算量になり、開発元の検証では約100KBの空白を処理するのに数秒かかった。外部入力をこのルールで検証し、事前の有効な長さ制限がない場合にイベントループがブロックされ得る。通常の単一メール検証すべてに影響するとの意味ではない。

修正版と現場の確認ポイント

joiは17.13.9と18.3.1で修正された。旧@hapi/joiの16.0.0以降についてはGHSAに修正版が記載されていない。更新できない場合、Joiの.max()による事前の長さ制限が回避策として示されている。ただしabortEarly:falseでは最大長に違反してもemailルールが動くため、同じ回避策が成立しない。依存関係の実際の解決バージョンと、外部公開のmultipartルート・multiple:trueの利用有無を確認することが重要だ。今回の2件について、CISA KEVへの掲載や実環境での悪用を裏付ける情報は確認していない。

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

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

SHARE THIS SIGNAL

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS