CVE-2021-3712
ASN.1 文字列の処理における読み取りバッファオーバーラン
- 公開済み
- 2021/08/24
- 更新済み
- 2026/04/16
- CNA の割り当て
- openssl
- 観察された証拠
- 2026/08/08
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H高 · 今後 30 日間
- パーセンタイル
- 98.9%
- モデルの日付
- 2026/10/15
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
ASN.1 文字列は、OpenSSL 内部では ASN1_STRING 構造体として表現されます。この構造体は、文字列データを保持するバッファと、バッファ長を保持するフィールドを含みます。これは、文字列データ用のバッファとして表現され、NUL (0) バイトで終端される通常の C 文字列とは対照的です。厳密な要件ではありませんが、OpenSSL 自身の "d2i" 関数 (およびその他の類似のパース関数) を使用してパースされた ASN.1 文字列や、ASN1_STRING_set() 関数で値が設定された文字列は、ASN1_STRING 構造体内のバイト配列も NUL 終端されます。しかし、アプリケーションが ASN1_STRING 配列内の "data" フィールドと "length" フィールドを直接設定することにより、バイト配列を NUL 終端しない有効な ASN1_STRING 構造体を直接構築することが可能です。これは ASN1_STRING_set0() 関数を使用しても発生する可能性があります。ASN.1 データを出力する多数の OpenSSL 関数は、ASN1_STRING のバイト配列が NUL 終端されることを想定していることが判明していますが、直接構築された文字列についてはこれは保証されません。アプリケーションが ASN.1 構造体の出力を要求し、その ASN.1 構造体に、アプリケーションが "data" フィールドを NUL 終端せずに直接構築した ASN1_STRING が含まれている場合、読み取りバッファオーバーランが発生する可能性があります。同じことは、証明書の名前制約処理中にも発生する可能性があります (たとえば、アプリケーションが OpenSSL のパース関数を介して読み込む代わりに証明書を直接構築し、その証明書に NUL 終端されていない ASN1_STRING 構造体が含まれている場合など)。また、X509_get1_email()、X509_REQ_get1_email()、X509_get1_ocsp() 関数でも発生する可能性があります。悪意のある攻撃者が、アプリケーションに ASN1_STRING を直接構築させ、それを影響を受ける OpenSSL 関数のいずれかで処理させることができた場合、この問題が発生する可能性があります。これはクラッシュ (サービス拒否攻撃) を引き起こす可能性があります。また、秘密鍵や機密の平文などのプライベートメモリ内容の開示につながる可能性もあります。OpenSSL 1.1.1l で修正済み (影響を受けるバージョン: 1.1.1-1.1.1k)。OpenSSL 1.0.2za で修正済み (影響を受けるバージョン: 1.0.2-1.0.2y)。
ソース
EOL CentOS7 ボックス上で openssl CVE (https://nvd.nist.gov/vuln/detail/cve-2021-3712) を修正するための本番環境対応手順
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。