🇰🇷 한글 설명
Python 2.x(2.7.16 이하) 및 3.x(3.7.3 이하)의 urllib2 및 urllib 라이브러리에서 CRLF 인젝션 취약점이 발견되었습니다. 공격자가 URL 파라미터를 제어할 수 있는 경우, \r
문자를 삽입하여 임의의 HTTP 헤더나 Redis 명령어를 주입할 수 있습니다.
💡 쉬운 설명
웹 주소에 특수 문자를 몰래 끼워 넣어 서버가 잘못된 명령을 내리게 만드는 보안 약점입니다. 이를 통해 해커가 서버에 가짜 명령을 전달하거나 정보를 가로챌 위험이 있습니다.
🇺🇸 원문 (English)
An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in Python 3.x through 3.7.3. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \r\n (specifically in the query string after a ? character) followed by an HTTP header or a Redis command. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.
📍 영향받는 시스템
Python 2.x (2.7.16 이하), Python 3.x (3.7.3 이하)
⚔️ 공격 벡터
URL 쿼리 스트링에 CRLF(\r
) 문자를 삽입하여 HTTP 헤더 또는 Redis 명령어를 주입하는 방식
🛡️ 대응 방법
Python 버전을 v2.7.17 이상 또는 v3.5.10, v3.6.12, v3.7.9 이상의 보안 패치 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 Python 버전이 취약한 범위(2.7.16 이하 또는 3.7.3 이하)에 해당하는지 확인하십시오.
python --version | grep -E '2.7\.(1[6-9]|1[7-9])|3\.(5\.[0-9]|6\.[0-9]|7\.[0-9])' || python3 --version