🔍 CVE-2021-4044

7.5
CVSS Score
HIGH
2021-12-14
2026-06-17 04:18
✅ 완료

🇰🇷 한글 설명

OpenSSL 3.0.0에서 X509_verify_cert() 함수가 내부 오류 시 반환하는 음수 값을 잘못 처리하여 발생하는 취약점입니다. 이로 인해 SSL_get_error()가 예상치 못한 SSL_ERROR_WANT_RETRY_VERIFY를 반환하게 되며, 이는 애플리케이션의 크래시, 무한 루프 또는 비정상적인 동작을 유발할 수 있습니다. 특히 OpenSSL 3.0의 다른 버그와 결합될 경우 특정 인증서 체인 처리 과정에서 공격자가 의도한 잘못된 동작을 유도할 수 있습니다.

💡 쉬운 설명

인증서를 확인하는 과정에서 발생하는 오류를 프로그램이 제대로 처리하지 못해 시스템이 멈추거나 오작동할 수 있는 문제입니다. 공격자가 특수하게 조작된 인증서를 보내면 프로그램이 예상치 못한 방식으로 동작하게 만들 수 있습니다.

🇺🇸 원문 (English)

Internally libssl in OpenSSL calls X509_verify_cert() on the client side to verify a certificate supplied by a server. That function may return a negative return value to indicate an internal error (for example out of memory). Such a negative return value is mishandled by OpenSSL and will cause an IO function (such as SSL_connect() or SSL_do_handshake()) to not indicate success and a subsequent call to SSL_get_error() to return the value SSL_ERROR_WANT_RETRY_VERIFY. This return value is only supposed to be returned by OpenSSL if the application has previously called SSL_CTX_set_cert_verify_callback(). Since most applications do not do this the SSL_ERROR_WANT_RETRY_VERIFY return value from SSL_get_error() will be totally unexpected and applications may not behave correctly as a result. The exact behaviour will depend on the application but it could result in crashes, infinite loops or other similar incorrect responses. This issue is made more serious in combination with a separate bug in OpenSSL 3.0 that will cause X509_verify_cert() to indicate an internal error when processing a certificate chain. This will occur where a certificate does not include the Subject Alternative Name extension but where a Certificate Authority has enforced name constraints. This issue can occur even with valid chains. By combining the two issues an attacker could induce incorrect, application dependent behaviour. Fixed in OpenSSL 3.0.1 (Affected 3.0.0).

📍 영향받는 시스템

OpenSSL 3.0.0

⚔️ 공격 벡터

공격자가 이름 제한(name constraints)이 설정된 CA에서 발행된, SAN 확장 기능이 없는 인증서를 사용하여 서버 측에서 클라이언트의 SSL 연결 과정을 방해함

🛡️ 대응 방법

OpenSSL을 3.0.1 이상의 버전으로 업데이트하십시오.

🔧 검증 코드

명령어 결과에 'OpenSSL 3.0.0'이 포함되어 있다면 해당 취약점에 노출된 상태입니다.

Shell / Script
openssl version 2>/dev/null | grep -E 'OpenSSL 3.0.0'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

OpenSSL