最新情報：OpenSSL の深刻度の高い脆弱性について

本記事は2022年11月2日（米国時間）に公開した英語ブログ[Update: OpenSSL high severity vulnerabilities](https://snyk.io/blog/openssl-high-severity-vulnerabilities/)を日本語化した内容です。

[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/345b302d-1bae-9356-88fe-78c2a9054a10.png)](https://snyk.io/jp)

OpenSSLは、バッファオーバーランに関する2つの深刻度の高い脆弱性「CVE-2022-3602」と「CVE-2022-3786」を公表しました。OpenSSLは当初、CVE-2022-3602を「クリティカル(Critical)」と評価していましたが、さらなる調査の結果、「深刻度」が「高(High)」に引き下げられました。

# バッファオーバーランとは？

バッファオーバーラン/オーバーフローは、特定のタイプのランタイム問題です。それにより、プログラムがバッファや配列の終端を越えて書き込み (故に「オーバーフロー」と名付けられました)、近くのメモリを破損させることがあります。バッファオーバーフローは、一般的な脆弱性とは違い、プログラム実行のたびに起こる問題ではありません。予期しないユーザー入力といった特定の条件によってはじめて、脆弱性が影響を持ちます。

**これら2つの深刻度 高の脆弱性は、X.509証明書の検証時の名前の制約チェックにおいて悪用されるものです。**

- X.509 Email Address 4-byte Buffer Overflow (CVE-2022-3602)
- X.509 Email Address Variable Length Buffer Overflow (CVE-2022-3786)

この脆弱性は、TLSクライアントにおいて、不正なサーバーに接続することで誘発される可能性があります。また、TLSサーバーがクライアント認証を要求しているときに、悪意のあるクライアントによりTLSサーバーで誘発される可能性もあります。

OpenSSL バージョン 3.0.7 は、SSL/TLS 用のオープンソースツールキットとしてリリースされました。OpenSSL 3.0のプログラムは、信頼できないソースから取得したX.509証明書をチェックする場合、安全でなく攻撃者に悪用されるとみなす必要があります。

アップグレードが適用されるまでは、クライアントとサーバーでTLSクライアント認証を無効にする必要があります。

## 影響を受けるバージョン

OpenSSL バージョン 3.0.0 から 3.0.6 

## 影響を受けないバージョン

- 1.1.1
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.9.x
- fips

## 影響

- Denial of Service (サービス拒否)
- Remote Code Execution (リモートコード実行)

# Snyk を利用した対処法

## Snyk Open Source

脆弱性の詳細が公開されたため、Snyk Open Source のプロジェクトでは、次回の再テストで[この脆弱性](https://security.snyk.io/vuln?search=CVE-2022-3602)が検出されます。毎日テストを行うように設定されたプロジェクトでは、24 時間以内にこれが行われます。**重要なプロジェクトに対する手動での再テスト実行はもちろん可能で、そうすることで結果をより早く確認することができます。**

また、Snyk CLI 内で `snyk test` コマンドを使用してオープンソースコードをスキャンすることもできます。

## Snyk Container

OpenSSL CVE のようなアドバイザリが発行されると、各 Linux ディストリビューションのメンテナーは、その影響について検証した上で独自のアドバイザリを発行する必要があります。Snyk Containerの検出のトリガーとなるのは、このディストリビューションのアドバイザリです。つまり、OpenSSLアドバイザリとSnyk Containerの最初の検出の間には、Linuxディストリビューションのメンテナーがどれだけ早くアドバイザリをリリースするかに基づいて、多少のタイムラグがある可能性があります。[このプロセスがどのように行われるかについては、コンテナセキュリティの簡素化に関する記事で詳しく説明しています。](https://snyk.io/blog/simplifying-container-security-snyk-expertise/)

ディストリビューションによるアドバイザリが公表されると、Snyk Container のテスト結果で脆弱性が検出されるようになります。Snyk Reporting で確認を行う場合、データ処理のタイムラグに注意してください。Snyk Open SourceとSnyk Containerの両方について、脆弱性が検出された後、レポート結果に反映されるまで最大9時間を要します。ベータ版レポートを使用して問題を表示する場合、この遅延はより短くなる可能性があります。

# 推奨事項

- OpenSSL 3.0 のユーザは OpenSSL 3.0.7 にアップグレード
- スタックオーバーフロー対策

# Snyk脆弱性データベースにおけるUbuntuアドバイザリのデータ更新について
- [https://security.snyk.io/vuln/SNYK-UBUNTU2210-OPENSSL-3092607 ](https://security.snyk.io/vuln/SNYK-UBUNTU2210-OPENSSL-3092607)[(CVE-2022-3602)](https://www.cve.org/CVERecord?id=CVE-2022-3602)
- [https://security.snyk.io/vuln/SNYK-UBUNTU2204-OPENSSL-3092568 ](https://security.snyk.io/vuln/SNYK-UBUNTU2204-OPENSSL-3092568)[(CVE-2022-3786)](https://www.cve.org/CVERecord?id=CVE-2022-3786)
- [https://security.snyk.io/vuln/SNYK-UBUNTU2210-OPENSSL-3092584](https://security.snyk.io/vuln/SNYK-UBUNTU2210-OPENSSL-3092584)[ (CVE-2022-3786)](https://www.cve.org/CVERecord?id=CVE-2022-3786)
- [https://security.snyk.io/vuln/SNYK-UBUNTU2204-OPENSSL-3092591 ](https://security.snyk.io/vuln/SNYK-UBUNTU2204-OPENSSL-3092591)[(CVE-2022-3602)](https://www.cve.org/CVERecord?id=CVE-2022-3602)

# 参考情報

- https://www.openssl.org/news/vulnerabilities.html
- https://security.snyk.io/vuln/SNYK-UNMANAGED-OPENSSL-3090874 (CVE-2022-3602) 
- https://security.snyk.io/vuln/SNYK-UNMANAGED-OPENSSL-3092519 (CVE-2022-3786)
- https://cve.org/CVERecord?id=CVE-2022-3786
- https://cve.org/CVERecord?id=CVE-2022-3602
- https://www.openssl.org/news/secadv/20221101.txt 
- https://mta.openssl.org/pipermail/openssl-announce/2022-November/000241.html 
- https://distrowatch.com/search.php?pkg=openssl&relation=similar&pkgver=3.&distrorange=InAny#pkgsearch 
- https://nodejs.org/en/blog/vulnerability/november-2022-security-releases/