🇰🇷 한글 설명
OpenSSL 호환 인증서 검증기(wolfSSL_X509_verify_cert())에서 X.509 신뢰 체인 우회 취약점이 발견되었습니다. --enable-opensslextra 옵션이 활성화된 빌드에서 호출자가 제공한 신뢰할 수 없는 중간 인증서가 검증 과정에서 제거되지 않아 발생합니다. 이로 인해 공격자가 제어하는 인증서가 신뢰할 수 있는 것으로 잘못 수락될 수 있습니다.
💡 쉬운 설명
인증서가 진짜인지 확인하는 과정에서 검증해야 할 가짜 인증서를 실수로 '믿을 수 있는 목록'에 남겨두는 오류가 있습니다. 이 때문에 공격자가 만든 가짜 신분증이 진짜처럼 통과될 수 있습니다.
🇺🇸 원문 (English)
X.509 trust-chain bypass in the OpenSSL compatibility certificate verifier (wolfSSL_X509_verify_cert()). This affects only builds with --enable-opensslextra (OPENSSL_EXTRA) and whose application validates certificates by calling X509_verify_cert() with caller-supplied untrusted intermediate certificates; for those users it is critical, otherwise the library is unaffected. In particular, native wolfSSL TLS/DTLS usage is not impacted. wolfSSL's X509_verify_cert() temporarily loads each caller-supplied untrusted intermediate into the certificate manager but failed to drop them before the trusted-store check, so an untrusted intermediate could anchor the path itself. An attacker can present a chain that never reaches a configured trust anchor and have it accepted, resulting in acceptance of an attacker-controlled certificate. This is certificate verification independent of TLS (e.g. S/MIME/CMS, code/firmware signing, JWT/JWS x5c), is not specific to any key type or algorithm, and a single untrusted intermediate suffices. The default wolfSSL TLS handshake (WOLFSSL_VERIFY_PEER) is not affected; only TLS applications doing manual or deferred peer verification through this API are, which also requires --enable-sessioncerts.
📍 영향받는 시스템
wolfSSL 빌드 중 --enable-opensslextra 및 --enable-sessioncerts 옵션이 활성화된 시스템
⚔️ 공격 벡터
공격자가 신뢰할 수 없는 중간 인증서를 포함한 인증서 체인을 제시하여 검증 로직을 우회함
🛡️ 대응 방법
wolfSSL을 최신 보안 패치가 적용된 버전으로 업데이트하거나, 취약한 옵션 사용을 지양함
🔧 검증 코드
명령어 결과에 X509_verify_cert 심볼이 존재하고 해당 라이브러리가 취약한 옵션으로 빌드되었는지 확인이 필요합니다.
nm -D /usr/lib/libwolfssl.so 2>/dev/null | grep -E 'X509_verify_cert'