695 points by dot_treo about 23 hours ago | 433 comments | View on ycombinator
detente18 about 21 hours ago |
zx8080 3 minutes ago |
What is the source of compromise?
Does anyone have a list of other compromised projects?
jFriedensreich about 21 hours ago |
postalcoder about 5 hours ago |
I updated my global configs to set min release age to 7 days:
~/.config/uv/uv.toml
exclude-newer = "7 days"
~/.npmrc
min-release-age=7 # days
~/Library/Preferences/pnpm/rc
minimum-release-age=10080 # minutes
~/.bunfig.toml
[install]
minimumReleaseAge = 604800 # secondsdweinstein about 14 hours ago |
I made this tool for macos systems that helps detect when a package accesses something it shouldn't. it's a tiny go binary (less than 2k LOC) with no dependencies that will mount a webdav filesystem (no root) or NFS (root required) with fake secrets and send you a notification when anything accesses it. Very stupid simple. I've always really liked the canary/honeypot approach and this at least may give some folks a chance to detect (similar to like LittleSnitch) when something strange is going on!
Next time the attack may not have an obvious performance issue!
ramimac about 21 hours ago |
hiciu about 22 hours ago |
I would expect better spam detection system from GitHub. This is hardly acceptable.
ting0 about 16 hours ago |
Even still though, we can't really trust any open-source software any more that has third party dependencies, because the chains can be so complex and long it's impossible to vet everything.
It's just too easy to spam out open-source software now, which also means it's too easy to create thousands of infected repos with sophisticated and clever supply chain attacks planted deeply inside them. Ones that can be surfaced at any time, too. LLMs have compounded this risk 100x.
rdevilla about 21 hours ago |
eoskx about 19 hours ago |
intothemild about 21 hours ago |
Basically it forkbombed `grep -r rpcuser\rpcpassword` processes trying to find cryptowallets or something. I saw that they spawned from harness, and killed it.
Got lucky, no backdoor installed here from what i could make out of the binary
cedws about 21 hours ago |
This threat actor seems to be very quickly capitalising on stolen credentials, wouldn’t be surprised if they’re leveraging LLMs to do the bulk of the work.
latable 16 minutes ago |
What about reducing the number of dependencies ? Integrating core functionalities in builtin language libraries ? Avoiding frequent package updates ? Avoiding immature/experimental packages from developers of unknown reliability ?
Those issues are grave. I see no future when those get rarer, and I am afraid they may wipe the open-source movement credibility.
bratao about 22 hours ago |
shay_ker about 21 hours ago |
Do the labs label code versions with an associated CVE to label them as compromised (telling the model what NOT to do)? Do they do adversarial RL environments to teach what's good/bad? I'm very curious since it's inevitable some pwned code ends up as training data no matter what.
nickvec about 21 hours ago |
tom_alexander about 21 hours ago |
Since they all seem positive, it doesn't seem like an attack but I thought the general etiquette for github issues was to use the emoji reactions to show support so the comment thread only contains substantive comments.
f311a about 20 hours ago |
Run all your new dependencies through static analysis and don't install the latest versions.
I implemented static analysis for Python that detects close to 90% of such injections.
santiagobasulto about 20 hours ago |
> ### Software Supply Chain is a Pain in the A*
> On top of that, the room for vulnerabilities and supply chain attacks has increased dramatically
AI Is not about fancy models, is about plain old Software Engineering. I strongly advised our team of "not-so-senior" devs to not use LiteLLM or LangChain or anything like that and just stick to `requests.post('...')".
[0] https://sb.thoughts.ar/posts/2025/12/03/ai-is-all-about-soft...
syllogism about 19 hours ago |
Configure the CI to make a release with the artefacts attached. Then have an entirely private repo that can't be triggered automatically as the publisher. The publisher repo fetches the artefacts and does the pypi/npm/whatever release.
eoskx about 21 hours ago |
abhisek about 20 hours ago |
We are looking at similar attack vectors (pth injection), signatures etc. in other PyPI packages that we know of.
avian about 2 hours ago |
They also seem to be spilling into HN [1].
Runaway AI agents? A meme I'm to old to understand?
macNchz about 18 hours ago |
or pyproject.toml (not possible to filter based on absence of a uv.lock, but at a glance it's missing from many of these): https://github.com/search?q=path%3A*%2Fpyproject.toml+%22%5C...
or setup.py: https://github.com/search?q=path%3A*%2Fsetup.py+%22%5C%22lit...
sschueller about 21 hours ago |
Shank about 20 hours ago |
It would be interesting if Python, NPM, Rubygems, etc all just decided to initiate an ecosystem-wide credential reset. On one hand, it would be highly disruptive. On the other hand, it would probably stop the damage from spreading.
cpburns2009 about 22 hours ago |
https://inspector.pypi.io/project/litellm/1.82.8/packages/fd...
vlovich123 about 5 hours ago |
This stupidity is squarely on GitHub CI. Trivy is also bad here but the blast radius should have been more limited.
santiago-pl about 15 hours ago |
kevml about 22 hours ago |
mathis-l about 12 hours ago |
https://github.com/crewAIInc/crewAI/commit/8d1edd5d65c462c3d...
postalcoder about 21 hours ago |
mark_l_watson about 20 hours ago |
6thbit about 21 hours ago |
The package was directly compromised, not “by supply chain attack”.
If you use the compromised package, your supply chain is compromised.
mohsen1 about 21 hours ago |
it does a lot of CPU intensive work
spawn background python
decode embedded stage
run inner collector
if data collected:
write attacker public key
generate random AES key
encrypt stolen data with AES
encrypt AES key with attacker RSA pubkey
tar both encrypted files
POST archive to remote hostrgambee about 21 hours ago |
r2vcap about 12 hours ago |
noobermin about 17 hours ago |
datadrivenangel about 13 hours ago |
Also the repo is so active that it's very hard to understand the state of issues and PRs, and the 'day 0' support for GPT-5.4-nano took over a week! Still, tough situation for the maintainers who got hacked.
cpburns2009 about 19 hours ago |
agentictrustkit about 9 hours ago |
Oh boy supply chain integrity will be an agent governenace problem, not just a devops one. If you send out an agent that can autonomously pull packages, do code, or access creds, then the blast radius of compromises widens. That's why I think there's an argument for least-privilege by default--agents should have scoped, auditable authority over what they can install and execute, and approval for anything outside the boundaries.
0fflineuser about 21 hours ago |
I guess I am lucky as I have watchtower automatically update all my containers to the latest image every morning if there are new versions.
I also just added it to my homelab this sunday, I guess that's good timing haha.
wswin about 20 hours ago |
westoque about 17 hours ago |
gaborbernat about 11 hours ago |
dhon_ about 7 hours ago |
hmokiguess about 21 hours ago |
EDIT: here's what I did, would appreciate some sanity checking from someone who's more familiar with Python than I am, it's not my language of choice.
find / -name "litellm_init.pth" -type f 2>/dev/null
find / -path '/litellm-1.82..dist-info/METADATA' -exec grep -l 'Version: 1.82.[78]' {} \; 2>/dev/null
foota about 17 hours ago |
rgambee about 21 hours ago |
saharhash about 10 hours ago |
getverdict about 10 hours ago |
dec0dedab0de about 21 hours ago |
Basically, have all releases require multi-factor auth from more than one person before they go live.
A single person being compromised either technically, or by being hit on the head with a wrench, should not be able to release something malicious that effects so many people.
aborsy about 17 hours ago |
There is also the need for data sanitation, because the attacker could distribute compromised files through user’s data which will later be run and compromise the host.
xinayder about 21 hours ago |
Nayjest about 15 hours ago |
https://github.com/Nayjest/lm-proxy
``` pip install lm-proxy ```
Guys, sorry, as the author of a competing opensource product, I couldn’t resist
nickspacek about 22 hours ago |
https://github.com/krrishdholakia/blockchain/commit/556f2db3...
- # blockchain
- Implements a skeleton framework of how to mine using blockchain, including the consensus algorithms.
+ teampcp owns BerriAItom-blk about 20 hours ago |
xunairah about 21 hours ago |
ps06756 about 13 hours ago |
segalord about 20 hours ago |
fratellobigio about 21 hours ago |
undefined about 19 hours ago |
mikert89 about 21 hours ago |
oncelearner about 21 hours ago |
6thbit about 21 hours ago |
This would also disable site import so not viable generically for everyone without testing.
dev_tools_lab about 19 hours ago |
ilusion about 15 hours ago |
0123456789ABCDE about 21 hours ago |
saidnooneever about 19 hours ago |
if you have tips i am sure they are welcome. snark remarks are useless. dont be a sourpuss. if you know better, help the remediation effort.
smakosh about 16 hours ago |
Migration guide: https://llmgateway.io/migration/litellm
cpburns2009 about 21 hours ago |
lightedman about 18 hours ago |
This was taught in the 90s. Sad to see that lesson fading away.
te_chris about 21 hours ago |
Aeroi about 18 hours ago |
kstenerud about 21 hours ago |
That's why I'm building https://github.com/kstenerud/yoloai
Imustaskforhelp about 21 hours ago |
First Trivy (which got compromised twice), now LiteLLM.
johnhenry about 20 hours ago |
hmokiguess about 20 hours ago |
faxanalysis about 18 hours ago |
Ayc0 about 15 hours ago |
sudorm about 15 hours ago |
bfeynman about 22 hours ago |
homanp about 20 hours ago |
gkfasdfasdf about 21 hours ago |
rvz about 17 hours ago |
An actual infosec audit would have rigorously enforced basic security best practices in preventing this supply chain attack.
claudiug about 19 hours ago |
danielvaughn about 21 hours ago |
The Python ecosystem provides too many nooks and crannies for malware to hide in.
TZubiri about 21 hours ago |
I hope that everyone's course of action will be uninstalling this package permanently, and avoiding the installation of packages similar to this.
In order to reduce supply chain risk not only does a vendor (even if gratis and OS) need to be evaluated, but the advantage it provides.
Exposing yourself to supply chain risk for an HTTP server dependency is natural. But exposing yourself for is-odd, or whatever this is, is not worth it.
Remember that you are programmers and you can just program, you don't need a framework, you are already using the API of an LLM provider, don't put a hat on a hat, don't get killed for nothing.
And even if you weren't using this specific dependency, check your deps, you might have shit like this in your requirements.txt and was merely saved by chance.
An additional note is that the dev will probably post a post-mortem, what was learned, how it was fixed, maybe downplay the thing. Ignore that, the only reasonable step after this is closing a repo, but there's no incentive to do that.
somehnguy about 16 hours ago |
Hundreds of downvoted comments like "Worked like a charm, much appreciated.", "Thanks, that helped!", and "Great explanation, thanks for sharing."
Blackthorn about 21 hours ago |
It's pretty disappointing that safetensors has existed for multiple years now but people are still distributing pth files. Yes it requires more code to handle the loading and saving of models, but you'd think it would be worth it to avoid situations like this.
chillfox about 21 hours ago |
tonymet about 13 hours ago |
# add any dependency file patterns
osv-scanner -r .
as your projects mature, add osv-scanner as a blocking step to fail your installs before the code gets installed / executed.zhisme about 21 hours ago |
undefined about 16 hours ago |
cowpig about 17 hours ago |
iwhalen about 22 hours ago |
deep_noz about 22 hours ago |
arrty88 about 11 hours ago |
otabdeveloper4 about 21 hours ago |
I'm sensing a pattern here, hmm.
undefined about 23 hours ago |
canberkh about 18 hours ago |
federicodeponte 27 minutes ago |
rafaamaral about 10 hours ago |
skillflow_ai about 11 hours ago |
aplomb1026 about 12 hours ago |
pugchat about 18 hours ago |
jamiemallers about 20 hours ago |
undefined about 16 hours ago |
ryguz about 10 hours ago |
devnotes77 about 16 hours ago |
openclaw01 about 9 hours ago |
maxothex about 20 hours ago |
matrixgard about 22 hours ago |
aistackkit about 9 hours ago |
peytongreen_dev about 21 hours ago |
Innoraai about 9 hours ago |
ddactic about 21 hours ago |
mitul005 about 21 hours ago |
qcautomation about 15 hours ago |
rsmtjohn about 21 hours ago |
osaka2077 about 19 hours ago |
Adam_cipher about 7 hours ago |
dot_treo about 22 hours ago |
thibault000 about 20 hours ago |
bustah about 17 hours ago |
sy0115 about 17 hours ago |
bustah about 17 hours ago |
hahaddmmm12x about 21 hours ago |
iamnotai666 about 18 hours ago |
ajoy about 15 hours ago |
zhing2006 42 minutes ago |
What it steals is comprehensive: SSH keys, Git credentials, AWS/GCP/Azure cloud credentials (including IMDS metadata), Kubernetes configs, all environment variables, crypto wallets, shell history, and database passwords. Everything is AES-256 encrypted with a hardcoded RSA public key and exfiltrated to models.litellm.cloud (not the official litellm.ai domain).
This is not just "a base64 blob in proxy_server.py" — v1.82.8 escalated to a .pth file that runs without any import, making it far more dangerous and harder to notice.
1. Looks like this originated from the trivvy used in our ci/cd - https://github.com/search?q=repo%3ABerriAI%2Flitellm%20trivy... https://ramimac.me/trivy-teampcp/#phase-09
2. If you're on the proxy docker, you were not impacted. We pin our versions in the requirements.txt
3. The package is in quarantine on pypi - this blocks all downloads.
We are investigating the issue, and seeing how we can harden things. I'm sorry for this.
- Krrish