LLM із «сюрпризом»

25 март, 2026 - 17:25Sergey Petrenko

Гаразд, ось вам новина, яка розбурхала Twitter. Пакет LiteLLM версії 1.82.8, опублікований у репозиторії PyPI, виявився скомпрометованим: у нього вбудували зловмисний код для викрадення облікових даних, закодований у base64 і прихований у файлі litellm_init.pth. Особливість формату .pth полягає в тому, що Python виконує його автоматично під час запуску будь-якого скрипта в середовищі, де встановлено пакет – навіть без явного імпорту. Це означає, що сама дія «pip install» вже запускала шкідливий код. PyPI помістив пакет у карантин через кілька годин, але за цей час зловмисник міг зібрати вміст SSH-ключів, конфігурацій AWS, Azure, Docker, Kubernetes, а також історію командного рядка та гаманці криптовалют.

Ланцюжок атаки починається не з LiteLLM, а з компрометації Trivy – інструменту для сканування безпеки, який використовувався в CI-пайплайні самого LiteLLM. Зловмисники, судячи з усього, через уразливість у Trivy отримали доступ до секретів CI-середовища, включаючи токени публікації на PyPI, а потім випустили заражену версію пакета безпосередньо. Це, звичайно, не перший випадок, коли засіб захисту стає вразливим місцем.

Як і слід було очікувати, «справжні» програмісти удали, що раніше ніколи не існувало атак на ланцюжок постачання, і почали коментувати, що ось, мовляв, й навайбкодили.

З позитивного – версія 1.82.8 була у відкритому доступі близько години. Тож потенційних жертв не повинно бути дуже багато. З середньо-негативного – власне код, що збирає дані, присутній і в 1.82.7, але там відсутній .pth-скрипт. Зараз поточна версія на PyPi – 1.82.6, але взагалі-то це nightly, що тільки підтверджує стару мудрість – віддавайте перевагу stable-версіям, буде спокійніше.

LLM із «сюрпризом»