db
MySQL 8.0 database service for WordPress. It stores WordPress data and the YOP Poll tables. Credentials are set via environment variables.
lab/docker-compose.yml:4-14YOP Poll < 7.0.6 - Unauthenticated Vote Restriction Bypass via IP Header Spoofing
CVE-2026-14840 has a selected CVSS score of 5.3 (medium); EIP currently links 1 repository PoC and 1 lab environment.
The YOP Poll WordPress plugin before 7.0.6 does not validate the connection's origin IP address and instead trusts client-controlled forwarding headers when enforcing its per-IP vote restriction, allowing unauthenticated attackers to bypass the vote limit and cast unlimited votes on a public poll.
| Product | Source | Version range | Status |
|---|---|---|---|
YOP PollDefault status: unaffected | CVE List | 7.0.0 to < 7.0.6 | affected |
The artifact is a Python script that exploits CVE-2026-14840 by sending multiple votes with spoofed X-Forwarded-For IPs to bypass per-IP vote restrictions in the YOP Poll WordPress plugin.
No backdoor observed in reviewed code
The PoC script cve_2026_14840_poc.py performs exactly the disclosed exploit: it sends POST requests to a target WordPress site's YOP Poll REST API endpoint with a spoofed X-Forwarded-For header to bypass per-IP vote limits. No hidden, deceptive, or unrelated harmful behavior is present. The script's actions are limited to the operator-specified target, and all network communication is directly tied to the vote-casting functionality.
The script actively sends crafted requests to cast multiple votes, which is the exploitation of the vulnerability, not just detection. It is described as a 'PoC' and its main purpose is to demonstrate the bypass by successfully casting votes.
cve_2026_14840_poc.py:1-15cve_2026_14840_poc.py:143-145README.md:8-12cve_2026_14840_poc.py:38cve_2026_14840_poc.py:35-67cve_2026_14840_poc.py:70-111cve_2026_14840_poc.py:165-167cve_2026_14840_poc.py:92-95cve_2026_14840_poc.py:89requirements.txt:1-2This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.
A Docker Compose environment for a WordPress site with a vulnerable YOP Poll plugin, designed to demonstrate CVE-2026-14840, a vote-limit bypass. It includes a MySQL database, a WordPress web server, and a WP-CLI container for setup.
lab/docker-compose.yml:1-52README.md:1-126The README explicitly states the environment is for demonstrating CVE-2026-14840, a vote-limit bypass in the YOP Poll plugin. The Compose file sets up a WordPress instance with the vulnerable plugin mounted, and setup.php creates a poll for testing.
README.md:1-3README.md:5-12lab/docker-compose.yml:1-52MySQL 8.0 database service for WordPress. It stores WordPress data and the YOP Poll tables. Credentials are set via environment variables.
lab/docker-compose.yml:4-14WordPress 6.8 with Apache, serving the site on host port 127.0.0.1:8090. The YOP Poll plugin is bind-mounted from ./yop-poll, making it the target for the vote-limit bypass exploit.
lab/docker-compose.yml:16-30README.md:5-12WordPress CLI container that sleeps indefinitely. It is used to run setup.php via docker exec, which creates a poll and a public test page. It shares the WordPress volume and plugin mount.
lab/docker-compose.yml:32-46README.md:72-74Supported by supplied evidence
The README describes the vulnerability as a vote-limit bypass in YOP Poll < 7.0.6 due to trusting attacker-controlled headers. The lab mounts the vulnerable plugin and setup.php creates a poll configured to allow guest voting with IP-based blocking, which matches the described attack vector.
README.md:5-12lab/setup.php:14-20lab/docker-compose.yml:26-27README.md:56-62README.md:66-68README.md:70README.md:72-74README.md:40-42requirements.txt:1-2README.md:56-62README.md:66-68README.md:70README.md:72-74README.md:78-80All visible behavior is directed at the lab's own WordPress target. The setup script creates a poll and page within the lab. The PoC script (not included in the packet) is described as casting votes against the local lab. There are no bind mounts of host directories, no privileged mode, no host network, and no evidence of host compromise, persistence, or external communication beyond the documented exercise.
lab/docker-compose.yml:1-52lab/setup.php:1-104README.md:1-126This 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.