피드로 돌아가기
Python InsiderSecurity
원문 읽기
Python 3.12.13, 3.11.15 and 3.10.20 are now available!
Python 3.10, 3.11, 3.12의 보안 릴리스로 이메일 헤더 주입, XML 메모리 증폭, SSL use-after-free 등 7가지 보안 취약점 패치
AI 요약
Context
Python 3.10, 3.11, 3.12는 현재 보안 수정 전용 모드에 있으며, 이메일 생성기의 헤더 폴딩 불안전성, XML 파서의 메모리 증폭 취약점, HTTP 프로토콜 처리의 제어 문자 검증 미흡, SSL 할당 실패 시 메모리 해제 오류 등 다양한 보안 결함이 존재했다.
Technical Solution
- email.generator.BytesGenerator의 헤더 직렬화 검증 강화: verify_generated_headers 정책 적용으로 안전하지 않은 폴딩 또는 구분 헤더 거부 (CVE-2024-6923)
- 현대식 이메일 정책의 댓글 폴딩 개선: 매우 긴 접지 불가능한 텍스트 래핑 시 헤더 주입 방지
- email.message의 HTTP 파라미터 파싱 복잡도 최적화: 레거시 파싱의 선형 복잡도 보장
- wsgiref.headers.Headers의 C0 제어 문자 차단: 필드, 값, 파라미터 전반에 대한 제어 문자 거부
- http.cookies.Morsel의 제어 문자 검증 추가: 필드와 값에서 제어 문자 거부
- data: URL 미디어 타입의 제어 문자 검증: 잘못된 미디어 타입 처리 방지
- libexpat 2.7.4로 업그레이드: CVE-2026-24515, CVE-2026-25210 패치
- xml.parsers.expat의 Expat 할당 추적 API 추가: 악의적 XML 입력으로부터의 메모리 증폭 제한 (CVE-2025-59375)
- xml.dom.minidom 노드 ID 캐시 제거 최적화: 이차 시간 복잡도 제거
- plistlib의 메모리 거부 공격(DoS) 해결: 메모리 누수 취약점 패치
- http.client의 메모리 DoS 방어: 악의적 요청으로부터의 메모리 소모 방지
- http.server CGI 서버(Windows)의 메모리 DoS 방어: 예기치 않은 메모리 할당 제한
- os.path.expandvars()의 이차 복잡도 제거: 경로 확장 성능 개선
- html.parser.HTMLParser 강화: plaintext, xmp, iframe, noembed, noframes, noscript에 대한 RAWTEXT/PLAINTEXT 요소 추가 지원
- SSL use-after-free 버그 수정: SSL_new() 실패 시의 메모리 해제 오류 (gh-144833)
- 리스트 리치 비교 use-after-free 수정: list_richcompare_impl의 동시성 입력 처리 (gh-120298)
- 리스트 슬라이스 할당 범위 초과 접근 수정: list_ass_subscript의 동시성 입력 처리 (gh-120384)
Key Takeaway
Python 보안 릴리스는 프로토콜 파싱 및 메모리 관리 계층에서의 제어 문자 검증 강화, 이차 복잡도 제거를 통한 DoS 하드닝, 네이티브 라이브러리 버전 업그레이드를 통해 다층 방어 구조를 구축하며, 특히 HTTP/이메일 헤더 처리에서 헤더 주입 방지와 메모리 증폭 공격 제한이 핵심 보안 강화 방식이다.
실천 포인트
Python 기반 웹 서비스를 운영하는 팀은 email.generator, http.cookies, wsgiref 등의 표준 라이브러리를 사용할 때 최신 패치 버전(3.10.20, 3.11.15, 3.12.13 이상)으로 업그레이드하면 헤더 주입 공격 및 메모리 DoS 취약점을 동시에 완화할 수 있으며, 특히 사용자 입력 기반 이메일/HTTP 헤더 생성 로직에서 유효성 검사 추가 없이도 기본 보안 수준이 강화된다.