in
CVE-2025-60507 | Moodle GeniAI Plugin: Reflected & Stored XSS via PDF Upload & Prompt Injection
PoC — Moodle GeniAI plugin (local_geniai) v2.3.6
Important: These PoCs are for an isolated, consented test environment only (e.g., local Bitnami Moodle Docker). Do not run tests against production or third-party systems. Use non-exfiltrative payloads (e.g.,
alert('stored-xss')
) for public demonstrations. Redact any real usernames/hostnames in screenshots before publishing.
Summary
This PoC demonstrates three related vectors observed during testing of local_geniai
v2.3.6:
- Stored XSS via an uploaded PDF resource that is exposed as an unsanitized clickable link by the assistant.
- Reflected XSS via chatbot input that is returned/rendered unsanitized in the chat UI.
- LLM-assisted delivery / Prompt Injection where the assistant (LLM) returns HTML/raw links which can be used to deliver stored payloads to other users.
During testing the following public PDF collection was used as the uploaded file source (lab-only):
https://github.com/luigigubello/PayloadsAllThePDFs/blob/main/pdf-payloads/starter_pack.pdf