CVE-2023-32692 is an arbitrary code execution vulnerability in the CodeIgniter 4 PHP framework. The issue resides in the Validation library when Validation Placeholders are used. Because controller validation methods and in-model validation rely on the same Validation library internally, those code paths are also affected. A successful attacker can trigger execution of arbitrary code through crafted input processed by vulnerable validation logic. The issue was fixed in CodeIgniter version 4.3.5.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
This repository is a runnable proof-of-concept environment for CVE-2023-32692, a CodeIgniter 4 validation rule injection vulnerability affecting versions 4.0.0 through 4.3.4. It is not a scanner or detection-only project; it is a deliberately vulnerable demo application built from the CodeIgniter app starter and pinned to codeigniter4/framework 4.3.4 in composer.json. The core exploit logic is in app/Controllers/Poc.php. The vulnerable method, Poc::update(), defines validation rules as a single string: 'required|is_unique[users.email,id,{id}]'. User-controlled POST data is then supplied for id and email. Because the rule string contains a placeholder and is string-based, attacker input in id can break out of the intended rule context and inject additional validation rules. The repository includes a benign baseline request, a rule-injection example, and a command-execution example. The command-execution PoC uses id=1]|system|[ and email=touch+/tmp/pwn, demonstrating that injected validation can reach PHP's system() and execute an OS command. Repository structure is mostly standard CodeIgniter boilerplate: app/Config contains framework configuration, public/index.php is the web entry point, spark is the CLI entry point, and tests/ contains starter tests. The exploit-relevant files are app/Controllers/Poc.php, app/Config/Routes.php, README.md, and the three files under http_requests/. Routes expose POST /poc/update and GET /poc/form; README also mentions a safe variant updateSafe(), but that route is not registered in app/Config/Routes.php. A migration creates a users table required by the is_unique rule. The env file configures SQLite3 with database.db, making the demo easy to run locally. Operationally, the exploit is web-based and targets the local demo service at localhost:8080. The devcontainer and README show how to launch the app and send crafted HTTP requests. The payload is basic and hardcoded rather than highly customizable, so OPERATIONAL is the best maturity fit.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
2 sources tracked across advisories and community write-ups. News coverage will land here when it surfaces.
No news coverage yet. Advisories and community discussion only.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.