CVE-2025-40704

5.4 MEDIUM

📋 TL;DR

A Cross-Site Scripting (XSS) vulnerability in OpenAtlas v8.9.0 allows remote attackers to inject malicious scripts via the 'name' parameter in POST requests to '/insert/edition'. This could enable session cookie theft from authenticated users. Organizations using OpenAtlas v8.9.0 from the Austrian Centre for Digital Humanities and Cultural Heritage are affected.

💻 Affected Systems

Products:
  • OpenAtlas
Versions: v8.9.0
Operating Systems: Any
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects installations with the vulnerable '/insert/edition' endpoint accessible. Requires user authentication for exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete account takeover through session cookie theft, leading to unauthorized access, data manipulation, or privilege escalation within the OpenAtlas system.

🟠

Likely Case

Session hijacking allowing attackers to impersonate authenticated users, potentially accessing sensitive cultural heritage data or modifying records.

🟢

If Mitigated

Limited impact with proper input validation, output encoding, and Content Security Policy (CSP) headers in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires the attacker to trick an authenticated user into submitting malicious input. Standard XSS exploitation techniques apply.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Unknown

Vendor Advisory: https://www.incibe.es/en/incibe-cert/notices/aviso/multiple-cross-site-scripting-xss-vulnerabilities-openatlas-acdh-ch

Restart Required: No

Instructions:

1. Monitor the OpenAtlas GitHub repository for security updates. 2. Apply any available patches for v8.9.0 or upgrade to a fixed version when released. 3. Review and implement input validation and output encoding for all user-controllable parameters.

🔧 Temporary Workarounds

Input Validation Filter

all

Implement server-side validation to sanitize the 'name' parameter in POST requests to '/insert/edition' by removing or encoding HTML/JavaScript characters.

Modify the relevant PHP/backend code to apply htmlspecialchars() or similar filtering to user input before processing.

Content Security Policy

all

Implement a strict Content Security Policy header to prevent execution of inline scripts and unauthorized external resources.

Add 'Content-Security-Policy: default-src 'self'; script-src 'self'' to HTTP response headers.

🧯 If You Can't Patch

  • Implement a Web Application Firewall (WAF) with XSS protection rules to block malicious payloads.
  • Restrict access to the '/insert/edition' endpoint to trusted IP addresses or networks only.

🔍 How to Verify

Check if Vulnerable:

Test by submitting a payload like <script>alert('XSS')</script> in the 'name' parameter of a POST request to '/insert/edition' and check if it executes in a browser.

Check Version:

Check the OpenAtlas version in the application interface or configuration files; vulnerable if version is exactly 8.9.0.

Verify Fix Applied:

After applying fixes, repeat the test with the same payload; it should be properly encoded or blocked without execution.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to '/insert/edition' with script tags or JavaScript in parameters.
  • Multiple failed authentication attempts followed by successful access to the endpoint.

Network Indicators:

  • HTTP traffic containing malicious scripts in POST body parameters.
  • Unexpected outbound connections from the server after exploitation.

SIEM Query:

source="web_server" AND uri="/insert/edition" AND (body CONTAINS "<script>" OR body CONTAINS "javascript:")

🔗 References

📤 Share & Export