---
id: "CVE-2026-113683"
kind: "vulnerability"
aliases: ["CVE-2026-113683"]
title: "VPL for Moodle: reflected XSS in similarity diff page"
severity: "medium"
cvss: 6.1
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["education", "lms", "moodle", "package", "vpl"]
not_affected_if: ["vpl-5.0.0-or-later", "vpl-not-installed"]
published_at: "2026-10-20T16:17:13+00:00"
first_seen_at: "2026-10-23T21:57:20+00:00"
updated_at: "2026-10-25T04:04:06+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-113683", "first_seen_at": "2026-10-23T21:57:20+00:00"}]
---

# VPL for Moodle: reflected XSS in similarity diff page

VPL (Virtual Programming Lab) for Moodle before 5.0.0 does not encode the filename1 and filename2 parameters in similarity/diff.php. An attacker can send a crafted diff.php link that runs script in the browser of a user with the mod/vpl:similarity capability, letting it act or read data under that user's session.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed VPL plugin version in Moodle under Site administration > Plugins > Activity modules > VPL (or `mod/vpl/version.php` in the Moodle code tree)
- Look for the similarity page `mod/vpl/similarity/diff.php` and confirm whether it encodes filename1 and filename2 before output (unknown from the sources beyond the description)

## Fix

- Upgrade the VPL plugin for Moodle to `5.0.0` or later
- Until upgraded, limit who holds the mod/vpl:similarity capability (unknown from the sources whether a workaround exists)

## Timeline

- 2026-10-23T21:57:20+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-113683

## From the sources

VPL (Virtual Programming Lab) for Moodle before 5.0.0 contains a reflected cross-site scripting vulnerability that allows remote attackers to inject script via unencoded filename1/filename2 parameters in similarity/diff.php. Attackers can craft a diff.php link with a JavaScript payload that runs when a user holding mod/vpl:similarity opens it, performing actions or disclosing data under their session.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
