wolfSSLの新しいバージョン4.7.0をリリースしました。このリリースには一般的な修正と最適化、機能追加、およびいくつかの脆弱性の修正を含んでいます。TLS1.3の問題について報告をいただいたTélécom SudParisのAina Toky Rasoamanana氏とOlivier Levillain氏に感謝します。
機能追加
- OpenSSL互換レイヤーを拡張し、SSL_get_verify_mode,X509_VERIFY_PARAM, X509_STORE_CTX APIを追加
- TLSアラートのサブセットを有効にするためのWOLFSSL_PSK_IDENTITY_ALERTマクロの追加
- TLS1.3セッションチケットを保持したままTLS1.2セッションチケットを無効化するためのwolfSSL_CTX_NoTIcketTLSv12関数を追加
- RFC 5705:Keying Material Exporters for TLS を実装
- デバッグ支援としてより決定的なライブラリ出力を得るための”–enable-reporoducible-build” コンフィギュレーションオプションの追加
修正事項
- 証明書マネジャが解放された際にmutexを開放するように修正
- OpenSSL互換レイヤーのEVP関数が正しいブロックサイズとタイプを返すように修正
- DTLSの再ネゴシエーション機能における修正(HelloRequestの複製時のタイムアウトのリセットと再送)
- バッファ縮小化時と再ネゴシエーション時のエッジケースでの修正
- curve448とPPC64を使用した際のコンパイルエラーを修正
- word長の剰余でモンゴメリリダクション演算を行う際の演算ライブラリSP Math Allを修正
- 演算ライブラリSP Math Allを8ビット長のdigitに対するサポートを改良
- 演算ライブラリSP integer の平方演算のエッジケースを修正
- SP実装における ARM64ビルド時で、非ct mod-inv演算にx29レジスターを使用しないように変更
- SP実装における ECCのz値の生成時のエッジケースを修正
- PKCS7形式証明書を扱う際、RSAとRNGでのコールバック(devId)の修正
- RSA署名検証とPublicのみを指定した際のコンパイルエラーを修正
- PKCS11 APIで鍵のタイプ指定欄が無い場合に公開鍵を正しくエクスポートできない問題を修正
- 証明書の深さに関する障害でコールバックが呼ばれない件を修正
- TLSX_CSR_Parse()で範囲外のリードが発生する障害を修正
- EVPレイヤーで不正なAES-GCMタグが生成される障害を修正
- 演算ライブラリSP Math Allで範囲外書き込みの発生とsp_mont_normの結果に対してsp_tohexを呼び出してしまうエッジケースを修正
- sp_rand_primeが長さ0の値が引数として与えられるケースのチェックを強化
- small stack使用が有効になっているケースでSHA256/SHA512の処理時にmallocが失敗して範囲外書き込みが発生するエッジケースを修正
性能改善/最適化
- wolfSSLをwolfTPMと共にビルドできるように”–enable-wolftpm” コンフィギュレーションオプションを追加
- タイムアウト時のみ再送を行う指定のために、DTLS用のマクロ”WOLFSSL_DTLS_RESEND_ONLY_TIMEOUT” を追加
- kvmalloc とkvfreeを利用するようにlinuxカーネルモジュールを更新
- AES GCMセッションチケットの暗号化をサポート
- wolfSSL_RAND_bytes関数で使用されるグローバルRNGに対してスレッド保護を追加
- FIPSバンドルバージョンに対してFIPSコンフィギュレーションオプションのサニティチェックを追加
- “–enable-aesgcm=table” オプションは”–enable-linuxkm”オプションとコンパチブルに改善
- wolfSSL_RAND_bytes関数が扱える出力バッファサイズを増加
- ディレクトリ外ビルドをが可能に。wolfSSLはwolfsslルートディレクトリ以外でもビルドできるよう改善
脆弱性対応
- [HIGH] CVE-2021-3336:以前のバージョンのwolfSSLにおいてTLS1.3クライアントとして動作の際に、潜在的な中間者攻撃を受ける脆弱性が存在しました。ネットワーク上の位置に関する権限を有する悪意ある攻撃者はTLSサーバーに成りすまし認証をバイパスすることが可能でした。TLS1.3を有効にされているクライアント側のアプリケーションコードをお持ちのお客様はwolfSSLの最新バージョンへのアップデートを行ってください。TLS1.3を有効にされていない、あるいはサーバー側のアプリケーションコードをお持ちのお客様はこのレポートされている脅威の影響は受けません。コード変更についてはここ(#3676)を参照ください。
- [LOW]カスタムECC曲線を利用し、カスタムprime値を持ち圧縮されたECC鍵が使われるとその鍵がインポートされた際にハングする潜在的な可能性がありました。wolfSSLをビルドする際に、圧縮されたECC鍵の利用とカスタム曲線ECCの使用を有効にしているアプリケーションのみが影響を受けます。
- [LOW]TLS1.3の認証付き暗号化を使う暗号化スイートでServerHelloパケットのあるセクションは未初期化の16バイトのデータを含み、接続先の相手に送信することができました。脅威はwolfSSLをTLS1.3のeraly dataを有効にして、認証付き暗号化を使う暗号化スイートを利用する際に影響を受けます。
脆弱性に関する追加情報は以下を参照ください。
https://www.wolfssl.com/docs/security-vulnerabilities/
リリースのアイテムの完全なリストは、wolfSSLにバンドルされているChangeLog.mdでご確認ください。
ご質問は、info@wolfssl.jpまでお問い合わせください。テクニカルサポートについては、support@wolfssl.comにお問い合わせください。