🇰🇷 한글 설명
wolfSSL에서 OCSP와 CRL 검증을 동시에 활성화할 경우, OCSP URL이 없는 인증서에 대해 CRL 검증을 건너뛰는 취약점이 발견되었습니다. 이로 인해 폐기된 인증서가 유효한 것으로 잘못 수용될 수 있으며, 특히 중간 인증서가 검증을 통과할 경우 해당 컨텍스트 내에서 지속적인 신뢰를 얻게 됩니다.
💡 쉬운 설명
인증서가 유효한지 확인하는 두 가지 방법(OCSP, CRL)을 동시에 쓸 때, 한쪽 확인이 누락되어 가짜 인증서를 진짜로 착각하는 문제입니다. 한 번 잘못된 인증서가 통과되면 해당 프로그램이 재시작될 때까지 계속해서 위험한 인증서를 믿게 됩니다.
🇺🇸 원문 (English)
When an application enables both OCSP and CRL revocation checking on one WOLFSSL_CTX or certificate manager, wolfSSL skips the CRL check for any peer certificate that carries no Authority Information Access OCSP URL, and accepts a certificate the loaded CRL lists as revoked. The soft-fail policy for a missing responder collapses the OCSP result onto success before the code decides whether the CRL fallback is still needed, so "no responder exists" becomes indistinguishable from "the responder answered good". Affected builds define both HAVE_OCSP and HAVE_CRL: --enable-ocsp --enable-crl directly, and implicitly --enable-all, --enable-distro, --enable-curl, --enable-nginx, --enable-haproxy, --enable-stunnel, --enable-lighty, --enable-wpas, --enable-strongswan, --enable-mosquitto, --enable-jni, --enable-openvpn and --enable-krb. An application is affected only if it calls both wolfSSL_CTX_EnableOCSP() (or wolfSSL_EnableOCSP() / wolfSSL_CertManagerEnableOCSP()) and wolfSSL_CTX_EnableCRL() (or the equivalents) with a CRL loaded; an application that uses OCSP stapling alone through wolfSSL_CTX_EnableOCSPStapling() is not affected, because that sets up a separate OCSP instance. The defect sits in ProcessPeerCerts() and is reachable over TLS 1.0 through TLS 1.3 and DTLS, both on a client verifying a server certificate and on a server verifying a client certificate under mutual or post-handshake authentication. When the skipped check falls on a chain certificate rather than the leaf, the unchecked intermediate is promoted into the certificate manager and stays a trusted signer for every later connection on that context, so an affected long-running process needs its WOLFSSL_CTX torn down and not only its library replaced. All wolfSSL versions from 5.9.2 and earlier are affected; on versions 5.9.1 and 5.9.2 the WOLFSSL_OCSP_CHECKALL configuration fails closed with OCSP_NEED_URL, which leaves wolfSSL_CTX_EnableOCSP() without CHECKALL as the exposed configuration on 5.9.2.
📍 영향받는 시스템
wolfSSL 5.9.2 및 그 이전의 모든 버전 (OCSP와 CRL이 모두 활성화된 경우)
⚔️ 공격 벡터
OCSP URL이 포함되지 않은 폐기된 인증서를 사용하여 TLS/DTLS 연결을 시도함으로써 검증 로직을 우회함
🛡️ 대응 방법
wolfSSL을 최신 보안 패치가 적용된 버전으로 업데이트하고, 영향을 받는 프로세스를 완전히 재시작해야 함
🔧 검증 코드
설치된 wolfSSL의 버전을 확인하여 5.9.2 이하인지 확인합니다.
wolfssl_version_check() { wolfssl_version_cmd 2>/dev/null || echo 'Check wolfSSL installation version'; }; wolfssl_version_check
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N
💻 영향받는 소프트웨어
IBM Security Verify Access