Хакер #305. Многошаговые SQL-инъекции
Специалист компании Context Information Security Том Корт (Tom Court) обнаружил опасный баг во всех версиях клиента Steam, позволявший выполнить вредоносный код и перехватить контроль над компьютерами 125 миллионов пользователей игровой платформы. Как оказалось, проблема существовала в Steam порядка 10 лет.
В блоге компании исследователь рассказывает, что уязвимость могла бы лечь в основу ряда эффективных эксплоитов и атак, так как проблема позволяла достаточно легко ею воспользоваться. Во всяком случае, так было до лета 2017 года, пока разработчики Valve не добавили в десктопные клиенты ASLR-защиту. После этого атака на обнаруженную Кортом уязвимость скорее вызвала бы отказ в работе клиента Steam.
Корт описывает проблему, как RCE-уязвимость (remote code execution, «удаленное выполнение произвольного кода»), эксплуатировать которую было возможно посредством сетевых запросов, без доступа к системе жертвы. В корне проблемы лежит банальное переполнение буфера в одной из многочисленных внутренних библиотек Steam. Если точнее, уязвимость скрывалась в той части кода, которая отвечала за работу с фрагментированной датаграммой UPD и ее дезассемблирование.
Фактически все, что требовалось от атакующего, это отправить вредоносный UDP-пакет уязвимому клиенту Steam, что приводило к срабатыванию бага и позволяло выполнить на машине жертвы произвольный код.
Исследователь пишет, что даже после добавления ASLR-защиты опасность все равно сохранялась, так как проблему можно использовать в сочетании с утечками данных, которые раскрывают информацию об адресах памяти приложения Steam.
Корт уведомил разработчиков Valve о проблеме еще в феврале 2018 года, и патч для бета-версии клиента был выпущен уже через 12 часов после этого. Финальная версия исправления стала доступна всем пользователям 4 апреля 2018 года. Выждав почти два месяца, и дав пользователям Steam возможность установить обновления, Корт опубликовал детальный анализ обнаруженной проблемы. Видеоролик ниже демонстрирует эксплуатацию бага.