Xakep #305. Многошаговые SQL-инъекции
Украинский ИБ-исследователь Артем Московский рассказал о баге, связанном с платформой Steamworks, предназначенной для разработчиков, которые работают со Steam. Уязвимость позволяла узнать все ключи активации (CD-key) для любой игры размещенной в Steam.
Исследователь обнаружил проблему в API по адресу partner.steamgames.com/partnercdkeys/assignkeys/. Данный API дает разработчикам и другим связанным сторонам доступ к CD-key игры, с помощью которых пользователи могут активировать продукты в Steam.
Данный API доступен и для простого аккаунта Steam и работает с рядом параметров, наиболее важными из которых являются appid (ID игры), keyid (идентификатор набора CD-key), а также keycount (отвечает за количество ключей, которые Steam должен вернуть в наборе CD-key).
В нормальных обстоятельствах попытка извлечения ключей активации для игры, которой пользователь не владеет, должна приводить лишь к ошибке, которую возвращает данный API. Но Московский обнаружил, что установив параметр keycount на значение «0», он может обойти ограничения и извлечь файл со всеми ключами активации для любой игры.
Исследователь рассказал изданию ZDNet, что во время изучения проблемы он мог сгенерировать и загрузить более 36 000 CD-key для игры Portal 2. Хуже того, вскоре он осознал, что потенциальный атакующий может попросту перебирать ID различных игр в Steam и последовательно скачивать все ключи активации, ведь подобрать параметры appid и keyid совсем нетрудно.
Еще в августе текущего года специалист сообщил об уязвимости инженерам Valve через официальную bug bounty программу на HackerOne. Баг был исправлен спустя считанные дни, исследователь получил вознаграждение в размере 20 000 долларов, но официально рассказать о своей находке ему разрешили лишь недавно.
Нужно отметить, что это одно из крупнейших вознаграждений, выплаченных Valve, но далеко не первый крупный баг, найденный Артемом. Летом текущего года исследователь обнаружил, что Steamworks уязвим перед SQL-инъекциями, заработав на этом 25 000 долларов. Кроме того, Московский признался журналистам, что до этого он находил уязвимости в майнинговом пуле ViaBTC (вознаграждение составило 18 000 долларов), а также в продукции Samsung (вознаграждение составило 13 300 долларов).