🇰🇷 한글 설명
Python용 icalendar 라이브러리 7.1.0부터 7.1.3 버전에서 발생하는 취약점으로, 중첩된 컴포넌트 비교 시 지수 시간 복잡도(O(2^n))가 발생합니다. 공격자가 정교하게 조작된 중첩 구조의 .ics 파일을 제출하면 CPU 자원을 과도하게 점유하여 서비스 거부(DoS) 상태를 유발할 수 있습니다.
💡 쉬운 설명
달력 파일을 읽고 비교하는 과정에서 계산량이 기하급수적으로 늘어나는 버그가 발견되었습니다. 아주 작은 크기의 악성 파일을 보내는 것만으로도 서버의 CPU를 멈추게 하여 서비스를 마비시킬 수 있습니다.
🇺🇸 원문 (English)
icalendar is an RFC 5545 compatible parser and generator of iCalendar files for Python. From 7.1.0 until 7.1.3, the Component equality method in src/icalendar/cal/component.py compares nested subcomponents with two membership loops, and each membership test invokes the same method on child components, causing O(2^n) work relative to nesting depth. Component.from_ical accepts arbitrarily nested BEGIN:VEVENT blocks without a depth limit, so an attacker can submit a sub-kilobyte .ics file containing equal nested subtrees and trigger the cost when an application performs equality, inequality, membership, deduplication, test-assertion, round-trip, or normalization comparisons. Parsing alone does not trigger the issue, and comparisons that differ early short-circuit, but a few hundred bytes can pin a CPU core for minutes or indefinitely, causing denial of service in calendar sync or import endpoints, invite processing, and other comparison paths. This issue is fixed in version 7.1.3.
📍 영향받는 시스템
icalendar library versions 7.1.0 to 7.1.3
⚔️ 공격 벡터
중첩된 BEGIN:VEVENT 블록을 포함한 조작된 .ics 파일을 캘린더 동기화 또는 가져오기 엔드포인트로 전송
🛡️ 대응 방법
icalendar 라이브러리를 7.1.3 버전 이상으로 업데이트
🔧 검증 코드
출력된 버전이 7.1.3 미만(7.1.0, 7.1.1, 7.1.2)이면 취약한 상태입니다.
pip show icalendar 2>/dev/null | grep Version