BigSig、コードの実行を可能にする可能性のあるMozillaNSSの脆弱性

についてのニュース 重大な脆弱性の特定 (すでにCVE-2021-43527にリストされています) en 暗号ライブラリのセット NSS (ネットワークセキュリティサービス) 悪意のあるコードの実行につながる可能性のあるMozillaから DER(Distinguished Encoding Rules)を使用して指定されたDSAまたはRSA-PSSデジタル署名を処理する場合。

問題 NSSを使用してデジタル署名を処理するアプリケーションに現れます CMS、S / MIME、PKCS#7およびPKCS#12 または、展開で証明書を検証する場合 TLS、X.509、OCSPおよびCRL。 この脆弱性は、TLS、DTLS、およびS / MIMEをサポートするさまざまなクライアントおよびサーバーアプリケーション、電子メールクライアント、およびNSS CERT_VerifyCertificate()呼び出しを使用してデジタル署名を検証するPDFビューアで発生する可能性があります。

脆弱なアプリケーションの例として、LibreOffice、Evolution、Evinceが挙げられます。 潜在的に、この問題は、Pidgin、Apache OpenOffice、Suricata、Curlなどのプロジェクトにも影響を与える可能性があります。

同時に、 この脆弱性はFirefox、Thunderbird、Torブラウザには現れません、検証用に別のmozilla :: pkixライブラリを使用します。これも、NSSの一部です。 NS Chromeベースのブラウザ (特にNSSでコンパイルされていない限り)2015年までNSSを使用していましたが、その後BoringSSLに引き継がれました。 問題の影響を受けません。

この脆弱性は、vfy_CreateContextの証明書検証コードのバグが原因です。 secvfy.cファイルの機能。 このエラーは、クライアントがサーバーの証明書を読み取るときにも発生します。 サーバーがクライアントの証明書を処理するときのように。

DERでエンコードされたデジタル署名を検証する場合、NSSは署名を固定サイズのバッファーにデコードし、このバッファーをPKCS#11モジュールに渡します。後処理中に、DSAおよびRSA-PSS署名の場合、サイズが誤って検証され、結果としてこれにより、デジタル署名のサイズが16384ビットを超えると、VFYContextStr構造に割り当てられたバッファーがオーバーフローします(バッファーには2048バイトが割り当てられますが、署名がこれより大きくなる可能性があることは確認されていません)。

脆弱性を含むコードは2003年にさかのぼります、しかし、2012年にリファクタリングするまで脅威ではありませんでした。2017年には、RSA-PSSサポートを実装するときに同じ間違いがありました。 攻撃を実行するために、必要なデータを取得するためにリソースを大量に消費する特定のキーを生成する必要はありません。これは、デジタル署名の有効性を検証する前の段階でオーバーフローが発生するためです。 データの範囲外の部分は、関数ポインターを含むメモリ領域に書き込まれるため、実用的なエクスプロイトを簡単に作成できます。

この脆弱性は、Google ProjectZeroの研究者によって特定されました 新しいファジングテスト方法を使用した実験中、十分にテストされた既知のプロジェクトで、些細な脆弱性が長期間検出されない可能性があることを示す良いデモンストレーションです。

用として 問題が見過ごされた主な問題 長い間:

  • NSSドライブライブラリとファジングテストは、全体ではなく、個々のコンポーネントレベルで実行されました。
  • たとえば、DERをデコードして証明書を処理するコードは、個別に検証されました。 ファジングの過程で、証明書を取得できた可能性があり、問題の脆弱性が明らかになりましたが、その検証は検証コードに到達せず、問題は明らかになりませんでした。
  • ファジングテストでは、NSSにそのような制限がない場合、出力のサイズ(10,000バイト)に厳密な制限が設定されました(通常モードの多くの構造は10,000バイトを超える可能性があるため、問題を特定するには、より多くの入力データが必要です) )。 完全に検証するには、制限は2 24 -1バイト(16 MB)である必要があります。これは、TLSで許可される証明書の最大サイズに対応します。
  • ファジングテストによるコードカバレッジに関する誤解。 脆弱なコードは積極的にテストされましたが、必要な入力データを生成できなかったfuzerを使用していました。 たとえば、fuzzer tls_server_targetは、事前定義されたすぐに使用可能な証明書のセットを使用しました。これにより、証明書検証コードの検証がTLSメッセージとプロトコル状態の変更のみに制限されていました。

最後に、 コードネームBigSigの問題は、NSS3.73およびNSSESR3.68.1で修正されていることに注意してください。 また、パッケージ形式のソリューションのアップデートは、Debian、RHEL、Ubuntu、SUSE、Arch Linux、Gentoo、FreeBSDなどのさまざまなディストリビューションですでにリリースされています。

あなたがそれについてもっと知りたいならば、あなたは相談することができます 次のリンク。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。