☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.9 🐛 CWE-134
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-10828

CVE-2026-10828 Format String in Format
📅 PUBLISHED: 2026-06-16 12:16 UTC 🔄 UPDATED: 2026-08-18 17:14 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.31%
👁️
0.31% probability
7.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: version not auto-detected — verify your deployed version locally
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
6.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-10828 is a critical format string vulnerability affecting the Moxa NPort W2150A-W4 and W2250A-W4 Series serial device servers running firmware version 1.5 and prior. The flaw resides in the "alias" parameter of the Serial Param configuration page. Due to insufficient input validation and improper handling of externally supplied format strings, an unauthenticated attacker can send crafted input to the web service, leading to unintended memory disclosure. Successful exploitation allows an attacker to leak sensitive memory contents and determine critical memory addresses, potentially bypassing Address Space Layout Randomization (ASLR) protections. This vulnerability is currently unpatched, and no public proof-of-concept or exploit code is available.

Note: This vulnerability is not related to any package ecosystem (NPM, PyPI, Go, Ruby) and is specific to embedded device firmware.

⚡ 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

While a CVSS vector is not officially assigned, based on the vulnerability characteristics, a reasonable assessment is:

  • Attack Vector (AV): Network (N) – Exploitable remotely over the network.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Unchanged (U) – Vulnerability does not affect other components.
  • Confidentiality (C): High (H) – Memory disclosure can leak sensitive data.
  • Integrity (I): None (N) – No direct data modification.
  • Availability (A): None (N) – No direct denial of service.

Estimated CVSS Score: 7.5 (High)

Threat Level: High. The vulnerability allows remote, unauthenticated memory disclosure, which can be used to bypass ASLR and facilitate further exploitation.

Deep Dive & Mechanics

The vulnerability is a classic format string bug (CWE-134). In the NPort W2150A-W4/W2250A-W4 web interface, the "alias" parameter on the Serial Param configuration page is processed by a function that passes user-supplied input directly to a format string function (e.g., printf, sprintf, fprintf) without sanitization.

Technical Flow:

  1. The web server receives an HTTP request to the Serial Param configuration page.
  2. The "alias" parameter value is extracted from the request.
  3. This value is passed as the format string argument to a function like printf(buffer, user_input).
  4. An attacker can inject format specifiers such as %x, %s, %n, %p to read from or write to arbitrary memory locations.
  5. By reading stack memory with %x or %p, the attacker can leak stack canaries, return addresses, and other critical pointers.
  6. This information can be used to calculate the base address of loaded libraries, defeating ASLR.

Key Weakness: The lack of input validation and the use of user input as a format string argument.

Vulnerable vs. Patched Code

Since no patch is available, we can only describe the vulnerable pattern.

Vulnerable Code (Conceptual C):

void handle_serial_param(char *alias) {
    char buffer[256];
    // VULNERABLE: alias is used directly as format string
    sprintf(buffer, alias);
    // ... send buffer to HTTP response
}

Patched Code (Conceptual C):

void handle_serial_param(char *alias) {
    char buffer[256];
    // SAFE: alias is passed as an argument, not as format string
    sprintf(buffer, "%s", alias);
    // ... send buffer to HTTP response
}

The patched version uses "%s" as the format string and passes alias as a data argument, preventing format specifier injection.

Exploitation & Lab Setup

Red Team (Offensive)

Objective: Leak memory contents to bypass ASLR.

Prerequisites:

  • Network access to the NPort device web interface (default port 80 or 443).
  • Target device running firmware version 1.5 or prior.

Exploitation Steps:

  1. Identify Target: Use Shodan or Nmap to find exposed NPort devices.

    nmap -p 80,443 --script http-title <target_ip>
    
  2. Craft Payload: Send a crafted HTTP POST request to the Serial Param configuration page with format specifiers in the "alias" parameter.

    # Leak stack data using %x
    curl -X POST http://<target_ip>/serial_param -d "alias=%x.%x.%x.%x"
    
  3. Analyze Response: The response will contain leaked memory values in hexadecimal format. Parse these to identify stack canaries, return addresses, and library base addresses.

  4. Bypass ASLR: Use the leaked addresses to calculate the base address of libc.so or other loaded libraries, enabling further exploitation (e.g., ROP chain).

Example Payload (Advanced):

# Leak specific stack offsets
curl -X POST http://<target_ip>/serial_param -d "alias=AAAA%6$p.%7$p.%8$p"

Blue Team (Defensive)

Detection:

  • Monitor HTTP requests for format specifier patterns (%x, %s, %n, %p, %d).
  • Look for unusual lengths or repeated patterns in the "alias" parameter.
  • Use network intrusion detection systems (NIDS) to flag suspicious requests.

Mitigation:

  • Immediately isolate affected devices from untrusted networks.
  • Apply vendor patches when available.
  • Implement a web application firewall (WAF) to block format string payloads.
  • Restrict access to the web interface via firewall rules or VPN.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP POST requests to /serial_param with alias parameter containing % characters.
  • Unusually long response bodies containing hexadecimal strings (e.g., 0x7fff...).
  • Repeated connection attempts from the same source IP to the web interface.

Host IOCs:

  • Unexpected memory dumps or core files on the device (if accessible).
  • Log entries showing failed authentication attempts followed by successful exploitation.

File IOCs:

  • No specific file-based IOCs due to the nature of the vulnerability.

Detection Engineering

YARA Rule

rule CVE_2026_10828_FormatString {
    meta:
        description = "Detects format string exploitation attempts against Moxa NPort devices"
        author = "Valters IT"
        date = "2026-01-01"
        reference = "CVE-2026-10828"
    strings:
        $format_specifier = /%[0-9]*[sSpPn]/
        $alias_param = "alias="
    condition:
        $alias_param and #format_specifier > 2
}

Sigma Rule

title: CVE-2026-10828 Format String Exploitation Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with format specifiers in the alias parameter targeting Moxa NPort devices
author: Valters IT
date: 2026-01-01
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: '/serial_param'
        cs-uri-query|contains: 'alias='
        cs-uri-query|re: '(%[0-9]*[sSpPn]){2,}'
    condition: selection
falsepositives:
    - Legitimate use of % in alias (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2026-10828 Format String Exploitation Attempt";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"/serial_param"; http_uri;
    content:"alias="; http_client_body;
    pcre:"/(%[0-9]*[sSpPn]){2,}/Ri";
    reference:cve,2026-10828;
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Isolate Devices: Disconnect affected NPort devices from the internet and untrusted networks. Place them behind a firewall with strict access controls.
  2. Disable Web Interface: If not required, disable the web interface on the device via the device's configuration menu.
  3. Monitor Logs: Review device logs for any signs of exploitation attempts.

Long-Term Fixes:

  1. Vendor Patch: Await an official firmware update from Moxa. Apply it as soon as it becomes available.
  2. Input Validation: Implement server-side input validation to reject any input containing % characters in the alias parameter.
  3. Code Review: Conduct a thorough code review of the web interface to identify and fix similar format string vulnerabilities.

Workarounds:

  • Use a reverse proxy or WAF to filter out format string payloads before they reach the device.
  • Restrict access to the web interface to trusted IP addresses only.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-10828/ · 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.