A Docker Compose environment that builds and runs a vulnerable BIND 9.20.8 DNS server, a mock secrets manager, and a mock API service to demonstrate a DNS DoS attack chain leading to NHI secret exposure and zero-trust bypass.
docker-compose.yml:1-57README.md:1-123
Lab assessment
Vulnerability lab
The README explicitly states the objective is to demonstrate exploitation of CVE-2025-40775 to crash DNS, disrupt NHI rotation, and bypass zero-trust. The Dockerfile builds the vulnerable BIND version from source, and the Compose file orchestrates the target and supporting mock services.
Builds BIND 9.20.8 from source, runs named with a minimal configuration, and exposes DNS on host port 53530. The Dockerfile downloads the official tarball, compiles with specific options, and copies in named.conf and named.ca.
A Flask app that simulates secret rotation and fallback. It checks DNS resolution via the MOCK_DNS_SERVER environment variable and returns a static fallback NHI when DNS is down and rotation fails.
A Flask app that accepts a static API key or a JWT for authentication. It grants access to sensitive data when the correct static key is provided, simulating a zero-trust bypass.
The README describes the vulnerability as a DoS in BIND 9.20.0–9.20.8 triggered by a malformed TSIG algorithm field. The Dockerfile builds BIND 9.20.8 from the official tarball, and the exploit script dns_exploit.py crafts a packet with an invalid TSIG algorithm name targeting this version.
Requirements and sequence described by the evidence
Prerequisites
Docker and Docker Compose must be installed to build and run the environment.README.md:79-81
The BIND container must be running and reachable on host port 53530 for the DNS exploit.dns_exploit.py:5-7
The exploit script dns_exploit.py requires root/administrator privileges to send raw packets.dns_exploit.py:72-76
Evidence-described exercise path
Build and start the Docker Compose environment.README.md:79-81
Run dns_exploit.py to send a malformed TSIG DNS packet to the BIND server, causing a crash.README.md:83-85dns_exploit.py:1-82
Run client_nhi_rotation.py to simulate NHI rotation failure due to DNS outage, leading to fallback on a static credential.README.md:87-89client_nhi_rotation.py:1-58
Run bypass_demo.py to use the static credential to access the protected API, demonstrating zero-trust bypass.README.md:91-93bypass_demo.py:1-12
Safety-review evidence
Behaviors behind the stored safety assessment
No harmful behavior observed
All visible behavior targets the lab's own containers. The DNS exploit is directed at the vulnerable BIND service within the Docker network. The mock services simulate secret rotation and API access. No evidence of host escape, external connections, persistence, credential theft outside the lab, or destructive behavior beyond the intended DoS demonstration.
The packet does not include the actual named.conf or named.ca files used at build time; only the copies in docker/bind-vulnerable-build/config/ are present.
The main.py script references hardcoded IP addresses (172.18.0.x) that may not match the actual Docker network, and its tcpdump command requires sudo and may not function in all environments.
The exploit script dns_exploit.py uses a placeholder algorithm name and may not reliably trigger the CVE without further tuning.
No runtime logs or crash confirmation are included in the evidence packet.
Model interpretation
This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.