概要
Perlの暗号化モジュールCrypt::NaCl::Sodiumのバージョン2.002以前に、整数オーバーフローの潜在的な脆弱性(CVE-2026-30909)が報告されています。この問題は、bin2hex、encrypt、aes256gcm_encrypt_afternm、sealといった特定の関数において、出力バッファのサイズ計算が不適切に行われる可能性があることに起因します。
影響範囲
- Perlモジュール
Crypt::NaCl::Sodiumのバージョン2.002以前
想定される影響
- 非常に大きなメッセージ長を扱う際に、整数オーバーフローが発生し、出力バッファが想定よりも小さく確保される可能性があります。これにより、データの一部が欠落したり、予期せぬ動作を引き起こしたりする恐れがあります。
- ただし、報告によると、この問題が発生するにはメッセージ長が極めて大きくなる必要があるため、実際にこの脆弱性に遭遇する可能性は低いとされています。
攻撃成立条件・悪用状況
- 攻撃が成立するには、処理されるデータ(メッセージ長やバイナリ長)がシステムが扱える最大値(SIZE_MAX)の半分以上など、非常に大きな値である必要があります。
- 具体的には、
bin2hex()ではbin_lenがSIZE_MAX / 2より大きい場合、encrypt()やaes256gcm_encrypt_afternm()ではmsg_lenがSIZE_MAX - 16Uより大きい場合、seal()ではenc_lenがSIZE_MAX - 64Uより大きい場合に問題が発生する可能性があります。 - 現時点では、この脆弱性が実際に悪用されたという報告は確認されていません。
推奨対策
今すぐできる対策(優先度:高)
Crypt::NaCl::Sodiumモジュールを最新の修正済みバージョンにアップデートしてください。現時点では具体的な修正バージョンは明記されていませんが、ベンダーからの情報提供があり次第、速やかに適用することが推奨されます。
中長期的な対策
- システムで使用しているライブラリやモジュールのバージョン管理を徹底し、定期的に脆弱性情報を確認する体制を構築してください。
一時的な緩和策
- この脆弱性は非常に大きなデータサイズを扱う場合に限定されるため、通常の使用状況では影響を受けにくいと考えられます。もし、極めて大きなデータを処理する可能性がある場合は、当該モジュールを使用する処理を見直すか、一時的に代替手段を検討することも考えられます。
確認方法
- ご自身のシステムで利用しているPerlモジュール
Crypt::NaCl::Sodiumのバージョンを確認してください。 - Perlのコマンドラインから
perl -M Crypt::NaCl::Sodium -e 'print $Crypt::NaCl::Sodium::VERSION'を実行することでバージョンを確認できます。
参考情報
- CVE-2026-30909 詳細: https://cvefeed.io/vuln/detail/CVE-2026-30909