CVE-2024-7646
Record summary
CVE-2024-7646 has a selected CVSS score of 8.8 (high); EIP currently links 2 repository PoCs and 1 curated repository PoC.
Description
A security issue was discovered in ingress-nginx where an actor with permission to create Ingress objects (in the `networking.k8s.io` or `extensions` API group) can bypass annotation validation to inject arbitrary commands and obtain the credentials of the ingress-nginx controller. In the default configuration, that credential has access to all secrets in the cluster.
Exploitation context
Affected products and versions
1| Product | Source | Version range | Status |
|---|---|---|---|
ingress-nginxBrowse Kubernetes / ingress-nginxDefault status: affected, unknown | CVE List | 1.11.0 to < 1.11.2 | affected |
| 1.11.2 | unaffected | ||
| 1.10.4 | unaffected | ||
| Before 1.10.4 | affected | ||
| 1.11.2 | affected | ||
| 1.10.4 | affected |
Proofs of concept
3Curated repository PoCs
GitHubCVE-2025-15566Curated repository PoCby exploitintelStars: 8Exploit19 files
Analysis
Technical assessment
The artifact contains a Python script (poc/poc.py) that sends an HTTP GET request to a vulnerable nginx server's injected /pwned endpoint to trigger remote code execution via a Lua code block, executing OS commands like 'id' and 'hostname' and reading files.
Backdoor review
No backdoor observed in reviewed code
The supplied evidence consists of documentation, a lab setup guide, and two Python PoC scripts for CVE-2025-15566. The scripts demonstrate a legitimate nginx configuration injection vulnerability by sending HTTP requests to a locally running lab container and by simulating the vulnerable Go template function. No concealed executable behavior, operator-directed harm, persistence, credential theft, or unrelated payloads were observed. The scripts' actions are fully explained by the documented exploit chain and are consistent with normal PoC behavior for the stated CVE.
Classification basis and observed behavior
Classification basis
The primary artifact, poc/poc.py, is designed to send a malicious HTTP request to trigger and verify the execution of injected Lua code on a remote server, which constitutes an exploit. The script's main purpose is to exercise the vulnerability, not just detect it.
poc/poc.py:2-6poc/poc.py:127-135CVE-LAB.md:9Requirements
- A vulnerable nginx instance with a pre-rendered configuration containing an injected /pwned Lua endpoint must be running and network-accessible.
poc/poc.py:15-24CVE-LAB.md:14-17
Observed behavior
- Sends an HTTP GET request to the /pwned endpoint on the target server.
poc/poc.py:136-141 - Parses the HTTP response body for evidence of command execution, such as the output of the 'id' command (e.g., 'uid=101(www-data)').
poc/poc.py:152-166 - Reports success if evidence of remote code execution is found in the response.
poc/poc.py:230-231
Behaviors behind the backdoor verdict
Observables
- Network Connection
- Payload withheldThe PoC script poc.py connects to a locally running lab container to verify the target is alive and to trigger the documented RCE endpoint.
poc/poc.py:80 - Network Connection
- Payload withheldThe PoC script poc.py checks for the existence of an injected nginx location as evidence of the configuration injection vulnerability.
poc/poc.py:104 - Network Connection
- Payload withheldThe PoC script poc.py triggers the injected Lua RCE payload to demonstrate arbitrary command execution, which is the core of the CVE-2025-15566 exploit.
poc/poc.py:136 - Process Execution
- Payload withheldThe PoC script poc.py uses payload withheld to dynamically resolve the IP address of the vulnerable lab container on the worker network.
poc/poc.py:49-50 - Process Execution
- Payload withheldThe PoC script poc_vector2_template_injection.py retrieves Go unit test output from the lab container to provide evidence of the vulnerable function.
poc/poc_vector2_template_injection.py:178-180
What the analysis did not establish
- The evidence packet reports complete_artifact_coverage as false, indicating that not all files from the repository unit were included in the analysis. The analysis is based on the 5 selected text files provided.
- The exploit targets a lab environment with a pre-rendered vulnerable configuration, not a live, unmodified ingress-nginx controller.
- The review is limited to the 5 text files provided in the evidence packet. 14 unclassified files totaling 72,353 bytes were present in the artifact but were not analyzed as they were flagged as binary or non-text media. The analysis scope confirms complete coverage for the selected readable text, but the artifact coverage is incomplete overall.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.