CVE-2024-40739

6.1 MEDIUM

📋 TL;DR

This CVE describes a cross-site scripting (XSS) vulnerability in NetBox v4.0.3 where attackers can inject malicious scripts into the Name parameter when adding power feeds. This allows execution of arbitrary web scripts or HTML in victims' browsers. Organizations running vulnerable NetBox instances are affected.

💻 Affected Systems

Products:
  • NetBox
Versions: v4.0.3
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects the specific version mentioned; earlier or later versions may not be vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal session cookies, perform actions as authenticated users, deface the application, or redirect users to malicious sites, potentially leading to full account compromise.

🟠

Likely Case

Attackers would typically steal session cookies to hijack authenticated sessions, potentially gaining unauthorized access to NetBox functionality and data.

🟢

If Mitigated

With proper input validation and output encoding, the impact would be limited to minor UI disruption without data compromise.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires authenticated access to the power feed addition page; public proof-of-concept exists in GitHub repositories.

🛠️ 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 instance and database. 2. Update NetBox to version 4.0.4 or later using pip: 'pip install netbox==4.0.4'. 3. Restart the NetBox service: 'systemctl restart netbox'. 4. Verify the update by checking the version in the web interface.

🔧 Temporary Workarounds

Input Validation Filter

all

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

# Add custom validation in the power feed model or view to strip/escape HTML/JavaScript

WAF Rule

all

Deploy a web application firewall rule to block XSS payloads in the Name parameter.

# Example ModSecurity rule: SecRule ARGS:name "@detectXSS" "id:1001,phase:2,deny"

🧯 If You Can't Patch

  • Restrict access to the /dcim/power-feeds/add endpoint using network ACLs or authentication requirements.
  • Implement Content Security Policy (CSP) headers to mitigate script execution impact.

🔍 How to Verify

Check if Vulnerable:

Check if NetBox version is exactly 4.0.3 by viewing the web interface footer or running: 'python -c "import netbox; print(netbox.__version__)"'.

Check Version:

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

Verify Fix Applied:

After updating, verify the version is 4.0.4 or later and test the Name parameter with a benign XSS payload like '<script>alert(1)</script>' to ensure it's sanitized.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to /dcim/power-feeds/add with script tags in parameters
  • Multiple failed login attempts followed by power feed creation

Network Indicators:

  • HTTP requests containing <script> tags in the Name parameter
  • Unexpected outbound connections from NetBox server after power feed creation

SIEM Query:

source="netbox.log" AND (uri_path="/dcim/power-feeds/add" AND (param_name="name" AND param_value MATCHES "<script>"))

🔗 References

📤 Share & Export