CVE-2024-40737

6.1 MEDIUM

📋 TL;DR

A stored cross-site scripting (XSS) vulnerability in NetBox v4.0.3 allows authenticated attackers to inject malicious scripts into the Name parameter when adding console ports. This vulnerability affects all NetBox instances running the vulnerable version, potentially compromising user sessions and data.

💻 Affected Systems

Products:
  • NetBox
Versions: v4.0.3
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires authenticated access to the /dcim/console-ports/add endpoint. The vulnerability exists in the default configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, hijack user sessions, deface the application, or perform actions on behalf of authenticated users, potentially leading to full system compromise.

🟠

Likely Case

Attackers with authenticated access could steal session cookies, redirect users to malicious sites, or perform limited unauthorized actions within the application.

🟢

If Mitigated

With proper input validation and output encoding, the attack would be prevented, and impact would be limited to failed exploitation attempts.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access. The vulnerability is in a web form parameter with public proof-of-concept available.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v4.0.4 or later

Vendor Advisory: https://github.com/netbox-community/netbox/releases

Restart Required: Yes

Instructions:

1. Backup your NetBox database and configuration. 2. Update NetBox to version 4.0.4 or later using pip: 'pip install --upgrade netbox'. 3. Run database migrations: 'python manage.py migrate'. 4. Restart the NetBox service.

🔧 Temporary Workarounds

Input Validation Filter

all

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

Implement custom validation in the console port creation view to strip or escape HTML/JavaScript tags

Web Application Firewall (WAF)

all

Configure WAF rules to block XSS payloads in the Name parameter.

Add WAF rule: Block requests containing <script>, javascript:, or common XSS patterns in the Name parameter

🧯 If You Can't Patch

  • Restrict access to the /dcim/console-ports/add endpoint to only trusted administrators
  • Implement Content Security Policy (CSP) headers to mitigate script execution

🔍 How to Verify

Check if Vulnerable:

Test by attempting to inject a simple XSS payload like '<script>alert(1)</script>' into the Name field when adding a console port. If the script executes when viewing the console port, the system is vulnerable.

Check Version:

python -c "import netbox; print(netbox.__version__)"

Verify Fix Applied:

After patching, attempt the same XSS payload injection. The input should be properly sanitized and no script execution should occur.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to /dcim/console-ports/add with script tags or JavaScript in parameters
  • Multiple failed login attempts followed by console port creation

Network Indicators:

  • HTTP requests containing <script> tags or JavaScript code in the Name parameter
  • Unusual outbound connections from NetBox server after console port creation

SIEM Query:

source="netbox.log" AND (uri_path="/dcim/console-ports/add" AND (param_name="name" AND param_value CONTAINS "<script>" OR param_value CONTAINS "javascript:"))

🔗 References

📤 Share & Export