Skip to main content

conda-forge.github.io EUVDEUVD-2026-108820

| CVE-2026-55422 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-23 GitHub_M
4.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Control feedstock recipe or upstream source
  2. Delivery
    Autotick bot captures payload into published status JSON
  3. Exploit
    Victim loads conda-forge.org/status page and expands entry
  4. Execution
    dangerouslySetInnerHTML injects markup into origin
  5. Impact
    Execute JavaScript for phishing or same-origin theft

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the attacker to control a conda-forge feedstock recipe or the upstream source a feedstock pulls from (achievable by creating a feedstock via a reviewed staged-recipes PR, after which the maintainer controls their recipe and upstream releases), and to cause an autotick-bot version-update or migration step to FAIL in a way that captures attacker-chosen build/patch/traceback output - containing an executing HTML payload such as '<img src=x onerror=...>' or '<svg onload=...>' - into the errors[name] field of version_status.v2.json or the pre_pr_migrator_status field of a migration_json file. The victim side needs no authentication but requires UI:R: a user must visit https://conda-forge.org/status/ (Version Updates panel) or the migration status page and expand the affected entry. LIMITING FACTORS: reliably landing an executing event-handler payload in captured program output is non-trivial and was not demonstrated end-to-end; attacker needs ecosystem-level access to a feedstock/upstream; and impact is confined to the conda-forge.org origin (C:L/I:L/A:N).

Impact

This is a medium-severity stored/DOM XSS (CWE-79) with multiple mitigating factors that keep real-world risk moderate rather than urgent. The vuln.today decision label is 'this_month' (not act_now/emergency), no CISA KEV listing is present, and no EPSS probability was supplied in the input - so widespread or automated exploitation is not indicated by any decision signal. The two supplied CVSS vectors CONFLICT and this should be verified: the top-level input vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N (AC:L), while the GHSA advisory itself scores AC:H. The AC:H reading is better supported by the advisory's own 'honest caveat' that severity hinges on reliably landing an executing payload in bot-captured output, which was not demonstrated end-to-end. Either way the vector requires attacker privilege in the ecosystem (PR:L - control of a feedstock) plus victim interaction (UI:R - a user must visit/expand the status entry), both of which blunt mass exploitation. The absence of sanitization is PROVEN with live production data (unescaped '<frozen _collections_abc>' reaching the DOM), but weaponization is characterized by the reporter as plausible, not demonstrated. Net: a legitimate issue worth fixing on a normal patch cadence for a high-trust package-distribution origin, but not a drop-everything emergency given PR:L, UI:R, limited (C:L/I:L/A:N) impact, and no evidence of active exploitation.

Exploit ScenarioDerived

An attacker who controls a conda-forge feedstock recipe (obtainable via a reviewed staged-recipes PR) or an upstream source tarball crafts content - e.g. a filename or build/patch output containing '<img src=x onerror=...>' - that the autotick bot captures as error/status output and publishes verbatim into the status JSON. When any visitor loads conda-forge.org/status/ and expands that entry, dangerouslySetInnerHTML injects the markup and the attacker's JavaScript executes in the conda-forge.org origin. No working exploit code was supplied; the GHSA advisory proves the sink is unsanitized with live data but explicitly notes end-to-end weaponization was not demonstrated.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 23, 2026

Stored/DOM cross-site scripting exists in the conda-forge.org website, where two React components render bot-generated status strings as raw HTML, so a feedstock maintainer who can influence captured autotick-bot output could execute script in the conda-forge.org origin for any visitor who expands the affected entry on the public status or migration pages. The flaw is confirmed in the current main branch (commits 85748ad2368a and prior) and affects a rolling deployment with no tagged releases; at time of analysis there is no vendor-released patch, no confirmed public exploit code, and no CISA KEV listing. The assessed severity is Medium (CVSS 3.1 AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N): the missing sanitization is proven against live production data, but end-to-end weaponization was not demonstrated and reliable delivery of an executing payload into captured build or traceback output is non-trivial.

RemediationAI

No vendor-released patch was identified at time of analysis: the upstream advisory states there are no publicly available patches and lists the issue as not yet fixed, so the main-branch deployment remains exposed. The advisory's preferred fix is to stop rendering HTML entirely - replace <pre dangerouslySetInnerHTML={{ __html: message }} /> with <pre>{message}</pre> in src/components/StatusDashboard/version_updates.jsx:100 and the equivalent sink at src/pages/status/migration/index.jsx:597 - and reconstruct the one legitimately embedded 'bot CI job' link from a separate structured field such as a run_url rather than trusting embedded markup; this removes the injection primitive completely but changes how that link is displayed. If HTML rendering must be retained, pass both values through DOMPurify with a strict allowlist (ALLOWED_TAGS ['a','br','pre','code'], ALLOWED_ATTR ['href'], and an href scheme/host allowlist restricting to https://github.com) before handing them to dangerouslySetInnerHTML; the trade-off is a new runtime dependency and the risk that legitimate future markup breaks silently. As defense in depth, the producer side (regro/cf-scripts) should HTML-escape captured build, patch and traceback output before writing it into the status JSON fields, and conda-forge.org should ship a Content-Security-Policy without unsafe-inline for scripts, which blunts event-handler payloads but requires auditing inline scripts on the site first. Until a fix is deployed, the exposure is limited to visitors who open the Version Updates panel or a migration status page on the public site, and no confirmed public exploit code exists at time of analysis. Details and updates: https://github.com/conda-forge/conda-forge.github.io/security/advisories/GHSA-r5vj-wgjv-r524.

Affected VersionsENISA

conda-forge.github.io ≤ 85748ad2368a

Affected Packages

euvd conda_forge_github_io no fix

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 affected code is a Docusaurus/React front end served from https://conda-forge.org. Two sinks pass externally sourced strings to React's dangerouslySetInnerHTML with no sanitization layer: src/components/StatusDashboard/version_updates.jsx line 100 injects the message value of each entry in the errors object, and src/pages/status/migration/index.jsx line 597 injects the pre_pr_migrator_status details value inside a table cell. The data is fetched at runtime from raw.githubusercontent.com - version_status.v2.json and per-feedstock migration_json files in conda-forge/conda-forge-bot-data - which are written automatically by the conda-forge autotick bot (regro/cf-scripts) as it processes every feedstock and its upstream source artifacts. Those JSON fields embed raw captured program output: build logs, patch output and Python tracebacks. The project has no DOMPurify or sanitize-html dependency anywhere in src/ or package.json, and live production data already contains unescaped angle-bracket content such as File "<frozen _collections_abc>", proving the sink is unescaped; the only legitimate markup currently relied upon is an embedded 'bot CI job' anchor tag. This is CWE-79 (improper neutralization of input during web page generation), specifically the stored/DOM variant: the trust boundary runs from feedstock maintainers and upstream release tarballs, through bot-captured output, into a privileged same-origin rendering context. Cross-checks in the advisory ruled out the PR-preview editUrl path in docusaurus.config.js because preview builds are never deployed (deploy is gated on github.ref == 'refs/heads/main'). Note that the upstream advisory rates the vector AC:H while the NVD-style vector supplied with the CVE record shows AC:L; the higher-complexity AC:H rating is the one used here because landing an executing event-handler payload in captured program output is not straightforward and was not demonstrated end to end.

Know when Conda Forge Github Io 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_M) PRIMARY 4.6 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
vuln.today AI 3.7 LOW

AV:N (web origin) but AC:H because reliably landing an executing payload in bot-captured output is non-trivial and undemonstrated; PR:L for required feedstock control; UI:R as a victim must view the status entry.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

DescriptionCVE.org

conda-forge is a GitHub organization containing repositories of conda recipes. In commits 85748ad2368a and prior, two React components render externally-sourced strings directly as HTML using dangerouslySetInnerHTML, with no sanitization (the project has no DOMPurify or equivalent dependency). JSON files are produced automatically by the conda-forge autotick bot (regro/cf-scripts) while it processes every conda-forge feedstock and its upstream source artifacts. The error/status strings embed raw output captured from those processes (build logs, patch output, tracebacks). The website renders them verbatim as HTML. At time of publication, there are no publicly available patches.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
single project website, one deployment origin (not redistributed software)
Data Quality
5 sources
Confidence: Medium

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.2%
Patch available No
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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