wolfSSL 5.9.4 をリリースしました。本リリースでは、新しい暗号アルゴリズムの追加、耐量子暗号対応の拡充、新たなハードウェアへの対応、大規模なアセンブリ最適化に加え、複数の脆弱性を修正しました。wolfSSL は常に最新リリースへの更新をお勧めしています。本リリースで修正した重要度 High の脆弱性の影響を受けるユースケースは次のとおりです。
- 信頼済みピア証明書(
WOLFSSL_TRUST_PEER_CERT。--enable-nginx、--enable-haproxy、--enable-all、--enable-distroなど、OPENSSL_COMPATIBLE_DEFAULTSを使用するビルドも該当) - クライアント側での複数 OCSP レスポンスのステープリング(
HAVE_CERTIFICATE_STATUS_REQUEST_V2とWOLFSSL_CSR2_OCSP_MULTIの併用) - クライアント側の Raw Public Key(
--enable-rpk、--enable-all、--enable-distro)
脆弱性への対応
本リリースでは 11 件の CVE(重要度 High 3 件、Medium 4 件、Low 4 件)に対応しました。5.9.2 の 32 件から減少しています。今回対応した脆弱性の大半は、デフォルトではない特定のビルド構成や API の使い方にのみ該当します。主な修正対象は、名前制約(Name Constraints)、信頼済みピア証明書の照合、OCSP/CRL のフォールバックに関する証明書検証のほか、(D)TLS 1.2 クライアントにおける ChangeCipherSpec の順序や、TLS 1.2 のセッション再開におけるセッションキャッシュ参照などです。
Anthropic OSS プログラム、Cantina Security、Jorge Milla 氏(Pig-Tail)、PathDiff、Fuzz0x チーム、Jack Lloyd 氏、Ben Smyth 氏、そして複数の個人コントリビューターの皆様をはじめ、脆弱性を責任ある形で開示してくださったすべての研究者の皆様に感謝申し上げます。
対応した脆弱性の全一覧は wolfSSL 脆弱性ページをご覧ください。
重要な変更点
- liboqs を一切使用しないようにしました。Falcon を wolfCrypt ネイティブで実装し、liboqs への依存と、関連する configure および CMake のオプションを削除しました
- DER 構造の後ろに余分なバイトが続く証明書は、
WOLFSSL_NO_ASN_STRICTを定義していない限り受け付けないようにしました --disable-tlsv12で TLS 1.2 を完全にコンパイル対象から除外するようにしました。また、WC_RNGがデフォルトでインスタンスごとのロックと fork ハンドラを備えるようにし、1 つの RNG をスレッド間およびfork()をまたいで共有できるようにしました- FIPS ビルドでは、HMAC-MD5 を拒否し、短い AES-GCM IV には
FIPS_BAD_VALUE_Eを返し、CMAC の最小タグ長を 64 ビットとし、ハッシュ長を超える RSA-PSS のソルトを FIPS 186-5 に従って拒否するようにしました
新機能
- パスワードハッシュ Argon2(RFC 9106)、AES-GCM-SIV(RFC 8452)、KMAC および cSHAKE(SP 800-185)、パディング付き AES 鍵ラップ(RFC 5649)の各アルゴリズムと、タイムスタンププロトコル(RFC 3161)の実装を追加
- フットプリントを抑えた TLS 1.3 専用プロファイル
--enable-tinytls13を追加(最小構成は PSK + ECDHE。オプションで最小限の X.509 も利用可能) - レコードあたりの
recv()呼び出し回数を削減する TLS 受信の先読み(--enable-readahead)と、送信経路でのゼロコピー AEAD 暗号化を追加 - Extended Master Secret の強制と、(D)TLS 1.3 での外部 PSK の必須化を、実行時に設定できる API を追加
- EU サイバーレジリエンス法への準拠を支援するため、
make sbom(SPDX 2.3 + CycloneDX 1.6)による SBOM 生成と、make bomsh(OmniBOR によるビルド来歴)を追加 - 証明書パーサのプロファイル
WOLFSSL_X509_TINYとWOLFSSL_X509_VERIFY_ONLYを追加。また、WOLFSSL_NO_MALLOCビルドで、メモリ確保を一切行わない X.509 検証を実現
耐量子暗号のアップデート
- liboqs ラッパーに代わるネイティブ Falcon(レベル 1 と 5)を実装。Crypto Callback に対応し、ARM DSP / AArch64 NEON による高速化も実施
- FrodoKEM を追加。C 実装と、x86_64、AArch64、AArch32、Thumb2 向けのアセンブリ実装に加え、ASN.1 形式の鍵と X.509 証明書にも対応
- TLS 1.3 および DTLS 1.3 のハンドシェイクで、全 12 パラメータセットの SLH-DSA(FIPS 205)による認証に対応
- 耐量子暗号のみを使用する TLS 1.3 ビルドに対応(鍵交換に ML-KEM、認証に ML-DSA または SLH-DSA を使用し、RSA/ECC/DH を含まない構成)
- PKCS#7/CMS SignedData(RFC 9882)および OpenSSL 互換レイヤーで ML-DSA に対応
- ML-KEM と ML-DSA の AVX512 アセンブリ、定数時間で行う ML-DSA の low bits チェック、新しいバンドル
--enable-all-quantum-cryptoを追加
TLS / DTLS の改善
- RFC 9846(TLS 1.3 の改訂版)への準拠に向けた対応(general_error アラート、鍵更新の制限、NewSessionTicket の堅牢化を含む)
- 証明書チェーンで提示された中間 CA に対して Extended Key Usage の制約を適用するようにしました
- TLS 1.2 クライアントで RFC 5746 の renegotiation_info をデフォルトでチェックし、TLS 1.2 では SHA-1 の署名スキームをデフォルトで提示しないようにしました
- DTLS: ローテーション可能な Cookie シークレット、DTLS 1.2 の Connection ID 対応、ピアアドレスの扱いの厳格化、DTLS 1.3 の動作に関する多数の修正
- DTLS のスループットを測定するベンチマーク
dtls_benchを新たに追加し、DTLS の送信経路を最適化
ハードウェア・組み込みポート
- HAL を必要としない STM32 ベアメタル暗号ポートを追加。DHUK(Device Hardware Unique Key)によるハードウェア保護鍵に対応し、約 20 の STM32 ファミリーにわたる計 27 ボードで検証済み。STM32V8(Cortex-M85)と STM32CubeMX2 にも対応
- RealTek AmebaPro2、WISeKey/SealSQ VaultIC、Vorago VA416x0 TRNG、TI C2000 C28x DSP ファミリー向けの新しいポートを追加
- SE050/SE05x の機能強化(オンチップでの鍵生成、SCP03 鍵のローテーション、アテステーションなど)。あわせて Zephyr、NetX、Renesas、NXP ほか各ポートの修正
アセンブリによる性能改善
- AVX512/VAES を使用した Intel x64 向けの新しい AES アセンブリ、AVX512 による ChaCha20-Poly1305、AVX512 IFMA による X25519/Ed25519 を追加
- AArch64 および ARM32 での実行時 CPU 機能ディスパッチ、PPC64/PPC32 向けの新しい AES および SHA アセンブリ、RISC-V 64 ビット向けの SP(単精度数学ライブラリ)の完全な実装を追加
ビルドシステム
- CMake に約 100 のオプションと 37 のアプリケーションバンドルを追加し、autotools と機能を揃えました
- Linux および FreeBSD のカーネルモジュールの改善と、FIPS v7 に向けた準備
Rust ラッパー
- wolfssl-wolfcrypt Rust クレートのバージョン 2.1.0 と 2.2.0 をリリース。dilithium モジュールを mldsa に改名し、ビルドオプションに応じた機能の有効・無効の切り替えに関する多数の修正を実施
アップデートの入手
変更点の全一覧は ChangeLog をご覧ください。
wolfSSL はダウンロードページから入手できます。
もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。
