CVE-2025-11730

7.2 HIGH

📋 TL;DR

This CVE describes a post-authentication command injection vulnerability in Zyxel firewall devices. An authenticated attacker with administrator privileges can execute arbitrary operating system commands by injecting malicious strings into the Dynamic DNS configuration CLI command. This affects multiple Zyxel firewall series running specific firmware versions.

💻 Affected Systems

Products:
  • Zyxel ATP series
  • USG FLEX series
  • USG FLEX 50(W) series
  • USG20(W)-VPN series
Versions: V5.35 through V5.41
Operating Systems: Zyxel ZLD firmware
Default Config Vulnerable: ⚠️ Yes
Notes: Requires administrator-level authentication to exploit. All devices running affected firmware versions are vulnerable by default if the DDNS feature is accessible.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete device compromise allowing attacker to install persistent backdoors, exfiltrate configuration data, pivot to internal networks, or render the firewall inoperable.

🟠

Likely Case

Attacker with legitimate admin credentials (compromised or malicious insider) gains full control of the firewall to intercept traffic, modify rules, or use as a foothold for lateral movement.

🟢

If Mitigated

Limited impact due to strong access controls, multi-factor authentication, and network segmentation preventing lateral movement even if device is compromised.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires valid administrator credentials. The vulnerability is in a CLI command, making exploitation straightforward once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: V5.42 or later

Vendor Advisory: https://www.zyxel.com/global/en/support/security-advisories/zyxel-security-advisory-for-post-authentication-command-injection-vulnerability-in-the-ddns-configuration-cli-command-of-zld-firewalls-02-05-2026

Restart Required: Yes

Instructions:

1. Download firmware V5.42 or later from Zyxel support portal. 2. Backup current configuration. 3. Upload new firmware via web interface or CLI. 4. Reboot device. 5. Verify firmware version after reboot.

🔧 Temporary Workarounds

Restrict CLI Access

all

Limit CLI access to trusted administrative accounts only and implement strong authentication controls.

Disable Unnecessary DDNS Features

all

If Dynamic DNS functionality is not required, disable it to remove the attack vector.

🧯 If You Can't Patch

  • Implement strict access controls and multi-factor authentication for all administrative accounts
  • Segment firewall management interfaces from general user networks and monitor for suspicious CLI activity

🔍 How to Verify

Check if Vulnerable:

Check firmware version via web interface (System > Maintenance > Firmware) or CLI command 'show version'

Check Version:

show version

Verify Fix Applied:

Confirm firmware version is V5.42 or later using same methods as checking vulnerability

📡 Detection & Monitoring

Log Indicators:

  • Unusual CLI command execution patterns
  • Multiple failed authentication attempts followed by successful login
  • DDNS configuration changes from unexpected sources

Network Indicators:

  • Unexpected outbound connections from firewall management interface
  • Anomalous traffic patterns through firewall

SIEM Query:

source="zyxel-firewall" AND (event_type="cli_command" AND command="*ddns*" AND user!="expected_admin")

🔗 References

📤 Share & Export