CVE-2025-2610

7.6 HIGH

📋 TL;DR

An authenticated stored cross-site scripting (XSS) vulnerability in MagnusBilling's Alarm Module allows attackers to inject malicious scripts that execute when other users view affected pages. This affects authenticated users of MagnusBilling versions through 7.3.0. The vulnerability resides in the protected/components/MagnusLog.Php file.

💻 Affected Systems

Products:
  • MagnusSolution MagnusBilling
Versions: through 7.3.0
Operating Systems: Any OS running MagnusBilling
Default Config Vulnerable: ⚠️ Yes
Notes: Requires authenticated access to the Alarm Module. The vulnerability is in the MagnusLog.Php component.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

An authenticated attacker could steal session cookies, perform actions as other users, redirect to malicious sites, or install malware on victim browsers.

🟠

Likely Case

Attackers with authenticated access could perform session hijacking, credential theft, or deface internal pages visible to other users.

🟢

If Mitigated

With proper input validation and output encoding, the malicious scripts would be rendered harmless as text rather than executable code.

🌐 Internet-Facing: HIGH if the MagnusBilling instance is exposed to the internet, as authenticated attackers could target other users.
🏢 Internal Only: MEDIUM as it still allows authenticated internal attackers to target other users within the organization.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires authenticated access and knowledge of the vulnerable endpoint. The vulnerability details are publicly disclosed.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version after commit f0f083c76157e31149ae58342342fb1bf1629e22

Vendor Advisory: https://github.com/magnussolution/magnusbilling7/commit/f0f083c76157e31149ae58342342fb1bf1629e22

Restart Required: No

Instructions:

1. Update MagnusBilling to the latest version after commit f0f083c76157e31149ae58342342fb1bf1629e22. 2. Apply the patch from the GitHub commit that adds proper input sanitization to MagnusLog.Php. 3. Verify the fix by testing input fields in the Alarm Module.

🔧 Temporary Workarounds

Input Validation Web Application Firewall (WAF)

all

Deploy a WAF with XSS protection rules to filter malicious scripts before they reach the application.

Content Security Policy (CSP)

all

Implement a strict CSP header to prevent execution of inline scripts and restrict script sources.

🧯 If You Can't Patch

  • Restrict access to the Alarm Module to only trusted, necessary users using role-based access controls.
  • Implement output encoding in the MagnusLog.Php file manually to sanitize user inputs before rendering.

🔍 How to Verify

Check if Vulnerable:

Check if MagnusBilling version is 7.3.0 or earlier and review the MagnusLog.Php file for lack of input sanitization in the Alarm Module.

Check Version:

Check the MagnusBilling version in the admin interface or configuration files.

Verify Fix Applied:

Test input fields in the Alarm Module with XSS payloads (e.g., <script>alert('test')</script>) and verify they are properly encoded or blocked.

📡 Detection & Monitoring

Log Indicators:

  • Unusual script tags or JavaScript in Alarm Module logs, multiple failed login attempts followed by XSS payload submissions.

Network Indicators:

  • HTTP requests containing script tags or JavaScript in parameters to MagnusLog.Php endpoints.

SIEM Query:

Search for POST/GET requests to */protected/components/MagnusLog.Php with parameters containing <script>, javascript:, or eval().

🔗 References

📤 Share & Export