/

CVE-2026-113391

Severity:

CRITICAL RISK

(9.9)

OS Command Injection (CWE-77) in Vigor2960 Upload Endpoint

CVE-2026-113391

Deferred

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-74, CWE-77

Impact:

Remote Code Execution

Severity:

CRITICAL RISK

(9.9)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A critical command injection vulnerability in the DrayTek Vigor2960 Upload Endpoint allows crafted input submitted to the uploadlangs function to influence operating-system command execution. Because the endpoint is remotely reachable, an attacker who can access it may execute commands with the privileges of the affected web service.

A critical command injection vulnerability in the DrayTek Vigor2960 Upload Endpoint allows crafted input submitted to the uploadlangs function to influence operating-system command execution. Because the endpoint is remotely reachable, an attacker who can access it may execute commands with the privileges of the affected web service.

Affected context

The vulnerability affects Vigor2960 devices running the identified legacy firmware and involves the uploadlangs function in /cgi-bin/mainfunction.cgi. Risk is greatest when the upload endpoint is network-accessible and fails to isolate uploaded or otherwise user-controlled values from operating-system command construction. The product is no longer generally supported, which may limit the availability of future security fixes.

The vulnerability affects Vigor2960 devices running the identified legacy firmware and involves the uploadlangs function in /cgi-bin/mainfunction.cgi. Risk is greatest when the upload endpoint is network-accessible and fails to isolate uploaded or otherwise user-controlled values from operating-system command construction. The product is no longer generally supported, which may limit the availability of future security fixes.

Exploit preconditions

  • Attack surface: The remotely accessible Upload Endpoint exposed through the device's web interface
  • Required access: Network reachability to the endpoint; authentication requirements may depend on the device's configuration and deployment
  • Trigger point: Processing of attacker-influenced input by the uploadlangs function
  • Why exploitation is possible: Untrusted values can reach command-processing logic without sufficient separation from operating-system command syntax
  • Attack surface: The remotely accessible Upload Endpoint exposed through the device's web interface
  • Required access: Network reachability to the endpoint; authentication requirements may depend on the device's configuration and deployment
  • Trigger point: Processing of attacker-influenced input by the uploadlangs function
  • Why exploitation is possible: Untrusted values can reach command-processing logic without sufficient separation from operating-system command syntax

Why this happens

The underlying bug is command injection, where externally controlled input is incorporated into an operating-system command or command-like operation without reliable separation, validation, or safe argument handling. This maps primarily to CWE-77: Improper Neutralization of Special Elements used in a Command, with CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component describing the broader injection pattern. The insecure design treats data from an upload-related request as trusted command input.

The underlying bug is command injection, where externally controlled input is incorporated into an operating-system command or command-like operation without reliable separation, validation, or safe argument handling. This maps primarily to CWE-77: Improper Neutralization of Special Elements used in a Command, with CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component describing the broader injection pattern. The insecure design treats data from an upload-related request as trusted command input.

Potential impact

  • An attacker may execute arbitrary commands on the affected device
  • The device may be compromised or reconfigured
  • Network traffic may be monitored, redirected, or disrupted
  • Stored credentials, configuration data, or other sensitive information could be exposed
  • The compromised device could be used for lateral movement or additional attacks
  • An attacker may execute arbitrary commands on the affected device
  • The device may be compromised or reconfigured
  • Network traffic may be monitored, redirected, or disrupted
  • Stored credentials, configuration data, or other sensitive information could be exposed
  • The compromised device could be used for lateral movement or additional attacks

General mitigation guidance

Mitigation generally focuses on removing shell interpretation from upload processing and reducing trust in request-controlled values.

Common defensive patterns include:

  • Prefer direct process APIs with fixed executables and structured argument arrays over shell command construction
  • Apply strict allowlists for filenames, language identifiers, and other accepted upload metadata
  • Enforce type, length, encoding, and format validation before processing
  • Keep uploaded content in isolated, non-executable locations and avoid deriving commands from its contents
  • Run the web service with the minimum filesystem, process, and network privileges required
  • Restrict management interfaces and upload endpoints to trusted administrative networks where feasible
  • Replace unsupported components with maintained software that receives security updates

Mitigation generally focuses on removing shell interpretation from upload processing and reducing trust in request-controlled values.

Common defensive patterns include:

  • Prefer direct process APIs with fixed executables and structured argument arrays over shell command construction
  • Apply strict allowlists for filenames, language identifiers, and other accepted upload metadata
  • Enforce type, length, encoding, and format validation before processing
  • Keep uploaded content in isolated, non-executable locations and avoid deriving commands from its contents
  • Run the web service with the minimum filesystem, process, and network privileges required
  • Restrict management interfaces and upload endpoints to trusted administrative networks where feasible
  • Replace unsupported components with maintained software that receives security updates

How teams detect issues like this

Detection can combine source analysis, runtime monitoring, and deployment policy controls:

  • Use static analysis rules to identify shell invocation, command concatenation, interpolation, or execution APIs receiving request or upload data
  • Review code paths from CGI parameters and file metadata into process-spawning or system-command functions
  • Monitor web and device logs for unusual requests to the upload endpoint, repeated failures, unexpected language or filename values, and command-process activity
  • Apply policies that prohibit shell execution for untrusted input and require approved argument-handling APIs
  • Use automated code review and software composition analysis tools to flag command-injection patterns and unsupported network appliances

Detection can combine source analysis, runtime monitoring, and deployment policy controls:

  • Use static analysis rules to identify shell invocation, command concatenation, interpolation, or execution APIs receiving request or upload data
  • Review code paths from CGI parameters and file metadata into process-spawning or system-command functions
  • Monitor web and device logs for unusual requests to the upload endpoint, repeated failures, unexpected language or filename values, and command-process activity
  • Apply policies that prohibit shell execution for untrusted input and require approved argument-handling APIs
  • Use automated code review and software composition analysis tools to flag command-injection patterns and unsupported network appliances

Sources

SourceLink
fw.draytek.com.twfw.draytek.com.tw/Vigor2960/Firmware/v1.5.1.7/Vigor2960_v1.5.1.7.zip
github.comgithub.com/yikesoftware/DrayTek_Vigor2960_Security_Analysis/tree/main/cases/DRV2960-0008-authenticated-upload-filename-command-injection
vuldb.comvuldb.com/cve/CVE-2026-113391
vuldb.comvuldb.com/submit/992244
vuldb.comvuldb.com/vuln/422667
vuldb.comvuldb.com/vuln/422667/cti

Frequently asked

questions

Yes. The vulnerable functionality is exposed through a remotely reachable CGI upload endpoint, although practical exploitability depends on network exposure and any access controls configured on the device.

The available information does not establish a universal authentication requirement. The key conditions are access to the endpoint and the ability to provide attacker-controlled input; authentication and network restrictions may change the scope.

Eliminate shell-based command construction, use fixed operations with structured arguments, validate upload-related values against strict allowlists, and run the service with least privilege.

Treat all request and upload metadata as untrusted, enforce secure coding rules for process execution, restrict management interfaces, monitor command execution, and use maintained components with an active security-support process.

Yes. The vulnerable functionality is exposed through a remotely reachable CGI upload endpoint, although practical exploitability depends on network exposure and any access controls configured on the device.

The available information does not establish a universal authentication requirement. The key conditions are access to the endpoint and the ability to provide attacker-controlled input; authentication and network restrictions may change the scope.

Eliminate shell-based command construction, use fixed operations with structured arguments, validate upload-related values against strict allowlists, and run the service with least privilege.

Treat all request and upload metadata as untrusted, enforce secure coding rules for process execution, restrict management interfaces, monitor command execution, and use maintained components with an active security-support process.

Find out what's already
exploitable in your codebase.