🚨 CVE-2025-49844 — "RediShell"

Критическое удаленное выполнение кода в самом быстром in-memory хранилище в мире
Lua-скриптинг Redis только что стал идеальной зоной приземления после аутентификации.

Аутентифицированный злоумышленник → созданный Lua-скрипт → выход из песочницы → полное RCE на хосте
⚠️ Обзор
CVE-2025-49844 ("RediShell") — это критическая уязвимость повреждения памяти типа use-after-free (UAF) во встроенном движке Lua-скриптинга Redis.
Аутентифицированный пользователь отправляет специально созданный Lua-скрипт через EVAL / EVALSHA, который манипулирует сборщиком мусора, вызывает UAF во время парсинга/выполнения, выходит из песочницы Lua и достигает произвольного выполнения кода на базовом хосте.
Ошибка скрывалась в исходном коде Redis на протяжении ~13 лет (с момента ранней интеграции Lua) и затрагивает практически все версии с включенным Lua до исправления в октябре 2025 года.
«Один злонамеренный вызов EVAL. Полный захват сервера. Redis в 2025–2026 стал интересным.»
🔥 Степень серьезности и влияние
- CVSS v3.1 Base Score: 10.0 / Critical (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)
- Вектор атаки: Сеть (порт Redis TCP, обычно 6379)
- Необходимые привилегии: Низкие (любой аутентифицированный пользователь Redis с правами выполнения скриптов)
- Взаимодействие пользователя: Нет
- Зрелость эксплойта: Публичные PoC и инструменты эксплойтов выпущены вскоре после раскрытия
Реальность в марте 2026 года:
- Публичные эксплойты нацелены на reverse shell, постоянство, полезные нагрузки для майнинга криптовалют
- Высокий риск в облачных средах (кэширующие слои, хранилища сессий, очереди)
- В сочетании со слабой аутентификацией / открытым Redis → полная компрометация инфраструктуры
- Многие устаревшие развертывания, образы Docker и управляемые сервисы все еще уязвимы
🕵️ Обнаружение и признание
- Обнаружено командой Wiz Research
- Сообщено через Pwn2Own Berlin (май 2025)
- Скоординированное раскрытие: 3 октября 2025 (уведомление Redis + исправления)
- Назван "RediShell" командой Wiz (RCE, подобное shell, через выход из Lua)
🔬 Техническое погружение
Redis встраивает Lua 5.x для скриптинга (EVAL, EVALSHA, функции и т.д.).
Ошибка существует во взаимодействии парсера Lua и сборщика мусора (GC):
- Злоумышленник отправляет созданный Lua-скрипт через
EVAL
- Во время парсинга (
luaY_parser) объект TString выделяется, но не защищен в стеке Lua
- GC запускается преждевременно → освобождает объект
- Позднее код использует освобожденную память → примитив UAF
- Злоумышленник использует это для утечки памяти, обхода ASLR, ROP/return-to-libc → произвольное выполнение нативного кода вне песочницы
Ключевой фатальный момент: Песочница Lua никогда не была укреплена против примитивов повреждения памяти.
📅 Хронология
| Дата | Событие |
|---|
| ~2012 | Внедрение уязвимой интеграции Lua |
| Май 2025 | Wiz обнаруживает и демонстрирует на Pwn2Own Berlin |
| 3 окт. 2025 | Публичное раскрытие + уведомление безопасности Redis |
| 3 окт. 2025 | Выпущены исправленные версии (6.2.20+, 7.x, 8.x) |
| 6–7 окт. 2025 | Блоги Wiz/Sysdig/Redrays + начальные PoC |
| Окт. 2025+ | Появляются репозитории эксплойтов (GitHub, labs) |
| Март 2026 | Эксплуатация продолжается против устаревших/облачных конфигураций |
🖥️ Затронутые системы
Уязвимы: Все версии Redis с включенным Lua-скриптингом до исправлений октября 2025
Исправлено в:
- Redis 8.2.2+
- Redis 8.0.4+
- Redis 7.4.6+
- Redis 7.2.11+
- Redis 6.2.20+
Распространенные цели в 2026:
- Облачные кэши/хранилища сессий (AWS ElastiCache, Azure Cache, GCP Memorystore)
- Развертывания Docker/K8s с образами Redis по умолчанию
- Устаревшие приложения, использующие Redis < 7.x
- Открытые экземпляры Redis (без аутентификации или слабый пароль)
Обходной путь (до патча):
- Отключите Lua-скриптинг через ACL: запретите
EVAL, EVALSHA, SCRIPT LOAD и т.д.
- Применяйте строгую аутентификацию + ограничения по сети
💥 Публичный эксплойт и PoC
Реалистичный поток атаки (высокоуровневый, из публичных анализов):
- Аутентифицируйтесь в Redis (пароль, если требуется)
- Отправьте созданный скрипт
EVAL, который вызывает UAF + утечку памяти
- Используйте утечку для обхода ASLR
- Соедините ROP-гаджеты → запустите reverse shell / выполните полезную нагрузку
Пример скелета в одну строку (не полный эксплойт – только для иллюстрации):
redis-cli -h <target> -p 6379 -a password
> EVAL "crafted_lua_that_triggers_uaf_and_execs_shell" 0
Полные вооруженные PoC появились на GitHub в течение нескольких дней (утечка памяти → ROP → shell).
Многие включают обход ASLR, обход NX/DEP и опции постоянства.
🛡️ Проверка и устранение (март 2026)
1. Проверка версии
redis-cli INFO SERVER | grep redis_version
→ Уязвим, если версия меньше исправленных выпусков выше
2. Немедленное исправление
- Обновитесь до последней стабильной версии (рекомендуется 8.2.x+)
- Для управляемых сервисов (AWS/Azure/GCP): принудительное обновление или подтвердите применение патча
3. Укрепление
📈 Статус — март 2026
- Эксплуатация все еще активна против неисправленных облачных/устаревших экземпляров
- Redis остается вездесущим → цель высокой ценности
- Сдвиг в экосистеме: многие организации теперь отключают Lua-скриптинг по умолчанию
🎓 Извлеченные уроки
- 13-летние ошибки скрываются во встроенных интерпретаторах
- Выход из песочницы через повреждение памяти = мгновенное RCE
- Аутентифицированный не означает безопасный — особенно на открытых сервисах
- Исправляйте быстро, отключайте рискованные функции еще быстрее