CVE-2025-40702

5.4 MEDIUM

📋 TL;DR

A stored Cross-Site Scripting (XSS) vulnerability in OpenAtlas v8.9.0 allows remote attackers to inject malicious scripts via the 'creator' and 'license_holder' parameters in POST requests to '/insert/file'. This could enable session cookie theft from authenticated users. Organizations using OpenAtlas v8.9.0 for digital humanities and cultural heritage projects are affected.

💻 Affected Systems

Products:
  • OpenAtlas
Versions: v8.9.0
Operating Systems: Any OS running OpenAtlas
Default Config Vulnerable: ⚠️ Yes
Notes: Requires the vulnerable '/insert/file' endpoint to be accessible and user input to be processed without proper sanitization.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete account takeover through session hijacking, leading to unauthorized data access/modification, privilege escalation, and potential data exfiltration from the cultural heritage database.

🟠

Likely Case

Session cookie theft allowing attacker to impersonate authenticated users, potentially accessing sensitive cultural heritage data and performing unauthorized actions within their permission scope.

🟢

If Mitigated

Limited impact with proper input validation and output encoding, potentially only affecting the specific user session without broader system compromise.

🌐 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 visiting a malicious page or submitting crafted data, but the XSS payload execution is straightforward once delivered.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not specified in provided references

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 from the vendor. 3. Verify the fix by testing the vulnerable parameters with XSS payloads.

🔧 Temporary Workarounds

Input Validation and Output Encoding

all

Implement server-side validation and HTML encoding for user input in 'creator' and 'license_holder' parameters before processing or displaying.

Content Security Policy (CSP)

all

Deploy a strict CSP header to mitigate XSS impact by restricting script execution sources.

Add to web server config: Content-Security-Policy: default-src 'self'; script-src 'self'

🧯 If You Can't Patch

  • Implement a Web Application Firewall (WAF) with XSS protection rules to block malicious payloads.
  • Disable or restrict access to the '/insert/file' endpoint if not essential for operations.

🔍 How to Verify

Check if Vulnerable:

Test by submitting XSS payloads (e.g., <script>alert('XSS')</script>) in 'creator' or 'license_holder' parameters via POST to '/insert/file' and check if script executes.

Check Version:

Check OpenAtlas version in application interface or configuration files; typically visible in admin panel or via 'cat' commands on deployment files.

Verify Fix Applied:

Retest with XSS payloads after applying fixes; successful fix should show encoded output or blocked requests without script execution.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to '/insert/file' with script tags or JavaScript in parameters
  • Multiple failed login attempts following suspicious file insertions

Network Indicators:

  • HTTP traffic containing XSS patterns in POST body to vulnerable endpoint
  • Unexpected outbound connections from server after file insertion

SIEM Query:

source="web_logs" AND uri_path="/insert/file" AND (http_method="POST") AND (request_body CONTAINS "<script>" OR request_body CONTAINS "javascript:")

🔗 References

📤 Share & Export