The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимости в Redis и Valkey, позволяющие выполнить код на сервере при наличии доступа к БД

09.10.2025 08:11

Исследователи из компании Wiz выявили в СУБД Redis уязвимость (CVE-2025-49844), позволяющую добиться удалённого выполнения кода (RCE) на сервере. Проблеме присвоен наивысший уровень опасности (CVSS score 10 из 10), при этом для эксплуатации уязвимости атакующий должен иметь возможность отправки запросов к СУБД Redis, допускающей выполнение пользовательских Lua-скриптов.

Помимо публично доступных экземпляров Redis, предоставляющих доступ без аутентификации, уязвимость позволяет скомпрометировать облачные системы и платформы хостинга, поддерживающие сервисы для работы с Redis. По данным компании Wiz сканирование сети выявило около 330 тысяч принимающих соединения Redis-серверов, из которых около 60 тысяч принимают запросы без аутентификации. Предоставляемый проектом Redis официальный образ Docker-контейнера настроен для доступа без аутентификации по умолчанию.

Уязвимость вызвана обращением к уже освобождённой памяти (use-after-free), проявляющимся при манипуляции сборщиком мусора из специально оформленного Lua-скрипта. Проблема позволяет обойти sandbox-изоляцию Lua-окружения в Redis и выполнить код в основной системе с правами пользователя, под которым выполняется СУБД. Примечательно, что ошибка оставалась незамеченной на протяжении 13 лет. Выявившие проблему исследователи продемонстрировали рабочий эксплоит, но детали эксплуатации пока не раскрываются, чтобы дать время на установку обновлений.

Уязвимость также проявляется в проекте Valkey, развивающем форк Redis, поставляемый в большинстве дистрибутивов Linux, включая RedHat Enterprise Linux 10. Уязвимость устранена в выпусках Redis 8.2.2, 8.0.4, 7.4.6, 7.2.11 и 6.2.20, а также в Valkey 8.1.4, 8.0.6 и 7.2.11. Проверить состояние новой версии пакета или подготовки исправления в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo, Arch, FreeBSD, OpenBSD и NetBSD. В качестве обходного пути защиты в СУБД можно отключить выполнение Lua-скриптов, запретив команды EVAL и EVALSHA через ACL.

Дополнительно можно отметить ещё три уязвимости, эксплуатируемые через Lua-скрипты и устранённые в последних версиях Redis и Valkey. Для обходной защиты от данных уязвимостей через ACL можно запретить семейства команд EVAL и FUNCTION.

  • CVE-2025-46817 - целочисленное переполнение в библиотечных Lua-функциях, потенциально позволяющее добиться выполнения своего кода на стороне сервера при запуске специально оформленных Lua-скриптов.
  • CVE-2025-46819 - ошибка, приводящая к чтению данных из области за пределами буфера при выполнении специально оформленного Lua-скрипта. Уязвимость может использоваться для аварийного завершения серверного процесса Redis.
  • CVE-2025-46818 - возможность выполнения команд в контексте другого пользователя СУБД при манипуляции LUA-объектами из специально оформленного Lua-скрипта.


  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Выпуск СУБД Redis 8.2
  3. OpenNews: Уязвимости в СУБД Redis и Valkey
  4. OpenNews: Сравнение производительности СУБД Valkey и Redis
  5. OpenNews: На соревновании Pwn2Own в Берлине продемонстрированы взломы RHEL, Firefox, Redis и VirtualBox
  6. OpenNews: Опубликован Valkey 8.1, форк СУБД Redis от Amazon, Google, Oracle и Ericsson
Автор новости: Асен Тотин
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64022-redis
Ключевые слова: redis, valkey, lua
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (29) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 08:25, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А говорили, с луа такого не случится, мол, это не питон.
     
     
  • 2.12, Аноним (12), 09:46, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дело не в самом языке Lua, а в Jit/Интерпретаторе встроенного LUA, коих бесчисленное множество.
     

  • 1.2, Константавр (ok), 08:52, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >Предоставляемый проектом Redis официальный образ Docker-контейнера настроен для доступа без аутентификации по умолчанию.

    Они же понимал, что никто не будет это настраивать? Заработало, не падает и ура, в продакшен!!!

     
     
  • 2.25, нах. (?), 10:52, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    там диавол в деталях - особенности редисового AUTH таковы, что познакомившись поближе ты и расхочешь его настраивать. Это кривая нашлепка, сделанная видимо в последний момент, по многочисленным просьбам трудящихся.

    Правильная настройка редиса - это изолированная сеть, где чужие не ходят, а не бесполезный auth.

    Ну тебя же не огорчает что у мемкэша его в принципе нет?

     

  • 1.3, Аноним (3), 08:55, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Уязвимость вызвана обращением к уже освобождённой памяти (use-after-free),
    > Проблема позволяет обойти sandbox-изоляцию

    Сишка настолько дыр... ОЙ! - мощный язык, что плевать ему на эти ваши сэндбоксы.

     
     
  • 2.4, Re4son (ok), 08:59, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    это как ругать экскаватор, а не экскаваторщика, за то, что он пока копал -- перебил водопровод.
     
     
  • 3.6, User (??), 09:23, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Тут скорее болгарка об одной ручке без защитного кожуха, с однокнопочным включением и покоцанным диском. Можно работать? Можно. Можно добиться результата, аналогичного использованию _нормального_ инструмента? Конечно.
    Но рано или поздно (Скорее - рано) даже самый суперчудомастер окажется в, гм, интересной ситуации. Виноват ли в этом такой вот инструмент - которым _можно_ добиваться желаемых результатов - ну я даже и не знаю. Тут каждый сам для себя решает - если организация за него с какими-нибудь "Пять шагов к безопасности" заранее не подумала.
     
     
  • 4.23, bOOster (ok), 10:35, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Болгарку так-же пользует либо дурак, либо знающий человек. Дурак само собой последствий использования болгарки без кожуха не представляет.
    Поэтому для недопрограмистских дурачков и появляются языки типа Раста - в которых особо думать о последствиях не нужно, по словам этих же недопрограммистов.
    Хотя выход за пределы массива это частая проблема, но далеко не самая проблемная в целом.
     
     
  • 5.24, Анонимусс (-), 10:45, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > для недопрограмистских дурачков

    Пока что "недопрограмистские дуpачки" на сишечке продолжают лепить дырени с выполнением произвольного кода. Причем это не зависит от проекта, вот в соседней новости про гимп такое же выполнение произвольного кода из-за луДших погромистов эвэр.

    > но далеко не самая проблемная в целом.

    Ну да, ну да))

    Linux Kernel
    cvedetails.com/product/47/Linux-Linux-Kernel.html?vendor_id=33
    Memory Corruption 2735
    Overflow 365
    Все остальные в сумме - 51 :)
    Да, "не самая проблемная"))

     
     
  • 6.26, bOOster (ok), 10:54, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да, ну да))
    > Linux Kernel
    > cvedetails.com/product/47/Linux-Linux-Kernel.html?vendor_id=33
    > Memory Corruption 2735
    > Overflow 365
    > Все остальные в сумме - 51 :)
    > Да, "не самая проблемная"))

    Ты отлично показал свою недопрограммистскую сущность в целом. Ориентироваться на количество багов. А не их актуальное влияние на результат выполнения кода и его безопасность.
    90% всего этого "счастья" выявлено посредством аудита, и использовать многие эти уязвимости в реальности нельзя. Они потенциальные.

     
  • 5.28, User (??), 10:59, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Болгарку так-же пользует либо дурак, либо знающий человек. Дурак само собой последствий
    > использования болгарки без кожуха не представляет.
    > Поэтому для недопрограмистских дурачков и появляются языки типа Раста - в которых
    > особо думать о последствиях не нужно, по словам этих же недопрограммистов.
    > Хотя выход за пределы массива это частая проблема, но далеко не самая
    > проблемная в целом.

    О! Бывалый? )
    А тут ниже жаловались, что повывелись НАСТОЯЩИЕ-то программисты - а вот гляди-ж ты - на месте. Хоть болгаркой без кожуха, хоть сишкой хеллврот (Но тут уже возможны варианты, если промпт неправильный...), хоть комментом по супостату!
    ... пока такие люди в стране советской есть!(Ц)

     
  • 3.9, Аноним (3), 09:42, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > это как ругать экскаватор, а не экскаваторщика, за то, что он пока копал -- перебил водопровод.

    Новые перлы от местных мастеров аналогий. 🤦 А чего про забивание гвоздей микроскопом не упомянули?

     
  • 3.22, Аноним (22), 10:25, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > это как ругать экскаватор, а не экскаваторщика, за то, что он пока копал -- перебил водопровод.

    Старое доброе "чтобы не было ошибок - не делайте ошибки".

     

  • 1.5, Аноним (5), 09:10, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Уязвимость вызвана обращением к уже освобождённой памяти (use-after-free)

    Хм... Звучит как... Ну вы понели. Как характерная особенность одного хорошо известного всем языка. В программах на этом языке уязвимости такого рода выявляют по пачке в минуту. Любопытный факт: аббревиатура CVE уже включает в себя полное название этого языка, и даже две лишние буквы остаются. А вот еще любопытный факт: уже 50 лет подряд говорят, что язык не виноват, просто народ не тот^W^W^W программисты ненастоящие. Вот уж да: за 50 лет ни одного настоящего программиста не нашлось.

     
     
  • 2.7, User (??), 09:25, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но-но-но! Подождите часок - и тут целый перечень НАСТОЯЩИХ наберется.
     
  • 2.8, Аноним (8), 09:41, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В таком случае непонятно почему безопасные языки, типа ржавчины, компилируется в еще менее безопасный чем Си язык ассемблера.
     
     
  • 3.13, Аноним (12), 09:49, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если так думать - то ещё ниже уровнем электроны так вообще небезопасны, убить могут. АдОвайте код ментально у себя в голове запускать, так же безопасно...
     
  • 3.14, Аноним (3), 09:50, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > почему безопасные языки, типа ржавчины, компилируется в еще менее безопасный чем Си язык ассемблера

    Где ты эту чушь вичитал? У Раста бэкенд - LLVM, и именно его IR, а не "язык ассемблера" переводиться в машинные коды.

    > В таком случае непонятно

    Даже если бы там был конкретно ассемблер в качестве промежуточного представления - фундаментальное различие было бы в том, что он не писался бы вручую. Что тут непонятного?

     
     
  • 4.18, Аноним (8), 10:03, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > У Раста бэкенд - LLVM

    Он же на небезопасном языке написан?

     
     
  • 5.19, Аноним (3), 10:06, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да, как и ядро ОС. 🫡
     
  • 2.10, похнапоха. (?), 09:45, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну если это такой плохой ЯП, что ты даже боишься упоминать его название, как ботоксный дед имя одного ныне покойного деятеля, тогда почему use-after-free чиниться не сменой ЯП, а просто переписыванием кода на этом же самом ЯП? Из миллиардов строк текста, написанных на этом ЯП - use-after-free появляется не везде и не всегда, то есть дело не в ЯП, а в людях!
     
     
  • 3.16, Аноним (3), 09:56, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > почему use-after-free чиниться не сменой ЯП, а просто переписыванием кода на этом же самом ЯП?

    Очередной горе-эксперт не видит разницы между борьбой с симптомами и борьбой с самой болезнью. Сменой ЯП оно не просто чинится - оно устраняется на корню.

     
  • 3.21, Аноним (22), 10:23, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Из миллиардов строк текста, написанных на этом ЯП - use-after-free появляется не везде и не всегда, то есть дело не в ЯП, а в людях!

    Нет, дело именно в ЯП. Потому что если дать ТЕМ ЖЕ людям нормальный язык, что use-after-free внезапно, больше появляется.

     
  • 2.11, anonymous (??), 09:45, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вот уж да: за 50 лет ни одного настоящего программиста не нашлось.

    А как же ваше любимые языки с управляемой памятью - java или python. Они ведь на си написаны. Если вы считаете что ни один программист не может справиться с си, и ошибки - неустранимое свойство самого языка, то почему вы призываете использовать другие языки, написанные на си.

     
     
  • 3.15, Аноним (12), 09:56, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Лично я призываю использовать C#, у него давно ничего под капотом него кроме самого C#.
     
  • 3.17, Аноним (3), 09:58, 09/10/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.29, Анонисссм (?), 11:00, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Вот уж да: за 50 лет ни одного настоящего программиста не нашлось.

    я тебя плюсанул и поржал, спасибо. Но тут ты неправ, есть же всякие postfix-ы и qmail-ы

     

  • 1.20, бочок (??), 10:06, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > score 10 из 10
    > для эксплуатации уязвимости атакующий должен иметь возможность отправки запросов к СУБД Redis, допускающей выполнение пользовательских Lua-скриптов.

    Тьфу...

     
  • 1.27, Аноним (-), 10:58, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Воистинну, "C in CVE stands for C language"
    Дыpяшка делает дыpявым все к чему имеет хоть какое-то отношение.

    Вот узявимости "в LUA":
    CVE-2025-49844 - deps/lua/src/lparser.c
    CVE-2025-46817 - ‎deps/lua/src/lbaselib.c
    CVE-2025-46819 - deps/lua/src/llex.c
    CVE-2025-46818 - src/config.c, src/function_lua.c, ..., ну вы поняли :)

    А какие отличные были фиксы!
    github.com/redis/redis/commit/fc9abc775e308374f667fdf3e723ef4b7eb0e3ca

    - if (cast(unsigned int, key-1) < cast(unsigned int, t->sizearray))
    + if (1 <= key && key <= t->sizearray)

    Опять бедняги не смогли правильно посчитать размер буфера.
    Причем они выше еще с типами нафакапили. Что не удивительно, ведь этот недоязык просто молча кастит инты туда-сюда.

    github.com/redis/redis/commit/3a1624da2449ac3dbfc4bdaed43adf77a0b7bfba

    - return (ls->current == s) ? count : (-count) - 1;
    + return (ls->current == s) ? count + 2 : (count == 0) ? 1 : 0;
    И опять не смогли! Да что же такое?!

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру