Poisoned Pipeline

Poisoned Pipeline / Incidents / AS21

AS21 · 2026-09

Deep-Live-Cam malicious git dependency

PyPIGit / GitHubmacOS softwareWindows software

On 8 September 2026 a commit on Deep-Live-Cam (96k GitHub stars) rewrote
requirements.txt to pull several packages from source URLs and added
linerequests @ git+https://github.com/pypls/requests.git — a lookalike of
the real Requests project. setup.py hid a loader past 434 spaces; it
fetched a clipboard-hijacking crypto stealer via a Telegraph page and
installed login persistence on Windows and macOS. The maintainer reported
unusual account access despite 2FA. SafeDep traced the chain; the
malicious revision sat on main for about 9 hours 39 minutes.

Mapped techniques

supply-chain Deep-Live-Cam GitHub repository

T0113 · Initial Access · Compromised user account

Maintainer reported unusual account access despite 2FA; unsigned
commit on main under hacksider.

T0197 · Initial Access · Use code from untrusted source

requirements.txt was pointed at git+https://github.com/pypls/requests.git
instead of PyPI.

T0129 · Initial Access · Typosquatting

pypls/requests declared package name requests and kept metadata of
the legitimate project.

T0109 · Resource Development · Publish malicious artifact

The pypls/requests repo existed three days before the requirements.txt
change.

post-supply-chain Installers / end users

T0151 · Execution · Installation scripts

pip's setuptools backend executes setup.py during wheel build; the
loader ran before Deep-Live-Cam itself launched.

T0159 · Execution · Malicious artifact execution

Hidden exec(compile(...)) in setup.py decoded and ran the loader.

T0139 · Impact · Resource hijacking

Final payload replaced BTC/ETH/TRX/SOL addresses in the clipboard.

T0138 · Persistence · Backdoor in code

Windows Run key SysHelper and macOS LaunchAgent com.user.syshelper.plist
re-executed the stealer at login.

Framework gaps noted

Sources