Lawnchair is a free, open-source home app for Android. Prior to commit fcba413f55dd47f8a3921445252849126c6266b2, command injection in release_update.yml workflow dispatch input allows arbitrary code execution. Commit fcba413f55dd47f8a3921445252849126c6266b2 patches the issue.
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.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos (1 hidden).
This repository is a small Node.js-based educational lab and proof-of-concept for CVE-2026-39866, a command injection issue caused by unquoted workflow-dispatch input in a GitHub Actions release workflow associated with Lawnchair. The repo contains six files: a README with vulnerability explanation and usage instructions, a Dockerized Express application under app/, a docker-compose file that runs vulnerable and patched variants side-by-side, and a minimal standalone PoC under poc/. The main exploit capability is arbitrary command execution via attacker-controlled input placed into a shell command without quoting. In app/server.js, the vulnerable POST handler at /workflow/vulnerable reads artifactName from a submitted form and builds the command `mv ${artifactName}.zip lawnchair.zip`, then executes it with child_process.execSync. Because artifactName is inserted directly into the shell command, shell metacharacters such as `;` and `#` allow command injection. The patched route /workflow/patched demonstrates the fix by quoting the interpolated value: `mv "${artifactName}.zip" lawnchair.zip`. The standalone poc/exploit.js is not a remote exploit against GitHub itself; it is a local demonstration server that listens on port 3000 and, on startup, executes a simulated vulnerable shell command (`echo file.zip; id #`) to show how injected commands run. This makes the repository an operational PoC/lab rather than a weaponized exploit framework. Network-exposed functionality is limited to local HTTP services: the Express lab serves a form at / and accepts POST requests at /workflow/vulnerable and /workflow/patched; docker-compose maps these to localhost:3000 and localhost:3001 respectively. The exploit does not beacon to external infrastructure or contain C2 logic. Its purpose is to reproduce and explain the injection primitive, compare vulnerable versus patched behavior, and help users understand how unquoted workflow inputs in GitHub Actions can lead to command execution on runners.
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.
1 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.