copyparty vulnerable to reflected cross-site scripting via k304 parameterGHSA-f54q-j679-p9hh
MEDIUMFix: 9001/copyparty@007d948GHSA-f54q-j679-p9hh is a medium-severity (CVSS 6.3) Cross-site Scripting (XSS) vulnerability in copyparty. 1 public exploit or proof-of-concept reference is indexed, so weaponization risk is real. A fix is available for copyparty — see the affected versions and patch details below.
Exploitation Status
Proof-of-concept exploit code exists
- CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
Exploitation and automatability from CISA’s SSVC triage for GHSA-f54q-j679-p9hh.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
copypartyReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.
Description
Summary
The application contains a reflected cross-site scripting via URL-parameter ?k304=... and ?setck=...
Details
A reflected cross-site scripting (XSS) vulnerability exists in the web interface of the application that could allow an attacker to execute malicious javascript code by tricking users into accessing a malicious link.
The worst-case outcome of this is being able to move or delete existing files on the server, or upload new files, using the account of the person who clicks the malicious link.
It is recommended to change the passwords of your copyparty accounts, unless you have inspected your logs and found no trace of attacks.
Checking for exposure
if copyparty is running behind a reverse proxy, you can check the access-logs for traces of attacks, by grepping for URLs containing ?hc= with < somewhere in its value, for example using the following command:
- nginx:
(gzip -dc access.log*.gz; cat access.log) | sed -r 's/" [0-9]+ .*//' | grep -iE '%0[da]%0[da]%0[da]%0[da]|[?&](hc|pw)=.*[<>]'
the above commands also check for attacks against GHSA-cw7j-v52w-fp5r
PoC
https://localhost:3923/?k304=y%0D%0A%0D%0A%3Cimg+src%3Dcopyparty+onerror%3Dalert(1)%3E
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | copyparty | all versions | 1.8.7pip install --upgrade 'copyparty==1.8.7' |
Affected Products
copyparty9001Research use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.
copyparty v1.8.6 - Reflected Cross Site Scripting (XSS)
by Vartamtezidis Theodoros · Jul 28, 2023
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for copyparty, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update copyparty to 1.8.7 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-f54q-j679-p9hh is resolved across your whole dependency graph.
Workarounds
Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.
How to detect GHSA-f54q-j679-p9hh
A community-maintained Nuclei template exists for this CVE. You can scan for it directly:
nuclei -id ghsa-f54q-j679-p9hh -u https://target- Template
- CopyParty v1.8.6 - Cross Site Scripting
- Severity
- medium
- Impact
- Unauthenticated attackers can inject malicious JavaScript through the k304 parameter to steal user session cookies when users click malicious links to CopyParty.
- Remediation
- Fixed in v1.8.6
Template by ProjectDiscovery nuclei-templates (ctflearner, r3Y3r53), MIT licensed. View the full template. Scan only systems you are authorised to test.
Frequently Asked Questions
Is GHSA-f54q-j679-p9hh in your dependencies?
Find it across PyPI, including transitive dependencies.