🇰🇷 한글 설명
Python의 ssl.match_hostname 함수가 X.509 인증서의 SubjectAlternativeName 필드에서 null 문자(\0)를 올바르게 처리하지 못해 발생하는 취약점입니다. 정상 인증기관에서 발급한 위조된 SSL 인증서를 통해 공격자가 중간자 공격을 수행하고 임의의 SSL 서버를 위장할 수 있습니다.
💡 쉬운 설명
Python이 SSL 보안 인증서를 검증할 때 특수한 문자 처리 방식의 결함으로, 공격자가 위조된 인증서로 사용자의 연결을 가로챌 수 있습니다. 피해자는 위조된 서버를 정상 서버로 착각하고 민감한 정보를 입력하게 됩니다.
🇺🇸 원문 (English)
The ssl.match_hostname function in the SSL module in Python 2.6 through 3.4 does not properly handle a '\0' character in a domain name in the Subject Alternative Name field of an X.509 certificate, which allows man-in-the-middle attackers to spoof arbitrary SSL servers via a crafted certificate issued by a legitimate Certification Authority, a related issue to CVE-2009-2408.
📍 영향받는 시스템
Python 2.6, 2.7.x, 3.0, 3.1, 3.2, 3.3, 3.4
⚔️ 공격 벡터
정상 인증기관(CA)에서 발급받은 위조 SSL 인증서를 이용한 중간자(MITM) 공격으로 임의 서버 위장
🛡️ 대응 방법
Python을 2.7.9 이상 또는 3.4.3 이상으로 업그레이드하여 ssl.match_hostname 함수 수정사항 적용
🔧 검증 코드
출력 결과가 'vulnerable'이면 해당 버전에 CVE-2013-4238이 존재하며, 'patched'이면 패치된 버전으로 안전합니다.
python -c "import sys; v=sys.version_info; print('vulnerable' if (v[0]==2 and v[1]<9) or (v[0]==3 and v[1]<5) else 'patched')"