Terraform WinDNS Provider, Command Injection, CVE-2025-XXXX (Low)

The vulnerability (CVE-2025-XXXX) in the Terraform WinDNS Provider arises due to improper input sanitization in the `windns_record` resource. When users supply untrusted input for DNS record configurations, the provider fails to validate or escape special characters before passing them to PowerShell commands. Attackers with write access to Terraform configurations can inject arbitrary commands via crafted DNS record names or values, leading to command execution on the host managing the WinDNS provider.
The exploit occurs when Terraform applies the configuration, executing PowerShell commands to modify DNS records. Malicious inputs containing characters like ;, |, or backticks () can break out of the intended command structure and execute additional payloads. Since the provider runs with the same privileges as the Terraform process, this could lead to system compromise if Terraform operates with elevated permissions.
<h2 style="color: blue;">DailyCVE Form:</h2>
Platform: Terraform WinDNS
Version: <=1.0.4
Vulnerability: Command Injection
Severity: Low
Date: 2025-05-06
<h2 style="color: blue;">What Undercode Say:</h2>
<h2 style="color: blue;">Exploit:</h2>

Malicious Terraform configuration example
resource "windns_record" "injection" {
zone = "example.com"
name = "malicious$(calc.exe)"
record = "A"
target = ["192.168.1.1"]
}
Apply the config (triggers exploit)
terraform apply

<h2 style="color: blue;">Detection:</h2>

Check WinDNS Provider version
Get-Command -Module TerraformWinDNS | Select-Object Version
Audit Terraform logs for suspicious commands
Get-Content .terraform/logs/ | Select-String "powershell.[;|&]"

<h2 style="color: blue;">Mitigation:</h2>

Use input validation in custom policies (e.g., OPA)
rule "sanitize_windns_input" {
input = input.windns_record..name
regex = "^[a-zA-Z0-9.-]+$"
}

<h2 style="color: blue;">Patch:</h2>

Upgrade command
terraform init -upgrade -backend=false -lock=false
Verify fixed version (>=1.0.5)
terraform providers schema -json | jq '.provider_schemas."registry.terraform.io/nrkno/windns".version'

<h2 style="color: blue;">Workaround:</h2>

Restrict PowerShell execution policy
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Restricted
Network segmentation for Terraform runner
New-NetFirewallRule -DisplayName "Block_TF-WinDNS_Outbound"</code>
-Direction Outbound -Program "terraform.exe" -Action Block

Forensics:

Extract executed commands from Windows Event Log
Get-WinEvent -LogName "Windows PowerShell" |
Where-Object { $_.Message -like "terraform-provider-windns" }

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image

Scroll to Top