Sherlock leaks CI tokens via command inj (CVE-2026-44590) [PoC]
CVE-2026-44590
CVE-2026-44590: Sherlock 0.16.0 GitHub Actions CI token theft via pull_request_target command injection (CVSS 9.3). Update to 0.16.1 immediately.
Exploitation confirmed - public proof-of-concept - CVE-2026-44590 is a critical command injection vulnerability in Sherlock prior to 0.16.1 that lets any GitHub user steal the CI runner’s GITHUB_TOKEN and execute arbitrary commands. Patched in version 0.16.1 - update immediately.
Overview
CVE-2026-44590 affects the Sherlock social media username search tool. The GitHub Actions workflow validate_modified_targets.yml uses the pull_request_target trigger, which runs in the context of the target repository rather than the forked PR branch. This trigger combined with insufficient input sanitization allows any GitHub user to inject arbitrary commands into the CI runner by opening a pull request, without requiring approval, review, or merge.
Impact
The impact is severe:
- Remote code execution on the GitHub Actions CI runner
- Theft of the GITHUB_TOKEN with repository write access
- Potential for unauthorized code pushes to the repository using stolen tokens
- This follows a known attack pattern seen in the GlassWorm Attack Uses Stolen GitHub Tokens to force-push malware into Python repositories
Affected Versions
All Sherlock versions prior to 0.16.1 (including 0.16.0) are affected.
Remediation
- Immediate: Upgrade Sherlock to version 0.16.1 or later.
- Alternative: Disable the affected GitHub Actions workflow
validate_modified_targets.ymluntil the update can be applied. - Post-remediation: Rotate any exposed GITHUB_TOKEN secrets and audit repository access logs for unauthorized activity.
Mitigation Notes
If immediate upgrade is not possible, consider restricting workflow triggers. However, no workaround fully addresses the command injection vector other than upgrading.
Security Insight
This vulnerability illustrates a broader security pattern in open-source CI/CD pipelines: the pull_request_target trigger remains a common source of critical vulnerabilities because it grants workflows access to repository secrets while executing untrusted code from forks. Similar attacks, such as the GlassWorm campaign that weaponized stolen CI tokens, show that these token-stealing vulnerabilities are a primary vector for supply chain compromise. Project maintainers should audit all workflows using pull_request_target and consider migrating to pull_request with manual approval or using environment-level protections.
Further Reading
Never miss a critical vulnerability
Get real-time security alerts delivered to your preferred platform.
Public PoC References
Unverified third-party code
These repositories are publicly listed on GitHub and have not been audited by Yazoul Security. They may contain malware, backdoors, destructive payloads, or operational security risks (telemetry, exfiltration). Treat them as hostile binaries. Inspect source before execution. Run only in isolated, disposable lab environments (offline VM, no credentials, no production data).
Authorized use only. This information is provided for defensive research, detection engineering, and patch validation. Using exploit code against systems you do not own or do not have explicit written permission to test is illegal in most jurisdictions and violates Yazoul's terms of use.
| Repository | Stars |
|---|---|
| Astaruf/CVE-2026-44590 CVE-2026-44590 - Sherlock <= v0.16.0 - RCE via pull_request_target Injection → Supply Chain Compromise | ★ 0 |
Showing 1 of 1 known references. Source: nomi-sec/PoC-in-GitHub.
Related Advisories
A improper neutralization of special elements used in an os command ('os command injection') vulnerability in Fortinet FortiSandbox 4.4.0 through 4.4.8 may allow attacker to execute unauthorized code ...
Anthropic Claude Code CLI and Claude Agent SDK contain an OS command injection vulnerability in authentication helper execution where helper configuration values are executed using shell=true without ...
PraisonAI is a multi-agent teams system. From version 4.5.15 to before version 4.5.69, the --mcp CLI argument is passed directly to shlex.split() and forwarded through the call chain to anyio.open_pro...
node-tesseract-ocr is an npm package that provides a Node.js wrapper for Tesseract OCR. In all versions through 2.2.1, the recognize() function in src/index.js is vulnerable to OS Command Injection. T...