/

CVE-2026-111214

Severity:

HIGH RISK

(7.2)

OS Command Injection (CWE-78) in pfSense QinQ Editor

CVE-2026-111214

Analyzed

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Root-level command execution

Severity:

HIGH RISK

(7.2)

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

Netgate pfSense CE contains an OS command injection vulnerability in QinQ interface handling. An authenticated user with QinQ edit privilege may cause attacker-controlled interface data to be inserted into shell commands, which can result in command execution with root privileges.

Netgate pfSense CE contains an OS command injection vulnerability in QinQ interface handling. An authenticated user with QinQ edit privilege may cause attacker-controlled interface data to be inserted into shell commands, which can result in command execution with root privileges.

Affected context

The vulnerability occurs in pfSense CE deployments where an authenticated user has permission to edit QinQ configuration entries. Risk arises when a stored parent interface name is accepted without adequate validation and is later interpolated into ifconfig-related shell commands. The affected versions are reported as pfSense CE 2.7.0 through 2.9.0.

The vulnerability occurs in pfSense CE deployments where an authenticated user has permission to edit QinQ configuration entries. Risk arises when a stored parent interface name is accepted without adequate validation and is later interpolated into ifconfig-related shell commands. The affected versions are reported as pfSense CE 2.7.0 through 2.9.0.

Exploit preconditions

  • Attack surface: QinQ configuration management and interface command generation
  • Required access: An authenticated account with QinQ edit privilege
  • Trigger point: Processing or editing a QinQ entry that uses the stored parent interface value
  • Why exploitation is possible: The parent interface name is not sufficiently validated before being incorporated into a shell command executed with elevated privileges
  • Attack surface: QinQ configuration management and interface command generation
  • Required access: An authenticated account with QinQ edit privilege
  • Trigger point: Processing or editing a QinQ entry that uses the stored parent interface value
  • Why exploitation is possible: The parent interface name is not sufficiently validated before being incorporated into a shell command executed with elevated privileges

Why this happens

The underlying bug is an OS command injection flaw mapped to CWE-78. A value treated as an interface identifier is accepted from a privileged configuration workflow and later combined with shell command text without enforcing a strict allowed-value policy or using a command execution interface that separates arguments from shell syntax. As a result, data intended to represent a network interface can influence command interpretation.

The underlying bug is an OS command injection flaw mapped to CWE-78. A value treated as an interface identifier is accepted from a privileged configuration workflow and later combined with shell command text without enforcing a strict allowed-value policy or using a command execution interface that separates arguments from shell syntax. As a result, data intended to represent a network interface can influence command interpretation.

Potential impact

  • An attacker may execute arbitrary operating-system commands.
  • Commands could run with root-level privileges.
  • The firewall configuration and network traffic controls could be altered.
  • Sensitive system or network information could be accessed.
  • The host could be used for persistence, lateral movement, or service disruption.
  • An attacker may execute arbitrary operating-system commands.
  • Commands could run with root-level privileges.
  • The firewall configuration and network traffic controls could be altered.
  • Sensitive system or network information could be accessed.
  • The host could be used for persistence, lateral movement, or service disruption.

General mitigation guidance

Mitigation generally focuses on eliminating shell interpretation of

user-controlled configuration values.

Common defensive patterns include:

  • Use direct process execution APIs that pass arguments separately rather than invoking a shell.
  • Apply strict allowlisting for interface names and reject values outside the expected system-defined format.
  • Validate and canonicalize values at both configuration-write and command-execution boundaries.
  • Preserve least-privilege separation so network configuration operations do not expose unnecessary root capabilities.
  • Restrict QinQ administration to trusted roles and reduce the number of accounts able to modify these settings.
  • Treat stored configuration as untrusted until it has passed contextual validation.

Mitigation generally focuses on eliminating shell interpretation of

user-controlled configuration values.

Common defensive patterns include:

  • Use direct process execution APIs that pass arguments separately rather than invoking a shell.
  • Apply strict allowlisting for interface names and reject values outside the expected system-defined format.
  • Validate and canonicalize values at both configuration-write and command-execution boundaries.
  • Preserve least-privilege separation so network configuration operations do not expose unnecessary root capabilities.
  • Restrict QinQ administration to trusted roles and reduce the number of accounts able to modify these settings.
  • Treat stored configuration as untrusted until it has passed contextual validation.

How teams detect issues like this

Detection approaches may include:

  • Static analysis rules for shell command construction involving configuration or request-derived values.
  • Code review checks for string concatenation, interpolation, or formatting passed to shell execution APIs.
  • Searches for network interface fields that are stored without allowlist validation and later reused in command builders.
  • Runtime monitoring for unexpected ifconfig or related network utility invocations by management services.
  • Policy enforcement requiring argument-separated process execution and validation of privileged command inputs.
  • Automated security scanning and pull-request review tools that identify command injection patterns.

Detection approaches may include:

  • Static analysis rules for shell command construction involving configuration or request-derived values.
  • Code review checks for string concatenation, interpolation, or formatting passed to shell execution APIs.
  • Searches for network interface fields that are stored without allowlist validation and later reused in command builders.
  • Runtime monitoring for unexpected ifconfig or related network utility invocations by management services.
  • Policy enforcement requiring argument-separated process execution and validation of privileged command inputs.
  • Automated security scanning and pull-request review tools that identify command injection patterns.

Sources

SourceLink
abraxaslabs.techabraxaslabs.tech/research/pfsense-ce-leftovers
abraxaslabs.techabraxaslabs.tech/research/pfsense-qinq-parent-if
github.comgithub.com/abraxas/pfsense-qinq-parent-if
github.comgithub.com/pfsense/pfsense/blob/9363ac5b8651a1c7a333180425ce7719070f95f9/src/etc/inc/interfaces.inc#L620
github.comgithub.com/pfsense/pfsense/blob/9363ac5b8651a1c7a333180425ce7719070f95f9/src/usr/local/www/interfaces_qinq_edit.php#L136
github.comgithub.com/pfsense/pfsense/blob/9363ac5b8651a1c7a333180425ce7719070f95f9/src/usr/local/www/interfaces_qinq_edit.php#L212
vulncheck.comvulncheck.com/advisories/netgate-pfsense-ce-2.7.0-through-2.9.0-os-command-injection-via-interfaces-qinq-edit-php

Frequently asked

questions

It may be exploitable through the pfSense management interface when that

interface is reachable and the attacker has the required authenticated QinQ

edit privilege. It is not an unauthenticated network attack based on the

described conditions.

The attacker needs a valid account with permission to edit QinQ configuration.

The risk also depends on whether the management interface is exposed to an

untrusted network.

Avoid passing attacker-influenced values through a shell. Use direct,

argument-separated execution together with strict allowlisting and contextual

validation for interface identifiers.

Apply least privilege to network administration, treat stored configuration as

untrusted input, review privileged command construction, and enforce static

analysis and runtime monitoring for shell-based command execution.

It may be exploitable through the pfSense management interface when that

interface is reachable and the attacker has the required authenticated QinQ

edit privilege. It is not an unauthenticated network attack based on the

described conditions.

The attacker needs a valid account with permission to edit QinQ configuration.

The risk also depends on whether the management interface is exposed to an

untrusted network.

Avoid passing attacker-influenced values through a shell. Use direct,

argument-separated execution together with strict allowlisting and contextual

validation for interface identifiers.

Apply least privilege to network administration, treat stored configuration as

untrusted input, review privileged command construction, and enforce static

analysis and runtime monitoring for shell-based command execution.

Find out what's already
exploitable in your codebase.