TGViewer
Четыре луча Четыре луча @four_rays · 4.02K subscribers
Post #141 3.34K
Сборщик мусора ломает безопасность Redis

CVE‑2025‑49844
— это критическая уязвимость с условным названием RediShell. Она затрагивает Redis в различных ветках до версий 7.2.11 / 7.4.6 / 8.0.4 / 8.2.1 и связана со встроенным интерпретатором Lua.

😬 Метрики
Base Score: 9.9 (Critical)
CWE: 416


😬 Суть проблемы
Ошибка реализуется как Use‑After‑Free (UAF) — злоумышленник с правом выполнять Lua‑скрипты (авторизованный пользователь или злоумышленник на незащищённом экземпляре Redis) может сформировать скрипт, который:

— манипулирует сборщиком мусора (GC);
— освобождает ещё используемую структуру.

Это приводит к повреждению памяти -> позволяет выйти из песочницы Lua -> выполнить произвольный код на хосте. Поскольку большинство экземпляров Redis допускают выполнение Lua‑скриптов через команду EVAL, атакующий может удалённо отправить вредоносный скрипт и добиться RCE.

😬 Причина уязвимости
Redis использует Lua 5.1, чтобы выполнять пользовательские скрипты. Lua при загрузке фрагментов кода (chunk(ов)) присваивает фрагментам имя. Если во время разбора кода запустить сборщик мусора (GC), то память с этим именем может быть освобождена -> парсер продолжит пользоваться невалидным именем, а это Use-After-Free -> контроль памяти и перехват выполнения.

😬 Сценарий возможной атаки
1. Атакующий подключается к Redis.
2. Отправляет специально сформированный Lua‑скрипт через команду EVAL, который использует финализаторы и сборку мусора для создания UAF.
3. После получения примитивов UAF злоумышленник может выполнить дополнительные Lua‑команды, которые позволяют ему выйти из песочницы, например:
package.loadlib, io.popen, os.execute

и т. п., затем загрузить произвольную библиотеку и выполнить машинный код, получив полный доступ к хосту.

😬 Способы защититься
Обновить Redis — уже выпущены патчи, где разработчики корректно привязали имя фрагмента к стеку, что исключает UAF.

Если не получается обновить, можно сделать следующее:
— ограничить доступ к Redis — сервер предназначен для работы в доверенной сети;
— настроить аутентификацию и ACL — включить сильный пароль в директиве requirepass, а также использовать механизмы ACL для запрета выполнения Lua‑скриптов неподдерживаемыми пользователями;
— отключить опасные команды EVAL и EVALSHA путём их переименования.

😬 Мониторинг и обнаружение
Выявить атаку в сети можно через анализ содержимого команды EVAL, которая приходит извне по протоколу RESP. Правило IDS, которое обнаруживает отправку команды EVAL, должно содержать в себе признаки триггера UAF — вызов collectgarbage('collect') и определение метода __gc, либо попытку использования опасных функций, таких как:
package.loadlib, io.popen, os.execute


Правило может быть ориентировано на TCP‑трафик к стандартным портам Redis (6379,6380).
  • 🔥 14
  • 👍 6
  • ⚡ 3
  • ❤ 1
  • 👾 1
More from @four_rays
  1. Sep 14, 2026💣 Ржавый код: почему все переходят на Rust и когда аналитику можно его не реверсить Rust…
  2. Sep 11, 2026😳 DFIR diggin’ deeper: неочевидные источники артефактов при расследовании атак Когда стан…
  3. Sep 7, 2026😀 Call for Papers на технострим SOC Forum 2026 еще открыт! Темы: 1️⃣ Offense: актуальные…
  4. Aug 31, 2026☀️ Zimbra, все еще скрывающая боль Ранее мы уже рассказывали о расследовании «Zimbra, скры…
  5. Aug 19, 2026💡 Разберемся с непопулярными артефактами на OffZone 2026 Выбираете, какие выступления пос…
  6. Aug 17, 2026😀 Admin may cry CVE-2026-41452 — уязвимость, позволяющая перезаписать данные администрато…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →