Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft VALARM with huge REPEAT
-
DeliverySubmit .ics to calendar app
-
ExploitApp accesses Alarms.times/triggers
-
ExecutionUnbounded trigger expansion
-
ImpactCPU/memory exhaustion, service stalls
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires: (1) the application uses icalendar 6.1.0-7.2.1; (2) the application accepts attacker-influenced iCalendar/.ics content containing a VALARM with a large REPEAT property; and (3) critically, the application must ACCESS the alarm properties - Alarms.times or Alarms.active (affected 6.1.0+) or Alarm.triggers (affected 7.0.0+). Parsing alone does NOT trigger the flaw, which meaningfully limits exposure to apps that expand/render alarm schedules. Authentication is not inherent to the vulnerability and depends on the host application's ingestion path (anonymous ICS import = unauthenticated; account-gated calendar upload = low-privilege). Before the fix there was no application-level cap on expansion, and REPEAT accepted values up to the RFC 5545 signed 32-bit maximum. |
| Impact | This is a genuine but bounded availability issue (CWE-400 resource exhaustion), not a code-execution flaw - the CVSS vector confirms A:H with C:N/I:N, so the only impact is DoS. The NVD vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H yields 6.5 (Medium). No EPSS score, no CISA KEV listing, and no public exploit code are present in the provided intelligence, so exploitation status is 'no public exploit identified at time of analysis' - DoS bugs in parsing libraries are rarely weaponized at scale and this reads as low real-world urgency. One nuance worth flagging: the vulnerability is a library-level flaw whose exposure depends entirely on the consuming application. Parsing an .ics file alone is safe; the exhaustion only fires when the application accesses Alarms.times, Alarms.active (6.1.0+) or Alarm.triggers (7.0.0+). NVD chose PR:L, but the flaw itself imposes no authentication requirement - whether an attacker needs an account is a property of the host application (e.g. a calendar service that requires login to upload events would be PR:L, while an anonymous ICS-import endpoint would be PR:N). Treat this as a patch-in-normal-cycle Medium rather than an emergency. |
| Exploit ScenarioDerived | An attacker submits a crafted iCalendar (.ics) file containing a VALARM with an enormous REPEAT value (up to the RFC signed 32-bit max, ~2.1 billion) to an application that ingests calendars and then reads alarm/trigger times. When the app accesses Alarms.times/active or Alarm.triggers, the library eagerly expands billions of trigger datetimes, exhausting CPU and heap and stalling or killing the service. No public exploit code is identified, but the trigger is trivial to construct given the fix simply clamps the expansion count. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Denial of service in the Python icalendar library (versions 6.1.0 through 7.2.1) allows unauthenticated attackers to exhaust CPU and heap memory by supplying iCalendar content whose VALARM REPEAT property carries an extremely large value. Parsing the file is harmless on its own; the resource exhaustion fires only when an application then reads alarm-expansion properties such as Alarms.times, Alarms.active (affected since 6.1.0) or Alarm.triggers (affected since 7.0.0), which eagerly materialize the repeated alarm occurrences because no application-level cap existed before the fix. The assessed CVSS vector is AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, so the sole impact is availability - this is a CWE-400 resource-exhaustion flaw, not code execution or data compromise, and no public exploit code was identified at time of analysis. Vendor-released patch: 7.2.2.
RemediationAI
Upgrade icalendar to the vendor-released patched version 7.2.2 (https://github.com/collective/icalendar/releases/tag/v7.2.2), which caps alarm expansion at icalendar.config.MAX_ALARM_REPEAT (default 10,000, settable to -1 to disable) and enforces the RFC 5545 signed 32-bit range in vInt; the individual upstream fixes are visible in commits 157f85137c65565a308bbcf4fdcc7d8ebce01267 and cddd37226adbc52cca52a399f61d38a378221219 and PR https://github.com/collective/icalendar/pull/1571. If upgrading is not immediately possible, apply compensating controls on the ingestion path: reject or sanitize inbound iCalendar text before it reaches the library - for example with a pre-parse regex/limits check that drops any VALARM whose REPEAT exceeds a small threshold (e.g. 10,000) - accepting the trade-off that legitimate very-long repeat schedules are refused and that string-level filtering can be bypassed by unusual encodings, so it should be paired with a hard input size limit; alternatively, defer or forbid access to Alarms.times, Alarms.active and Alarm.triggers for untrusted calendars, so that only parsing (which does not trigger the flaw) occurs, at the cost of losing alarm rendering for those sources. Additional hardening that reduces blast radius without fixing the vulnerability: run calendar processing in a worker with a strict wall-clock timeout and memory cgroup limit so an oversized REPEAT kills only that worker rather than the whole service, and rate-limit or require authentication on calendar upload endpoints to shrink the anonymous attack surface described in the assessed vector.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw lives in icalendar's handling of RFC 5545 (iCalendar) VALARM components. RFC 5545 Section 3.8.6.2 defines the REPEAT property as a non-negative integer with no upper bound, and the typed value class icalendar.prop.integer.vInt accepted values up to that unconstrained range. Internally, icalendar expands repetition by iterating range(1, repeat + 1) for each alarm; before the fix, Alarms._repeat and Alarm.triggers passed attacker-controlled REPEAT values straight into that loop, so a single crafted property could generate millions of datetime objects - converging in unbounded CPU consumption and heap growth until the worker thread stalls or the process is killed (CWE-400). The upstream fix introduces a new module, icalendar.config, defining MAX_ALARM_REPEAT with a default of 10,000 and a _clamp_repeat() helper that clamps negatives to zero and truncates oversized values; both expansion sites (alarms.py for Alarms.times/Alarms.active and cal/alarm.py for Alarm.triggers) now route through it. The same commit set additionally hardens vInt by enforcing RFC 5545's signed 32-bit integer bounds (-2147483648 to 2147483647) on parsing and jCal paths, rejecting out-of-range values with a ValueError, which closes the underlying 'no upper bound' gap at the parser level.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Attacker-controlled input needs no auth inherent to the library (PR:N, vs NVD's app-dependent PR:L), low complexity, remote input, availability-only impact from resource exhaustion.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
icalendar is an RFC 5545 compatible parser and generator of iCalendar files for Python. From 6.1.0 until 7.2.2, vInt.from_ical accepts an attacker-controlled VALARM REPEAT value and applications that request alarm times can eagerly expand it without an application-level limit. Alarms.times and Alarms.active reach the unbounded expansion in versions starting with 6.1.0, while Alarm.triggers adds a second affected path starting with 7.0.0. Parsing alone does not trigger the issue, but accessing these properties can consume excessive CPU time and heap memory and terminate or stall a service. This issue is fixed in version 7.2.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-84800
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB