CVE-2025-40675

6.1 MEDIUM

📋 TL;DR

A reflected XSS vulnerability in Bagisto v2.0.0 allows attackers to execute malicious JavaScript in victims' browsers via crafted URLs containing malicious 'query' parameters in the search endpoint. This affects all Bagisto v2.0.0 installations with the vulnerable search functionality enabled. Attackers can steal session cookies, credentials, or perform actions as authenticated users.

💻 Affected Systems

Products:
  • Bagisto
Versions: v2.0.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: All Bagisto v2.0.0 installations with the search functionality accessible are vulnerable. No special configuration required.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete account takeover, data theft, administrative actions performed by attackers, potential server compromise if combined with other vulnerabilities.

🟠

Likely Case

Session hijacking, credential theft, defacement, or unauthorized actions performed as the victim user.

🟢

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: ⚠️ Yes
Complexity: LOW

Exploitation requires user interaction (clicking malicious link) but is straightforward once the vulnerability is understood.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v2.0.1 or later

Vendor Advisory: https://www.incibe.es/en/incibe-cert/notices/aviso/reflected-cross-site-scripting-xss-bagisto

Restart Required: No

Instructions:

1. Update Bagisto to version 2.0.1 or later. 2. Apply the patch that implements proper input validation and output encoding for the 'query' parameter in the search endpoint. 3. Verify the fix by testing the search functionality with XSS payloads.

🔧 Temporary Workarounds

Input Validation Filter

all

Implement server-side input validation to sanitize the 'query' parameter before processing.

Modify the search controller to validate and sanitize user input using appropriate libraries (e.g., HTMLPurifier for PHP).

Web Application Firewall (WAF) Rule

all

Deploy a WAF rule to block requests containing malicious JavaScript in the 'query' parameter.

Configure WAF to detect and block patterns like <script>, javascript:, and common XSS payloads in URL parameters.

🧯 If You Can't Patch

  • Disable the search functionality if not essential.
  • Implement strict Content Security Policy (CSP) headers to mitigate script execution.

🔍 How to Verify

Check if Vulnerable:

Test by accessing the search endpoint with a payload like '/search?query=<script>alert(1)</script>' and check if the script executes.

Check Version:

Check the Bagisto version in the admin panel or via the application's configuration files.

Verify Fix Applied:

After patching, test with the same payload; the script should not execute, and the input should be properly encoded or rejected.

📡 Detection & Monitoring

Log Indicators:

  • Unusual search queries containing script tags or JavaScript code in access logs.
  • Multiple failed login attempts or session hijacking events following suspicious search requests.

Network Indicators:

  • HTTP requests to '/search' with encoded or obfuscated JavaScript in the query parameter.
  • Outbound connections to external domains from the application that correlate with search requests.

SIEM Query:

source="web_access_logs" AND uri_path="/search" AND query="*<script>*" OR query="*javascript:*"

🔗 References

📤 Share & Export