CVE-2025-13469

2.4 LOW

📋 TL;DR

This vulnerability allows attackers to inject malicious scripts into the payment instructions setting page of Public Knowledge Project's OMP and OJS platforms. When exploited, it enables cross-site scripting attacks that can steal user sessions or deface websites. Users of OMP/OJS versions 3.3.0, 3.4.0, and 3.5.0 are affected.

💻 Affected Systems

Products:
  • Public Knowledge Project Open Monograph Press (OMP)
  • Public Knowledge Project Open Journal Systems (OJS)
Versions: 3.3.0, 3.4.0, 3.5.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Affects the payment instructions handler component; requires the manual payment plugin to be enabled and used.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, take over administrative accounts, and compromise the entire publishing platform.

🟠

Likely Case

Attackers inject malicious scripts to steal user session cookies or display phishing content to users accessing payment pages.

🟢

If Mitigated

With proper input validation and output encoding, the vulnerability would be prevented from executing malicious scripts.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires the ability to submit payment instructions, which typically requires some level of user interaction or administrative access.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Upgrade to version 3.3.0-1, 3.4.0-1, or 3.5.0-1 or later

Vendor Advisory: https://github.com/pkp/pkp-lib/issues/12022

Restart Required: No

Instructions:

1. Backup your current installation. 2. Download the latest patched version from the official PKP repository. 3. Replace the affected file: plugins/paymethod/manual/templates/paymentForm.tpl with the patched version. 4. Clear application caches if applicable.

🔧 Temporary Workarounds

Disable Manual Payment Plugin

all

Temporarily disable the affected payment method to prevent exploitation.

Navigate to Settings > Website > Plugins > Manual Payment Plugin > Disable

Input Validation Filter

all

Implement server-side input validation for the manualInstructions parameter.

Add input sanitization in the payment handler controller to strip HTML/script tags

🧯 If You Can't Patch

  • Implement a web application firewall (WAF) with XSS protection rules
  • Disable the payment instructions feature or restrict access to administrative users only

🔍 How to Verify

Check if Vulnerable:

Check if your OMP/OJS version is 3.3.0, 3.4.0, or 3.5.0 and verify the paymentForm.tpl file lacks proper input sanitization.

Check Version:

Check the version.txt file in the installation root directory or view the About page in the admin interface.

Verify Fix Applied:

After patching, verify that HTML/script tags in the manualInstructions parameter are properly escaped in the rendered output.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to payment handler endpoints with script tags in parameters
  • Multiple failed payment submissions with suspicious content

Network Indicators:

  • HTTP requests containing <script> tags in the manualInstructions parameter
  • Unexpected redirects from payment pages

SIEM Query:

source="web_server" AND (url="*paymentForm*" OR url="*paymethod/manual*") AND (param="*<script>*" OR param="*javascript:*")

🔗 References

📤 Share & Export