Компания Valve устранила проблему HTML-инъекций в CS2. Ошибка уже активно применялась для внедрения в игру изображений, которые могли использоваться для определения IP-адресов других игроков.
Изначально эта уязвимость считалась более серьезной XSS-проблемой, которая позволяет выполнять JavaScript-код в клиенте. Однако анализ показал, что это баг представляет собой лишь HTML-инъекцию, позволяющий внедрять в игру изображения.
Дело в том, что в Counter-Strike 2 применяется Panorama UI от Valve, который использует CSS, HTML и JavaScript в своей работе. Это позволяет настраивать поля ввода таким образом, чтобы они принимали HTML и не преобразовывали его. То есть, если поле поддерживает HTML, то любой введенный в него текст будет рендерится как HTML.
В итоге пользователи Counter-Strike стали сообщать о том, что некоторые злоупотребляют проблемой HTML-инъекций для внедрения изображений в панель голосования, предназначенную для исключения игроков из игры.
Хотя в основном уязвимость использовалась ради безобидного развлечения, нашлись те, кто начал применять баг для раскрытия IP-адресов других игроков, участвующих в матче. Это осуществлялось с помощью тега <img> для удаленного скрипта-логгера IP-адресов, который фиксировал IP всех игроков, которые видели голосование.
В итоге полученные IP-адреса могли использоваться, например, для запуска DDoS-атак на игроков, чтобы вынудить их отключиться от матча.
Разработчики Valve выпустили небольшой патч размером 7 МБ, который устраняет проблему: теперь любой введенный HTML преобразуется в обычную строку. Так, после установки этого исправления HTML-код будет отображаться в виде обычной строки, как показано скриншоте ниже.
Стоит отметить, что аналогичный баг в Panorama UI Counter-Strike: Global Offensive был устранен в 2019 году. Тогда уязвимость так же позволяла внедрять HTML в голосования. Однако в этом случае ошибку можно было использовать и для запуска JavaScript, что делало ее полноценной XSS-уязвимостью, которая могла использоваться для удаленного выполнения команд.