
Исследователи обнаружили в языке Squirrel уязвимость, позволяющую выполнять чтение данных вне выделенной области памяти (out-of-bounds read). Это потенциально дает возможность злоумышленникам выходить за границы песочницы и получать полный доступ к хосту.
Squirrel – это открытый объектно-ориентированный язык программирования, на котором пишут скрипты для видеоигр, а также IoT устройств и платформ обработки распределенных транзакций типа Enduro/X.
Данный вектор атаки становится актуален, когда игровая библиотека Squirrel Engine используется для выполнения непроверенного кода. Эта уязвимость получила код CVE-2021-41556 и касается стабильных релизов Squirrel 3.x и 2.x.
Выявили ее сотрудники SonarSource, опубликовав соответствующий пост во вторник 19 октября. В нем исследователи Саймон Сканнел и Никлас Брайтфельд предположили реальный сценарий, в котором злоумышленник может встроить вредоносный скрипт Squirrel в одну из игровых карт сообщества, например для Counter Strike: Global Offensive, после чего распространить ее через доверенный репозиторий модов Steam Workshop.
«Когда владелец сервера скачивает и устанавливает такую зараженную карту, встроенный скрипт выполняется, выходит за рамки VM и перехватывает управление этим сервером». – пишут исследователи. – «Отсюда уже становится возможной эксплуатация и других уязвимостей внутри стека сетевых протоколов, нацеленных на подключающихся к серверу игроков».
Технически обнаруженная дыра представляет собой возможность «пересечения границы доступа посредством путаницы индексов» при определении классов Squirrel, чем можно воспользоваться для перехвата потока управления программы и получения полного контроля над Squirrel VM.
Мейнтейнер репозитория Squirrel подтвердил наличие этой проблемы 10 августа 2021 года, а 16 сентября отправил коммит с необходимым патчем. Тем не менее, внесенные изменения не были включены в новый стабильный релиз, последняя стабильная версия которого (v3.1) вышла 27 марта 2016 года и до сих пор содержит, в том числе другие ранее обнаруженные дыры.
В связи с этим мейнтейнерам, использующим в своих проектах Squirrel, рекомендуется пересобрать последнюю его версию из исходного кода, дабы защитить пользователей от потенциальных атак.
