Skip to main content

icalendar EUVDEUVD-2026-84800

| CVE-2026-77399 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-09-22 security-advisories@github.com
6.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft VALARM with huge REPEAT
  2. Delivery
    Submit .ics to calendar app
  3. Exploit
    App accesses Alarms.times/triggers
  4. Execution
    Unbounded trigger expansion
  5. Impact
    CPU/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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

icalendar 6.1.0, < 7.2.2

Affected Packages

euvd icalendar_6_1_0 fix: 7.2.2

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

Vendor (github) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Sep 22, 2026 - 20:18 EUVD

DescriptionCVE.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

EPSS Score
0.5%
Top 55% exploitable
Prevalence
Medium
very popular Python iCalendar library, but impact gated on apps reading alarm properties
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

33
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy