
LuaRocks.org розкрив інцидент: зловмисник міг читати всю базу даних
LuaRocks.org повідомив, що вразливість віддаленого виконання коду на його сайті використовували з 9 липня до 20 серпня 2026 року. Сайт перенесли на новий сервер, а всі API-ключі, сесії та секрети 2FA відкликали.
LuaRocks.org, репозиторій пакетів для мови програмування Lua, повідомив, що вразливість віддаленого виконання коду (RCE) на його сайті використовували кілька разів у період з 9 липня по 20 серпня 2026 року. Повідомлення надійшло 25 вересня за координації CISA, а 26 вересня вразливість виправили.
Оскільки зловмисник міг виконувати код на сервері, скомпрометованим вважають усе, до чого той сервер мав доступ. Сайт перенесли на повністю новий сервер, усі облікові дані старого сервера відкликали й замінили. Доказів зміни чинних пакетів не знайшли.
Що робити користувачам
Усі API-ключі та сесії відкликано, тож для завантаження пакетів потрібен новий ключ і повторний вхід у систему. Паролі зберігаються як bcrypt-хеші: їх складно зламати, але хеші слід вважати скомпрометованими, тож змініть пароль і змініть його всюди, де використовували той самий. Секрети 2FA також скомпрометовані та видалені, тому двофакторну автентифікацію потрібно налаштувати заново.
Адміністратори радять оновити LuaRocks до версії 3.12 або новішої, особливо якщо використовується LuaJIT чи Lua 5.1: старіші версії запускатимуть скомпільований байт-код, якщо сервер надішле його замість rockspec або маніфесту. Пакети bcrcewon, 7e0b94029db0 і 7e0b9402f9c8, завантажені зловмисником 7 серпня, уже видалено; якщо ви їх встановлювали, вважайте цю машину скомпрометованою.
Як працювала вразливість
Rockspec — це файл Lua, який LuaRocks.org виконує в обмеженому середовищі, щоб прочитати назву та версію пакета. Функція завантаження приймала і вихідний код Lua, і скомпільований байт-код LuaJIT. LuaJIT не перевіряє байт-код, тому спеціально сформований файл міг читати й записувати пам'ять за межами обмеженого середовища та виконувати довільний код у вебсервері. Активувати це міг будь-який зареєстрований користувач, завантаживши rockspec; виправлення завантажує rockspec лише як текст і відхиляє байт-код.
Що сталося
Проєкт виявив три акаунти, створені спеціально для атаки. 9 липня на сервері через шкідливі завантаження виконали команди оболонки. 7 серпня це повторилося, і було опубліковано три шкідливі пакети. 16 та 20 серпня через API завантаження надійшло кілька сотень автоматичних спроб із повторним використанням опублікованих навантажень. Акаунт вебсервера мав повний адміністративний доступ, тож команда припускає, що зловмисник міг читати все, включно з усією базою даних.
Серед скомпрометованих даних — імена користувачів, електронні адреси та bcrypt-хеші паролів, API-ключі, секрети 2FA, записи сесій з IP-адресами й даними браузерів, а також токени прив'язки GitHub-акаунтів з доступом лише до профілю та пошти. Проєкт веде щоденне git-дзеркало всіх пакетів: порівняння з копією від 8 липня та базою даних показало, що кожна відмінність пояснюється звичайним завантаженням, копіюванням чи видаленням, а байт-код був лише в rockspec зловмисника. Проєкт виправив уразливість, прибрав пакети зловмисника із сайту та всіх дзеркал і відкликав усі облікові дані. Залишається одне обмеження: пакет, видалений зловмисником, не відрізнити від видаленого власником.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.