🇰🇷 한글 설명
인증서 경로를 구축할 때 사용되는 임시 CA(WOLFSSL_TEMP_CA)가 keyCertSign 키 사용 권한이 없음에도 불구하고 서명 CA로 허용되는 취약점입니다. RFC 5280 표준에 따라 중간 CA 인증서에 Key Usage 확장이 있는 경우 반드시 keyCertSign 권한이 있어야 하지만, 기존에는 임시 CA에 대해 이 검사가 면제되었습니다. 이제는 임시 CA에도 이 검사가 적용되어 보안성이 강화되었습니다.
💡 쉬운 설명
인증서가 다른 인증서를 승인할 수 있는 권한이 있는지 확인하는 과정에서 특정 임시 인증서들을 제대로 검사하지 않았던 문제입니다. 이로 인해 권한이 없는 인증서가 마치 정식 인증서인 것처럼 속여 사용할 수 있는 위험이 있었습니다.
🇺🇸 원문 (English)
Chain intermediate CA:TRUE without keyCertSign accepted as a signing CA. Intermediate CA certificates are required to have the keyCertSign key usage when a Key Usage extension is present, but chain-supplied temporary CAs (WOLFSSL_TEMP_CA) added while building a certificate path were previously exempted from this check, so an intermediate asserting CA:TRUE but lacking keyCertSign was accepted as a signing CA. The check now applies to chain-supplied temporary CAs as well; only operator-loaded root certificates (WOLFSSL_USER_CA) and self-signed roots remain exempt. Per RFC 5280 an absent Key Usage extension implies all usages, so the requirement is enforced only when the extension is actually present (extKeyUsageSet). Affects the OpenSSL-compatibility certificate-path-building path (X509_verify_cert / X509_STORE, OPENSSL_EXTRA/OPENSSL_ALL), where untrusted chain intermediates are added as temporary CAs; native (non-OpenSSL-compat) certificate verification does not create temporary CAs and is unaffected. Within those builds, the check applies unless ALLOW_INVALID_CERTSIGN is defined.
📍 영향받는 시스템
wolfSSL (OpenSSL 호환 인증 경로 빌딩 모드 사용 시, ALLOW_INVALID_CERTSIGN 미정의 시)
⚔️ 공격 벡터
keyCertSign 권한이 없는 중간 인증서를 체인에 포함시켜 인증서 검증 과정을 우회하는 방식
🛡️ 대응 방법
wolfSSL을 최신 보안 패치가 적용된 버전으로 업데이트하거나, ALLOW_INVALID_CERTSIGN 정의를 제거합니다.
🔧 검증 코드
사용 중인 wolfSSL 버전이 해당 취약점이 수정된 최신 버전인지 확인하고, 빌드 시 ALLOW_INVALID_CERTSIGN 옵션이 포함되었는지 검토합니다.
wolfssl_verify_tool --version 2>/dev/null || echo 'Check wolfSSL build configuration'