Обеспечение безопасности «Интернета вещей» — это работа по двум направлениям: поиск багов и, что значительно важнее, их устранение. ИБ-команда Talos из Cisco обнаружила и приватно раскрыла опасную и легко эксплуатируемую на стороне клиента уязвимость в MiniUPnP. Брешь была пропатчена в минувшем сентябре.

Однако на настоящий момент доподлинно неизвестно, сколько патчей было в действительности установлено вендорами. Неясно также, все ли админы знают о наличии заплатки и уже ее применили.

Уязвимость CVE-2015-6031 в библиотеке MiniUPnP, облегчающей локальный обмен между устройствами за сетевым экраном, относится к классу buffer overflow — переполнение буфера. Успешный эксплойт позволяет атакующему удаленно исполнить код на устройстве и, возможно, расширить доступ в пределах локальной сети.

«MiniUPnP — второй по популярности SDK для UPnP после аналогичного комплекта Intel, — комментирует Крейг Вильямс (Craig Williams), менеджер Cisco Talos по пропаганде интернет-безопасности. — Подсчитать, сколько патчей уже установлено, не представляется возможным, однако мы знаем, что многие [устройства] уязвимы, и это нас сильно тревожит. Остается надеяться, что люди это осознают и пропатчат свои устройства либо попросят заплатку у вендора».

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

В блог-записи Cisco Talos отмечено, что уязвимость в MiniUPnP кроется в коде для парсинга XML и проявляется при выполнении функции IGDstartelt. Исследователи также создали рабочий эксплойт для Bitcoin-qt, дефолтного клиента для генерации биткойнов. Проведение такой атаки предполагает наличие в локальной сети подставного UPnP-сервера, способного возвращать файл XML с «чрезмерно длинными именами элементов».

Созданный Cisco эксплойт позволяет обойти такое превентивное средство, как Stack Smashing Protection (SSP, защита от разбиения стека). SSP защищает уязвимые буферы с помощью специальных куки, которые используются как индикатор. Такие куки — непременный элемент сборок UNIX и Linux, Microsoft тоже использует аналогичную защиту.

«Эти куки предназначены для предотвращения эксплуатации переполнения стекового буфера», — поясняет Рич Джонсон (Rich Johnson), руководитель исследований Cisco Talos. При успешной атаке на переполнение буфера злоумышленник может узнать, где произойдет следующее исполнение кода на стеке, и направить усилия в нужное место. «SSP разместит там куки и применит шифрование, с тем чтобы атакующий не смог туда добраться, — продолжает исследователь. — Таким образом, последующее значение они не смогут угадать».

Со слов Джонсона, атака Cisco против Bitcoin-qt, точнее, против libc в Linux использует тот факт, что SSP не сразу завершает процессы, а сначала исполняет некий код, чтобы предупредить пользователя и зафиксировать в логах крэш.

Пути обхода SSP ранее предлагали и другие исследователи. «В библиографии мы указали работы наших предшественников на тему обхода, — подтвердил Джонсон. — Этот способ новый, он ориентирован на многопоточные приложения. Множество приложений, таких как OpenOffice, браузеры, клиенты Bitcoin, являются многопоточными. В ходе исследования нам удалось найти новый подход, позволяющий применять многопоточные обходы к этой типовой защите».

Эксперты Cisco надеются, что их PoC-эксплойт поможет повысить осведомленность об уязвимости в MiniUPnP и наличии патча. Эта информация особенно важна для тех, кто распоряжается встроенными устройствами, в частности роутерами, которые редко снабжаются средствами автоматического обновления или оповещения о присутствии серьезных уязвимостей.

«Многие вообще не в курсе, что запущено на их встроенном устройстве, — сетует Вильямс. — Доставка патчей пользователям целиком зависит от вендора. Эта проблема особенно остро ощущается в случае с IoT».

Категории: Уязвимости