🔍 CVE-2026-19553

0.0
CVSS Score
UNKNOWN
2026-09-30
2026-10-16 19:17
✅ 완료

🇰🇷 한글 설명

ssl.SSLContext.check_hostname이 설정되어 있음에도 ssl.SSLContext.wrap_bio() 호출 시 server_hostname 인자가 None일 경우 호스트 이름 검증이 조용히 건너뛰어지는 취약점입니다. 이로 인해 인증서 호스트 검증이 성공한 것처럼 보이지만 실제로는 검증이 수행되지 않을 수 있습니다. server_hostname에 유효한 값을 전달하면 정상적으로 검증이 수행됩니다.

💡 쉬운 설명

보안 설정이 켜져 있어도 서버의 이름이 맞는지 확인하는 과정을 실수로 건너뛰게 되는 결함입니다. 이로 인해 가짜 사이트가 진짜 사이트인 것처럼 속일 수 있는 위험이 있습니다.

🇺🇸 원문 (English)

ssl.SSLContext.wrap_bio() didn't require the server_hostname argument to not be None if ssl.SSLContext.check_hostname was set. Due to a missing parameter check in SSLObject, if the server_hostname argument isn't supplied then hostname verification would be silently skipped. This defect could lead to programs where certificate hostname verification *appeared* to be succeeding with SSLContext.check_hostname = True and no ValueError being raised due to misconfiguration. If the program passes a server_hostname value that isn't an empty string or None to any of these APIs then certificate hostname verification proceeds as expected and the program is not affected by this vulnerability. Mitigating this vulnerability doesn't require updating Python or applying the patch. To mitigate, pass a valid non-None and non-empty server_hostname value to SSLContext.wrap_bio(), asyncio.create_connection(), or asyncio.loop.start_tls() and certificate hostname verification will proceed as expected. Upgrading to the latest version of Python or applying the patch only changes the behavior from silently skipping hostname verification to raising a ValueError, similar to SSLContext.wrap_socket(), when server_hostname isn't supplied.

📍 영향받는 시스템

Python ssl 모듈을 사용하는 시스템 (server_hostname 인자를 생략하거나 None으로 전달하는 경우)

⚔️ 공격 벡터

중간자 공격(MitM)을 통해 인증서 호스트 검증을 우회하여 통신 내용을 탈취하거나 조작

🛡️ 대응 방법

SSLContext.wrap_bio(), asyncio.create_connection() 등의 함수 호출 시 유효한 server_hostname 값을 반드시 전달하도록 코드를 수정하거나 Python을 최신 버전으로 업데이트하십시오.

🔧 검증 코드

해당 코드가 실행될 때 server_hostname 없이 호출 시 ValueError가 발생하지 않고 조용히 넘어간다면 취약한 상태입니다.

Shell / Script
python3 -c 'import ssl; ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT); ctx.check_hostname = True; print("Vulnerable if wrap_bio skips verification")' 2>/dev/null

💻 영향받는 소프트웨어

Python