VYPR
Moderate severityNVD Advisory· Published Jul 22, 2025· Updated Jul 22, 2025

CVE-2025-51464

CVE-2025-51464

Description

Cross-site Scripting (XSS) in aimhubio Aim 3.28.0 allows remote attackers to execute arbitrary JavaScript in victims browsers via malicious Python code submitted to the /api/reports endpoint, which is interpreted and executed by Pyodide when the report is viewed. No sanitisation or sandbox restrictions prevent JavaScript execution via pyodide.code.run_js().

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

A stored XSS in Aim 3.28.0 lets attackers execute arbitrary JavaScript via Python code in /api/reports, using Pyodide's unrestricted JS bridge.

Vulnerability

Description

CVE-2025-51464 is a stored cross-site scripting (XSS) vulnerability in aimhubio Aim version 3.28.0, an open-source ML experiment tracker [1]. The flaw exists in the "/api/reports" endpoint, which accepts user-supplied Python code in the code field of POST requests. This code is stored in the database without sanitization and later embedded into a React component when a report is viewed. The markdown renderer interprets code blocks with the "aim" language tag and passes them to the Board component for execution via Pyodide [3].

Exploitation

An attacker can submit a malicious report containing Python code that calls pyodide.code.run_js() to execute arbitrary JavaScript in the victim's browser. Since there are no restrictions on the JavaScript bridge, an attacker can break out of the intended Python sandbox [3]. The attack requires no authentication beyond regular access to the API, and the malicious payload is executed automatically when any user views the affected report [2]. A proof-of-concept demonstrates using fetch() to exfiltrate data from the application's API to an attacker-controlled server [3].

Impact

Successful exploitation allows remote attackers to execute arbitrary JavaScript in the context of the Aim application. This can lead to session hijacking, data theft (including other reports), and further malicious actions within the victim's browser session [2]. The vulnerability is classified as stored XSS because the payload persists in the database and impacts all viewers of the crafted report.

Mitigation

The issue has been addressed in a pull request (PR #3333) on the aimhubio/aim repository [4]. Users should update Aim to a patched version that restricts Pyodide's JavaScript bridge (e.g., by removing or sandboxing run_js) and sanitizes user-supplied code in reports. No official advisory with a new release version has been published as of the CVE publication date [1][4].

AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
aimPyPI
<= 3.30.0.dev20250611

Affected products

2
  • aimhubio/Aimdescription
  • AOL/Aimllm-fuzzy
    Range: = 3.28.0

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

4

News mentions

0

No linked articles in our index yet.