strongSwanの脆弱性情報(Moderate: CVE-2021-41990, CVE-2021-41991)

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

10/19/2021にstrongSwanの脆弱性情報(Moderate: CVE-2021-41990, CVE-2021-41991)が公開されました。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。


[過去の関連リンク(最新5件)]


Priority

CVE番号一次情報源影響するバージョンPriorityCVSS Score / CVSS Vector

CVE-2021-41990

strongSwan Vulnerability (CVE-2021-41990)

5.6.1 <= strongSwan

Red Hat: 7.5 Moderate

Red Hat: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

CVE-2021-41991

strongSwan Vulnerability (CVE-2021-41991)

4.2.10 <= strongSwan

Red Hat: 7.5 Moderate

Red Hat: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

修正方法

各ディストリビューションの情報を確認してください。

CVE概要(詳細はCVEのサイトをご確認ください)

  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41990
    • gmpプラグインの整数オーバーフロー
    • 非常に高いsalt長で定義されたRSASSA-PSS署名により整数オーバーフローを引き起こしSegmentation Faultを引き起こす可能性があります。

      オリジンサーバやピアの証明書をチェックする際に、Squidは特定の証明書に関して信頼されていると誤って分類してしまう問題が見つかりました。

      strongSwan 5.6.1からRSASSA-PSS署名が加わりました。このような署名のalgorithmIdentifier構造体のパラメータフィールドはハッシュアルゴリズムやsalt長を含んでいます。gmpプラグインはsalt長をchunk_tのsize_t lenフィールドにパースして、構造体が正しいかを確認するために使用されています。RFC 8017, Section 9.1.2により、以下の式が使用されています:

      
      em.len < (hash.len + salt.len + 2)
      

      em.lenは復号化された署名の長さであり、その他はhash長とsalt長です。提供されたsalt長が非常に高い場合(例えば2^64-1)、これは整数オーバーフローを引き起こしチェックをバイパスします。

    • 緩和策:この脆弱性はgmpプラグインが影響を受けるため、モジュールを有効にしない事で影響を緩和することが出来ます。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41991
    • キャッシュの署名のリプレースによる整数オーバーフロー
    • インメモリの証明書キャッシュが満杯になった際にエントリ中で使用頻度が低いエントリをランダムに置き換えようとします。ランダム値の生成によて絵は、これが整数オーバーフローを引き起こし、結果として二重デリファレンスを引き起こして境界外メモリを使用しSegmentation Faultを引き起こします。

      in-memory証明書キャッすは有効な証明と発行元の証明書の関係性が格納されており、同じ証明書を後に検証する際にパフォーマンスを向上させます。サイズリミットは32 slotになっています(サイズはコンパイル時間の定数です)。全てのslotがフルになった場合、コードは他のスロットで使用率が全てのslot平均の半分以下になっているslotを探します。この検索は以下のようなコードで実装されています:

      
      int offset = random();
      for (int i = 0; i < 32; i++)
      {
      rel = &this->relations[(i + offset) % CACHE_SIZE];
      if (rel->hits > total_hits / 32)
      {
      continue;
      }
      if (rel->lock->try_write_lock(rel->lock))
      {
      /* replace cache entry */
      return;
      }
      }
      

      random()関数は0からRAND_MAX(通常2^31-1)までの値を返します。返す値が非常に大きい場合、indexの計算により整数オーバーフローが発生し、境界外アレイへのアクセスが発生します。hitチェックがパスした場合に、二重デリファレンスが発生しSegmentation Faultを引き起こす可能性があります。

    • 緩和策:通常のインストールではin-memory証明書キャッシュは有効になっていません。


対処方法

各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteKatello、Spacewalk等を使うと管理が便利でしょう。

また、サービスの再起動が発生しますので、peacemakerなどOSSのクラスタ製品やLifeKeeperなどの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます。


セキュリティ系連載案内

日々のメモを更新しています。

セキュリティ関係ニュースを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。

セミナー情報1

コンピュータセキュリティシンポジウム(CSS)2021併設のワークショップ、 OSSセキュリティ技術ワークショップ(OWS) 2021の企画講演セッション及び、 一般論文セッションをさせていただきます。

今年もオンラインでの開催となり、OWSトラックの一般論文セッションと企画セッションを行いますので,ご参加よろしくお願いいたします。

https://www.iwsec.org/ows/2021/


タイトルとURLをコピーしました