🇰🇷 한글 설명
Apache HTTPD의 GnuTLS 모듈인 Mod_gnutls 0.13.0 미만 버전에서 클라이언트 인증서의 확장 키 사용(EKU) 목적을 제대로 검증하지 않는 취약점이 발견되었습니다. 공격자가 TLS 클라이언트 인증용이 아닌 다른 용도로 발급된 인증서의 개인키를 보유하고 있다면, 이를 이용해 클라이언트 인증이 필요한 리소스에 부적절하게 접근할 수 있습니다.
💡 쉬운 설명
인증서가 원래 용도(예: 이메일용)와 다르게 사용되는 것을 막지 못하는 보안 결함입니다. 이로 인해 다른 용도의 인증서를 가진 사람이 마치 허가된 사용자처럼 시스템에 접속할 위험이 있습니다.
🇺🇸 원문 (English)
Mod_gnutls is a TLS module for Apache HTTPD based on GnuTLS. Prior to version 0.13.0, code for client certificate verification did not check the key purpose as set in the Extended Key Usage extension. An attacker with access to the private key for a valid certificate issued by a CA trusted for TLS client authentication but designated for a different purpose could have used that certificate to improperly access resources requiring TLS client authentication. Server configurations that do not use client certificates (`GnuTLSClientVerify ignore`, the default) are not affected. The problem has been fixed in version 0.13.0 by rewriting certificate verification to use `gnutls_certificate_verify_peers()`, and requiring key purpose id-kp-clientAuth (also known as `tls_www_client` in GnuTLS) by default if the Extended Key Usage extension is present. The new `GnuTLSClientKeyPurpose` option allows overriding the expected key purpose if needed (please see the manual for details). Behavior for certificates without an Extended Key Usage extension is unchanged. If dedicated (sub-)CAs are used for issuing TLS client certificates only (not for any other purposes) the issue has no practical impact.
📍 영향받는 시스템
Mod_gnutls version 0.13.0 미만 (클라이언트 인증서 검증을 사용하는 Apache HTTPD 설정)
⚔️ 공격 벡터
신뢰받는 CA에서 발급되었으나 용도가 다른 인증서의 개인키를 사용하여 TLS 클라이언트 인증을 우회함
🛡️ 대응 방법
Mod_gnutls를 0.13.0 이상 버전으로 업데이트하거나, 인증서 검증 시 EKU를 엄격히 확인하도록 설정함
🔧 검증 코드
출력된 Mod_gnutls의 버전이 0.13.0 미만인지 확인하여 취약 여부를 판단합니다.
apache2ctl -M | grep mod_gnutls && mod_gnutls --version 2>/dev/null || dpkg -l | grep mod-gnutls