wolfSSL 4.3.0をリリースしました

wolfSSL新バージョン、4.3.0をリリースしました。このリリースは多くの新機能、最適化、不具合修正を含んでいます。

wolfSSLライブラリに追加された最新機能の一部を紹介します:

  • libwebsocketsビルドをサポートするための–enable-libwebsocketsオプションを追加
  • NGINX 1.15.0サポートの更新とNGINX1.16.1サポートの追加
  • RSA-PSSソルト長の更新。マクロWOLFSSL_PSS_SALT_LEN_DISCOVERの使用でソルト長の検出が可能。RSA_PSS_SALT_LEN_DISCOVER値をwc_RsaPSS_Verify_exに渡すと、ソルト長の検出が試行され、より大きなソルト長が使用可能
  • wolfSSLは、OpenSSLからwolfSSLへの移行を支援するために、OpenSSL互換性APIを常に拡張しています。このリリースでは、証明書を取得するためにAPI wolfSSL_CertManagerGetCertsおよびwolfSSL_X509_STORE_GetCertsを追加
  • wolfSSLには、単精度演算用に最適化した演算ライブラリがあります。RSA、ECC、およびDHによる、特定鍵サイズの操作を大幅に高速化します。このリリースでは、4096ビットRSA / DHを新たにサポート
  • 前回のリリース(v4.2.0)でサポートしたGoogle WebRTCを、ブランチm79に更新
  • MQX 5.0サポート用に新しいFREESCALE_MQX_5_0マクロを追加
  • OpenSSL互換性レイヤーを使用するプロジェクトでは、特定のAPIだけを残し、サイズを縮小したい場合があります。このリリースでは、–enable-opensslextraオプションでビルドした場合に、余分なエラーキューが無効になるよう–disable-errorqueueビルドフラグを追加
  • その他に新機能については、ダウンロードファイルに含まれるREADMEをご覧ください。

最適化のハイライト:

  • 秘密鍵タイプを指定して鍵タイプを決定するためにPKCS11を更新
  • 単精度ビルドでのCortex-M RSA/Dアセンブリコードのパフォーマンス向上
  • 検証パラメーターhostNameおよびipasc(–enable-opensslextraビルド)をチェックするようDoVerifyCallbackを更新
  • QSHおよびCryptocell向けのビルドで入力引数に対しヌル値の正常性チェックを追加
  • 特定鍵長向け整数演算ライブラリ(SP math) のコードをMISRA-C向けに更新
  • 関数wc_CheckRsaKeyに追加されたRSA鍵の追加チェック
  • fseek、settings.hの修正されたマクロ、reallocサポートなど、EBSNETサポートの更新
  • 証明書拡張機能の名前文字列の解析の最適化
  • 回復不能なエラーが発生した場合のサンプルサーバー-xランタイム動作の調整
  • HMACを使用したBlake2bのサポートを削除
  • 生成されたテストファイルを整理するスクリプト scripts/cleanup_testfiles.shの追加
  • SendAlert呼び出しのログメッセージを追加し、証明書コールバックの検証後にアラートを送信するよう更新
  • AuthKeyIdでCRLを見つけるよう更新
  • BERからDER変換関数で再帰呼び出しをしないよう見直し
  • CRLの使用が有効な場合、マクロNO_SKIDの要件を削除

など。

主な修正:

  • IAR-EWARM 7.50.2でのIAR警告の修正
  • AESおよびハッシュアルゴリズムを使用したmmCAUのアライメント修正
  • NGINXおよびデバッグモードでのユニットテストの修正
  • ApacheがBIO再試行フラグ付きで結果が “want read” の場合の修正
  • GCC + AVX2を使用したcurve25519アセンブリ最適化の修正、入力値が大きいキャリーのPoly1305 AVX2アセンブリ最適化の修正
  • 静的メモリプールを使用し、WOLFMEM_IO_POOL_FIXEDとしてメモリをロードする場合のTLS I/Oバッファを使用したmemcpyの修正
  • X509およびwolfSSL_EVP_PKEY_freeのミューテックスを解放する修正。OPENSSL_EXTRA/ –enable-opensslextraビルドに適用
  • wolfSSL_CTX_load_static_memoryの代わりにwc_LoadStaticMemoryを呼び出すとき、WOLFSSL_CTXの前にヒープヒントが作成されるケースを修正
  • EVP CipherUpdate復号化の修正とテストケースの追加
  • wolfcrypt-pyインストールの問題を解決するwc_ed25519_check_keyのAPI可視性の修正
  • バンドルを検証するのではなくエラーになるPKCS7ストリーミングモードの修正
  • 追加のミューテックス保護、AES-GCM復号化認証タグ、CubeMXを使用したAES-CTRモード、OpenSTM32プロジェクトの更新など、STM32ポーティングの修正と更新
  • 受け入れ可能な最大ALPN長の正常性チェック
  • 構造をコピーするためにCRLを解析するときの追加の正常性チェック、境界チェックの修正
  • DH公開鍵を取得するときは、P、G、およびPubポインターをNULLに初期化してから、DHパラメーターフラグを所有するように設定。これにより、FreeSSLはDH鍵を正しく削除可能
  • シリアル番号生成時に最上位ビットをクリア
  • 確定的なECDSAを追加するよう修正し、追加ポイントのコーナーケースを修正
  • テストケース文字列のヌル終了およびPKCS7変数の初期化を含む、コベリティレポートの修正
  • –enable-scep –with-libz ビルドを使用した変数宣言が行われていなかったことを修正
  • ProcessPeerCertsがOPENSSL_EXTRAを使用してextsにメモリを適切に割り当て

など。

全修正点は、wolfSSL 4.3.0のダウンロード( https://wolfssl.jp/download/ )に含まれるREADMEまたはChangeLog.mdでご確認いただけます。
wolfSSLでは、常に最新バージョンの使用を推奨しています。お使いのwolfSSLをv4.3.0に更新し、最新のセキュリティを維持、また全ての修正と追加機能をご利用ください。

またこのリリースには、一部の脆弱性に関する修正が含まれております。ここでは概要を説明します。脆弱性の完全なリストは、READMEもしくは https://www.wolfssl.com/docs/security-vulnerabilities/ でご確認いただけます。詳細については、support@wolfssl.com へお問い合わせください。

対応項目の概要

    1. 証明書ドメイン名領域の最大値超え
    2. DTLSハンドシェイク時のメッセージサイズ
    3. ECCキャッシュ –enable-fpecc オプション使用時のみ
    4. wc_SignatureGenerateHash API使用時のみ
    5. DSA署名におけるサイドチャネル攻撃
    6. 内部ECC関数wc_ecc_mulmod_exにおけるサイドチャネル攻撃

wolfSSL 4.3.0に含まれる脆弱性対応:

  1. 証明書ドメイン名の解析時に追加の健全性チェックを行うための修正が追加されました。この修正により、ドメイン名の場所のインデックスが設定前に最大値を超えていないことが確認されます。報告された問題は、証明書を解析しており、-enable-opensslextra(マクロOPENSSL_EXTRA)を使用しているユーザー、またはこれをオンにする–enable-allなどのビルドオプションを利用している場合に影響します。修正に関連するCVEはCVE-2019-18840です。
  2. DTLSハンドシェイクメッセージの最大サイズに制限を設定するための修正。デフォルトでは、RFCは最大2 ^ 24-1バイト長のハンドシェイクメッセージサイズを受け入れますが、一般的な利用ケースでは、ハンドシェイクメッセージはそれほど大きくありません。ハンドシェイクメッセージに最大サイズの制限を設定すると、メモリの割り当てによる潜在的なDoS攻撃の回避に有効です。新しいデフォルトの最大サイズは、証明書チェーンの長さが9前後、2048ビットのRSA証明書を処理するように設定されています。これは、DTLSがオンになっていて、DTLSを使用しているアプリケーションがあるビルドのみに影響します。
  3. ECCキャッシングが有効(デフォルトではオフ)で、-enable-fastmathが使用されている場合の潜在的なハングを修正。 ECCキャッシュはデフォルトでオフになっており、-enable-allまたは–enable-fpeccを使用しているビルドでオンになります。この問題は、インポートされたすべてのECCキーの検証を有効にするマクロWOLFSSL_VALIDATE_ECC_IMPORTを使用しているビルドには影響しません。この潜在的なハングケースを修正するために、内部invmod関数への入力値の健全性チェックが追加されました。
  4. wolfCrypt RSA署名生成のラッパー関数で発生する可能性のあるフォールトインジェクション攻撃を修正するために作成後に署名を検証する追加の健全性チェックを追加しました。このチェックは、TLS接続(TLSステートマシン中のVerifyRsaSignの内部関数呼び出し)を備えたwolfSSLの現在のバージョンですでに自動的に行われています。このレポートは、wolfCrypt関数wc_SignatureGenerateHashを呼び出すユーザーにのみ影響し、現在のTLSユースケースには影響しません。レポートを提供いただいたウースター工科大学のダニエル・モギミ(@danielmgmi)氏に感謝します。
  5. DSA署名操作にブラインドが追加されました。 DSA署名は、ノンスのモジュラー反転中にBEEAアルゴリズムを使用します。これは、キャッシュや電力変動などのサイドチャネルを通じてノンスをリークする可能性があります。 ブラインド化を追加する修正により、DSA署名操作のサイドチャネル攻撃に対する耐性が高まります。 DSA(デフォルトでは無効)を有効にし、署名操作を実行しているユーザーは更新する必要があります。 DSAはTLS接続では使用されていません。 レポートを提供いただいたウースター工科大学のダニエル・モギミ(@danielmgmi)氏に感謝します。
  6. 内部ECC関数wc_ecc_mulmod_exに追加のサイドチャネルキャッシュ攻撃抵抗を追加する修正。 この機能は、デフォルトでECDSA署名操作で使用されます。 ユーザーは、ECDSA歌唱操作(サーバー側ECC TLS接続、クライアント側での相互認証)を実行するか、wolfCrypt ECC署名関数を呼び出す場合に更新する必要があり、外部ユーザーがキャッシュの高度な監視を実行できる可能性があります。レポートを提供いただいたウースター工科大学のダニエル・モギミ(@danielmgmi)に感謝します。

ご質問は support@wolfssl.com までご連絡ください。

原文: https://www.wolfssl.com/wolfssl-version-4-3-0-now-available/