As many of you know, I am fascinated by #AI/#ML. I don't have a #mentor to work with so I'm often left to my own devices. The repository below is an example of how I "lead myself" when a mentor isn't available. Read this thread for details 🧵
https://t.co/tOHYBPUWSy
Software horror: litellm PyPI supply chain attack.
Simple `pip install litellm` was enough to exfiltrate SSH keys, AWS/GCP/Azure creds, Kubernetes configs, git credentials, env vars (all your API keys), shell history, crypto wallets, SSL private keys, CI/CD secrets, database passwords.
LiteLLM itself has 97 million downloads per month which is already terrible, but much worse, the contagion spreads to any project that depends on litellm. For example, if you did `pip install dspy` (which depended on litellm>=1.64.0), you'd also be pwnd. Same for any other large project that depended on litellm.
Afaict the poisoned version was up for only less than ~1 hour. The attack had a bug which led to its discovery - Callum McMahon was using an MCP plugin inside Cursor that pulled in litellm as a transitive dependency. When litellm 1.82.8 installed, their machine ran out of RAM and crashed. So if the attacker didn't vibe code this attack it could have been undetected for many days or weeks.
Supply chain attacks like this are basically the scariest thing imaginable in modern software. Every time you install any depedency you could be pulling in a poisoned package anywhere deep inside its entire depedency tree. This is especially risky with large projects that might have lots and lots of dependencies. The credentials that do get stolen in each attack can then be used to take over more accounts and compromise more packages.
Classical software engineering would have you believe that dependencies are good (we're building pyramids from bricks), but imo this has to be re-evaluated, and it's why I've been so growingly averse to them, preferring to use LLMs to "yoink" functionality when it's simple enough and possible.
I'm working on a personal project that requires the creation of hundreds of selfies. I compared 20 models and produced samples for each using the same prompt. https://t.co/xFsnvjjsy5
I would love your feedback!
Ted Stresen-Reuter
@AskATranswidow@TAMU I like learning about the experiences of others because it prepares me to work on a team but maybe engineers only work in isolation and never have to interact with anyone not like them? Seems unlikely.
Not saying this particular case was this or that, just sayin'
@pepephone Ya estoy hablando con el equipo por WhatsApp pero es muy frustrante. Cuando compré la tarjeta, nadie me dijo que iba a tener que esperar tanto para que activaran la cuenta y si lo hubiera sabido, seguramente no lo habría comprado. Habría buscado una alternativa.
I understand that the JWT must be sent with the request. As the call to the Edge Function is initialized by the cron job, does that mean it is operating as the `postgres` role? Don't you think _some_ check should be in place so that anon roles aren't initializing updates?
@ggrdson Hi! 👋
Reading your Supabase post on Automatic Embeddings and wondering if the Edge function really is "open to the world" or if there is some hidden security check going on under the hood that I'm not seeing
https://t.co/F3Q5dme0s1
How would we add security to this?
@sophiamyang Hi. I just want you to know how inspired I was by one of your youtube videos long ago. I turned your jupyter notebook into a web application. I wrote a little about it here https://t.co/3kTvRKJH6O
@movistar_es Ustedes están bloqueando IPs de dominios válidos y normales y hace que no puedo trabajar. https://t.co/5WTfjDirRE, https://t.co/gWSSrb8Duh y otros. https://t.co/GOJbrugIOD
¿Cómo puedo solicitar que no bloquéen estas IPs?