Skip to content

CVE-2026-32833: Verified Reproduction

CVE-2026-32833: Cudy LT300 3.0 OS command injection

CVE-2026-32833 is verified against Cudy LT300 V3 firmware · firmware. Affected versions: All firmware versions prior to 2.5.12 (confirmed vulnerable: 2.4.1, 2.4.5). Fixed in 2.5.12 (released 20-May-2026). Vulnerability class: Command Injection. This high reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00258.

REPRO-2026-00258 Cudy LT300 V3 firmware · firmware Command Injection Jul 6, 2026 CVE entry .txt
Severity
HIGH
CVSS
8.8
Confidence
HIGH
Reproduced in
93m 59s
Tool calls
425
Spend
$24.00
01 · Overview

What Is CVE-2026-32833?

CVE-2026-32833 is a high-severity OS command injection vulnerability in the Cudy LT300 3.0 router's LuCI web administration interface. Pruva reproduced it (reproduction REPRO-2026-00258).

02 · Severity & CVSS

CVE-2026-32833 Severity & CVSS Score

CVE-2026-32833 is rated high severity, with a CVSS base score of 8.8 out of 10.

HIGH threat level
8.8 / 10 CVSS base
03 · Affected Versions

Affected Cudy LT300 V3 firmware Versions

Cudy LT300 V3 firmware · firmware versions All firmware versions prior to 2.5.12 (confirmed vulnerable: 2.4.1, 2.4.5) are affected.

How to Reproduce CVE-2026-32833

$ pruva-verify REPRO-2026-00258
or curl -O https://www.pruva.dev/api/v1/reproductions/REPRO-2026-00258/artifacts/bundle/repro/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh
Run in a VM or disposable container. This exploits a real vulnerability.
06 · Proof of Reproduction

Proof of Reproduction for CVE-2026-32833

Remote code execution — reproduced
  • reached the target end-to-end
  • full exploit chain demonstrated
  • on the real production code path
  • high confidence
  • the upstream fix blocks the same trigger
Trigger

HTTP form field cbid.system.ntp.current submitted to /cgi-bin/luci/admin/system/systime

Attack chain
  1. uhttpd
  2. /www/cgi-bin/luci
  3. luci.dispatcher/CBI
  4. model/cbi/system/systime.lua
  5. date -s '%s' fork_exec
How the agent worked 969 events · 425 tool calls · 1h 34m
1h 34mDuration
425Tool calls
181Reasoning steps
969Events
27Dead-ends
Agent activity over 1h 34m
Support
17
Hypothesis
2
Repro
711
Judge
54
Variant
180
0:0093:59

Root Cause and Exploit Chain for CVE-2026-32833

Versions: firmware before 2.5.12; reproduced against LT300V3-R100-2.4.5-20250519-131314.Fixed: /control version: LT300V3-R100-2.5.12-20260518-234632.
  • Affected versions: firmware before 2.5.12; reproduced against LT300V3-R100-2.4.5-20250519-131314.
  • Fixed/control version: LT300V3-R100-2.5.12-20260518-234632.
  • Risk level and consequences: high. An attacker with access to the administrative interface/session can execute shell commands in the router firmware context by submitting crafted time-setting form data. On a physical router this can lead to device compromise, persistence, traffic interception, or pivoting from the router.

Impact Parity

  • Disclosed/claimed maximum impact: code execution / OS command injection via a router administrative interface API endpoint.
  • Reproduced impact from this run: code execution. The reproduction created attacker-chosen proof files with controlled contents by sending HTTP POST requests to the original firmware /cgi-bin/luci/admin/system/systime endpoint through the firmware uhttpd server and original /www/cgi-bin/luci LuCI dispatcher/CBI path.
  • Parity: full.
  • Not demonstrated: no post-exploitation persistence or interactive shell was attempted; the proof stops after deterministic command execution side effects.

Root Cause

The root cause is unsafe construction of a shell command from HTTP form input in the LuCI system time handler. In the vulnerable 2.4.5 firmware, the system time page includes bytecode string markers showing the affected flow: timeclock, date -s '%s', and fork_exec. When the CBI form is submitted with the manual time-setting option, the user-supplied cbid.system.ntp.current/time value is used in a date -s '<user value>' command. Because the value is surrounded by single quotes but not sanitized before shell execution, an attacker can close the quote and append a shell command, e.g. 2025-01-01 12:00:00'; echo MARKER > /tmp/proof; #.

The fixed 2.5.12 firmware preserves the same endpoint and command structure but adds a gsub sanitization marker in the same systime.lua handler before fork_exec. The fixed negative-control runs reached the same product endpoint and form handler but did not create the attacker-controlled proof files.

No public fix commit was provided in the ticket. The reproduction compares vendor firmware images directly: vulnerable LT300V3-R100-2.4.5-20250519-131314 versus fixed LT300V3-R100-2.5.12-20260518-234632.

Reproduction Steps

  1. Use bundle/repro/reproduction_steps.sh.
  2. The script:
    • Downloads or reuses the vendor LT300 V3 2.4.5 and 2.5.12 firmware zip files.
    • Extracts their SquashFS root filesystems.
    • Runs the firmware usr/sbin/uhttpd under qemu-mipsel and proot.
    • Uses the original firmware /www/cgi-bin/luci, luci.dispatcher, luci.cbi, and usr/lib/lua/luci/model/cbi/system/systime.lua path for the endpoint.
    • Adds only emulation shims for router-only services/hardware state (ubus session, bdinfo, and route-forbidden state) so the firmware web interface can run outside physical hardware; it does not replace the vulnerable endpoint handler.
    • Sends two vulnerable HTTP POST attempts to /cgi-bin/luci/admin/system/systime with payloads in cbid.system.ntp.current.
    • Sends two equivalent fixed-version negative-control attempts through the same endpoint.
  3. Expected evidence:
    • Vulnerable attempts create proof files containing VULN_ATTEMPT_1_COMMAND_EXECUTED and VULN_ATTEMPT_2_COMMAND_EXECUTED.
    • Fixed attempts do not create proof files.
    • GET requests for both versions render the original System Time CBI form and include cbid.system.ntp.current, proving endpoint reachability.

Evidence

Primary runtime evidence:

  • bundle/logs/reproduction_steps.log records successful runs.
  • bundle/repro/runtime_manifest.json records the runtime endpoint path, service_started=true, healthcheck_passed=true, and target_path_reached=true.
  • bundle/logs/artifacts/product/proof_summary.txt contains:
    • vuln attempt 1 proof: VULN_ATTEMPT_1_COMMAND_EXECUTED
    • vuln attempt 2 proof: VULN_ATTEMPT_2_COMMAND_EXECUTED
    • fixed attempt 1 no proof file (negative control passed)
    • fixed attempt 2 no proof file (negative control passed)
  • bundle/logs/artifacts/http/vuln_attempt1_request.txt and bundle/logs/artifacts/http/vuln_attempt2_request.txt contain the malicious POST fields sent to /cgi-bin/luci/admin/system/systime.
  • bundle/logs/artifacts/http/vuln_attempt1_response_headers.txt shows HTTP/1.1 200 OK and X-CBI-State: 1 for a submitted form.
  • bundle/logs/artifacts/http/fixed_attempt1_response_headers.txt shows the fixed endpoint was reached but did not accept the injected payload as a successful proof-producing command.
  • bundle/logs/code_comparison.txt and bundle/logs/artifacts/product/code_identity.txt capture firmware code identity and string-level handler differences. The vulnerable handler shows timeclock, date -s '%s', and fork_exec; the fixed handler additionally shows gsub.

Environment details:

  • Firmware rootfs execution used qemu-mipsel and proot in user-mode emulation.
  • The production-facing server was the firmware uhttpd binary serving the original firmware web root.
  • The entrypoint was the HTTP endpoint /cgi-bin/luci/admin/system/systime.

Recommendations / Next Steps

  • Upgrade Cudy LT300 3.0 devices to firmware 2.5.12 or newer.
  • Do not build shell commands by concatenating or formatting raw HTTP form values. Use argument-vector APIs where possible, or strictly validate time values against a narrow date/time grammar before invoking any command.
  • If shell invocation is unavoidable, reject metacharacters such as quotes, semicolons, backticks, pipes, ampersands, redirection operators, $(), and newlines, and add regression tests for command-injection payloads.
  • Add endpoint-level tests for /cgi-bin/luci/admin/system/systime verifying that invalid time values fail closed and cannot create shell side effects.

Additional Notes

  • Idempotency confirmation: bundle/repro/reproduction_steps.sh was run successfully multiple times consecutively after fixing non-root SquashFS extraction handling. Each run recreated fresh proof artifacts and revalidated both vulnerable and fixed firmware behavior.
  • The run uses emulation shims for hardware/session dependencies that are normally present on a physical router. The vulnerability proof itself is not a reimplemented handler: the HTTP request traverses firmware uhttpd, original /www/cgi-bin/luci, LuCI dispatcher/CBI, and the original firmware systime.lua bytecode handler.
  • The fixed-version negative control uses the actual fixed firmware handler rather than a hand-written surrogate.

CVE-2026-32833 Reproduction Transcript

The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired.

Full session Replay every step — scrub the timeline or play it back.

Event 1/40
0:000:56
0:00
session startedaccounts/fireworks/routers/glm-5p2-fast · CVE-2026-32833 · REPRO-20
0:02
0:03
web search
0:05
web search
0:07
0:08
0:12
0:13
web search
0:14
web search
0:23
0:23
extract_facts
no facts extracted
0:24
0:24
0:24
supportrepro
0:34
0:36
0:36
0:36
0:36
0:37
0:37
0:37
0:37
0:40
0:40
0:40
0:41
web search
0:44
0:56
0:56
08 · How to Fix

How to Fix CVE-2026-32833

Upgrade Cudy LT300 V3 firmware · firmware to 2.5.12 (released 20-May-2026) or later.

Coming soon

Step-by-step mitigation and hardening guidance for CVE-2026-32833 — configuration checks, workarounds where no patch exists, and how to verify you're protected — is on the way.

10 · FAQ

FAQ: CVE-2026-32833

How does the CVE-2026-32833 command injection work?

An attacker with access to the router's administrative session submits crafted form data to the system-time endpoint containing a quote and a command separator inside the cbid.system.ntp.current parameter, breaking out of the date -s '...' shell invocation and executing arbitrary commands in the router firmware context.

Which Cudy LT300 firmware versions are affected by CVE-2026-32833, and where is it fixed?

All firmware versions prior to 2.5.12 are affected (confirmed vulnerable: 2.4.1 and 2.4.5, reproduced against build LT300V3-R100-2.4.5-20250519-131314); it is fixed in 2.5.12, released 20-May-2026 (LT300V3-R100-2.5.12-20260518-234632).

How severe is CVE-2026-32833?

It is rated high severity: an authenticated attacker with access to the administrative interface can execute arbitrary shell commands in the router firmware, potentially leading to device compromise, persistence, or traffic interception.

How can I reproduce CVE-2026-32833?

Download the verified script from this page and run it in an isolated environment against Cudy LT300 3.0 firmware 2.4.5. It submits a crafted system-time form request to /cgi-bin/luci/admin/system/systime with shell metacharacters in the NTP value and confirms command execution, then confirms firmware 2.5.12 rejects the payload.
11 · References

References for CVE-2026-32833

Authoritative sources for CVE-2026-32833 — official vulnerability databases and the upstream advisory. Pruva's reproduction verifies the issue firsthand; these are the primary records to corroborate it.