CVE-2025-47928 is a critical CI/CD workflow vulnerability in the Spotipy repository caused by unsafe use of GitHub Actions pull_request_target in the integration test workflow. The vulnerable workflow checked out attacker-controlled code from a forked pull request using the pull request head reference and then executed it during dependency installation via pip install .. Because pull_request_target runs in the security context of the base repository, the untrusted code executed with access to repository secrets and a privileged GITHUB_TOKEN. This created a path for arbitrary code execution within the GitHub Actions runner and secret exfiltration from the base repository context. The issue was introduced by a change later reverted in commit 9dfb7177b8d7bb98a5a6014f8e6436812a47576f.
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.
GITHUB_TOKEN as well as Spotipy application secrets. The exposed GITHUB_TOKEN had content write privileges, enabling full repository takeover, including modification of repository contents and workflows. This creates a supply-chain compromise risk because an attacker could alter source code, CI/CD logic, releases, or other trusted project artifacts.If you can’t patch tonight, do this now.
pull_request_target for workflows that do not strictly require base-repository privileges or secrets. If privileged workflows are necessary, do not check out or execute code from forked pull requests in that context. Minimize GITHUB_TOKEN permissions to the least required, remove unnecessary secrets from workflow scope, and isolate privileged actions into post-validation workflows such as workflow_run. Additional hardening includes requiring explicit trust boundaries for fork contributions and monitoring runners for anomalous behavior such as memory scraping or outbound secret exfiltration.Patch, then assume compromise.
9dfb7177b8d7bb98a5a6014f8e6436812a47576f, removing the unsafe pattern. Remediation requires eliminating execution of fork-controlled code in pull_request_target workflows, especially any checkout of pull request head content followed by build, install, or test steps that execute repository code. Where pull request validation is needed for untrusted forks, use pull_request for unprivileged testing and separate any privileged operations into a distinct workflow that does not execute attacker-controlled code.No valid public exploits. Mallory filtered out 1 candidate as fakes, detection scripts, or README-only repos.
All candidate exploits were filtered out by Mallory's validation.
3 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Уязвимость в spotipy, приведённая как связанный пример эксплуатации CI/CD workflow через вредоносные изменения в setup.py для кражи секретов GitHub Actions runner.
A critical GitHub Actions workflow vulnerability in the spotipy-dev/spotipy repository caused by unsafe use of pull_request_target with checkout of untrusted pull request code and execution via pip install, enabling secret exfiltration and repository takeover.
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.