Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as Helium user
-
ExploitSubmit internal/external URL to /feed/externalcalendars/
-
ExecutionServer fetches attacker-chosen host
-
ImpactEnumerate internal services via response differences
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Helium account (PR:L) able to call POST /feed/externalcalendars/ and store an external calendar URL; no special product feature toggle is needed because the vulnerable code path (validate_url checking only syntax, then urllib.request.urlopen in icalexternalcalendarservice.py) is the default external-calendar behavior. Exploitation is amplified by fetch_ical_conditional, which periodically refetches the stored URL, giving repeatable server-side requests. The primary limiting factor is the authentication requirement - the attacker must be a registered/valid user of the target instance; impact is further limited to outbound request forgery and internal reconnaissance (host/port reachability) rather than confirmed data exfiltration, per the advisory. |
| Impact | This is a moderate-severity, authenticated SSRF (CWE-918) with a vendor-aligned CVSS of 4.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N). The signals are internally consistent and point to a real-but-limited issue rather than an emergency. The attack vector is network and complexity is low, but PR:L means a valid authenticated account is required, which meaningfully constrains the attacker population to registered users of a given Helium instance. The impact is scoped to confidentiality-low (C:L): the advisory itself is explicit that it demonstrates only forced outbound requests and internal host/port reconnaissance (via distinct responses and an uncaught http.client.RemoteDisconnected for non-HTTP services), and deliberately does NOT claim secret retrieval because the ECS credentials path is task-specific and unpredictable. No KEV listing and no public exploit code are indicated in the input, so exploitation status is 'no public exploit identified at time of analysis'. EPSS is not provided, so exploitation probability cannot be quantified from this data. SSVC inputs (exploitation/automatable/technical impact) were not supplied. Net: treat as a routine-priority patch - genuine SSRF reachable by any authenticated user, but low technical impact and no evidence of active exploitation or weaponization. |
| Exploit ScenarioDerived | An attacker who has registered or compromised any Helium user account submits a crafted URL (e.g. http://169.254.169.254/ or an internal host:port) to POST /feed/externalcalendars/; because validate_url only checks syntax, the server fetches it via urllib.request.urlopen and periodically re-fetches it. By observing differential responses and the RemoteDisconnected error on non-HTTP ports, the attacker maps internal services and reachable hosts behind the application. No public exploit code is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Server-side request forgery in Helium Platform before 2.2.60 lets any authenticated user force the server to issue outbound HTTP requests to arbitrary internal or external hosts by storing a crafted URL as an external calendar feed, enabling host and port reconnaissance through response differences and unhandled RemoteDisconnected errors. The vulnerable path is the default external-calendar feature, and the periodic refetch in fetch_ical_conditional makes the requests repeatable, though the advisory confirms only forced outbound requests and internal reachability-not secret exfiltration. Authentication is required (CVSS PR:L) and no public exploit has been identified at time of analysis; the vendor-aligned CVSS is 4.3.
RemediationAI
Vendor-released patch: upgrade to Helium Platform 2.2.60 (commit f0de5c985c701942758b805a3d11dfb008a6af88), which adds SSRF checks that resolve the hostname and block private, loopback, link-local, reserved, and multicast IPs, re-validates redirect targets, and normalizes http.client exceptions. If immediate upgrade is not possible, apply network-level egress filtering so the application server cannot reach internal RFC1918 ranges, loopback, link-local, and cloud metadata endpoints such as 169.254.169.254; this mitigates SSRF reachability but the trade-off is that misconfigured egress rules can break legitimate external calendar syncing, and the platform will still issue requests to allowed external calendar URLs. Vendor advisory: https://github.com/HeliumEdu/platform/security/advisories/GHSA-2f83-94pv-v3f5.
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 root cause is CWE-918 (SSRF): helium/feed/services/icalexternalcalendarservice.py validated user-supplied calendar URLs with validate_url, which only checked URL syntax before passing the value to urllib.request.urlopen. Because the application stores the URL and fetch_ical_conditional periodically refetches it, the server makes recurring requests to attacker-selected destinations, and distinct responses (including an uncaught http.client.RemoteDisconnected for non-HTTP services) reveal whether internal hosts and ports are reachable. The fix in commit f0de5c98 introduces helium/common/utils/httputils.py with _check_ssrf, which resolves the hostname and rejects private, loopback, link-local, reserved, or multicast IPs, a _SecureRedirectHandler that re-validates redirect targets, and urlopen_secure that also normalizes http.client.HTTPException (including RemoteDisconnected) to URLError. The same commit adds extension and MIME-type blocklists in conf/configs/common.py and replaces the raw urlopen call in the SES webhook subscription-confirmation path.
Know when Platform 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:L/I:N/A:N
Any authenticated user can trigger it remotely (AV:N/AC:L/PR:L/UI:N); impact is limited to internal reconnaissance disclosure (C:L) with no integrity or availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Helium is a free online student planner for classes, homework, grades, and notes. Prior to 2.2.60, any authenticated user can submit an arbitrary URL to POST /feed/externalcalendars/, where helium/feed/services/icalexternalcalendarservice.py uses validate_url to check only URL syntax before passing the value to urllib.request.urlopen, and fetch_ical_conditional periodically refetches the stored URL. The server can therefore issue requests to attacker-selected external or internal hosts, while distinct responses, including an uncaught http.client.RemoteDisconnected condition for non-HTTP services, reveal internal host and port reachability. The supported impact is forced outbound requests and internal service reconnaissance; the advisory does not demonstrate secret retrieval because the relevant ECS credentials path is task-specific and unpredictable. This issue is fixed in version 2.2.60.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Server-side request forgery in Huly Platform's /import endpoint allows authenticated workspace users to coerce the front
Affected 1E Platform versions have a Blind SQL Injection vulnerability that can lead to arbitrary code execution. Rated
Orchid is a Laravel package that allows application development of back-office applications, admin/user panels, and dash
Pega Platform before version 8.2.6 is affected by a Stored Cross-Site Scripting (XSS) vulnerability in the comment tags.
The Richtext Editor in Pega Platform before 8.2.6 is affected by a Stored Cross-Site Scripting (XSS) vulnerability. Rate
Improper privilege management in runZero Platform allows organization administrators to escalate privileges to superuser
Improper link resolution before file access in the Nomad module of the 1E Client, in versions prior to 25.3, enables an
Incorrect access control in the component ApiPayController.java of platform v1.0.0 allows attackers to access sensitive
Incorrect access control in the component orderService.queryObject of platform v1.0.0 allows attackers to access sensiti
Incorrect access control in the component ApiOrderService.java of platform v1.0.0 allows attackers to access sensitive i
The 1E-Exchange-DisplayMessageinstruction that is part of the End-User Interaction product pack available on the 1E Exch
The 1E-Exchange-CommandLinePing instruction that is part of the Network product pack available on the 1E Exchange does n
EUVD-2026-102222
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB