Всем доброго времени суток. Месяц назад я получил блокировку сообщества (aka запрет всего) за исследование (не эксплуатацию!) уязвимости, которое было почти за год до этого. На фоне обсуждения ситуации с Kaby мне захотелось поделиться и своей историей.
Предыстория
Около года назад один хороший друг сообщил мне, что нашел в предметах мастерской XSS уязвимость (прим. XSS уязвимость — это уязвимость, позволяющая внедрить ваш собственный клиентский JS код в страницу, и как следствие выполнить любое действие или порядок действий от имени пользователя, открывшего уязвимую страницу. Будь то смена никнейма или покупка предмета на торговой площадке). Исследование безопасности — одно из моих любимых занятий, поэтому я сразу же пошел пытаться обнаружить где именно она была. Спустя несколько минут я нашел проблемное место и отчитался другу. Он попросил помочь ее раскрутить (достать дополнительную информацию об особенностях и т.д., обычно представителями команд разработчиков подобное поощряется).
У Steam, за что ему отдельный плюс, стоит запрет на контент с внешних доменов, поэтому загрузить скрипт со своего сервера не представлялось возможным. Отсюда родилась необходимость в поиске обхода лимита символов в оригинальном поле. После решения этой проблемы я проверил взаимодействие с самим Steam (сделал простой скрипт, оставлявший в моем профиле +rep), проверил его на самом себе, после чего удалил все предметы мастерской, в которых проходило тестирование. Стоит отметить, что и до этого они все были скрыты, но я все же предпочел их полностью удалить.
Всю информацию я отправил другу (он нашел проблемное место первым, а значит репортить — его привилегия). Спустя несколько дней я спросил его, зарепортил ли он это. Он ответил что нет, потому что у стима нет адекватной Bug Bounty программы и отсутствуют нормальные каналы для репорта уязвимостей (поддержка не в счет, многими уже проверена ее некомпетентность в том числе и в этом вопросе). Я предложил ему написать на erics@valvesoftware.com, так как у меня самого прежде, хоть и с переменным успехом, был опыт в получении фидбека и фиксах некоторый уязвимостей. Он в итоге, как и я, об этом кейсе просто забыл.
Последствия. Развитие истории спустя год.
Я ближе к лету стал реже заходить в стим, начал чаще заниматься полезными вещами. В двадцатых числах октября я в очередной раз зашел поиграть с одним знакомым в PUBG и обнаружил блокировку сообщества на 20 лет (до января 2038 года). Первое, что вызвала у меня эта новость — недоумение, учитывая что в последние полгода я не проявлял вообще никакой активности, разве что заходил поиграть во что-нибудь два раза в неделю. Но недоумение длилось не долго, пока не обнаружил что профиль того друга тоже получил блокировку сообщества.
Разъяснение в поддержке классически-бесполезное. На вопрос о том, в чем собственно было нарушение (про свое предположение о блокировке за поиск уязвимости я им не сообщал), мне ответили, что не могут этого сказать по каким-то внутренним причинам. На уточняющий вопрос «а пункт правил хотя-бы какой?» мне ответили, что сообщили все что нужно (будто до обращения в поддержку я не знал что забанен за «какое то нарушение») и закрыли вопрос.
Затем я написал на почту разработчикам, пояснив ситуацию. (Чтобы наверняка, отправил на все известные мне адреса, включая gaben и security (к слову, первый, в отличие от второго, иногда даже отвечает)). Из за слова «ban» в заголовке его вполне ожидаемо никто не читал. Пришлось пойти на хитрость и выдать письмо за репорт той самой уязвимости, где в определенном моменте я уточняю что за исследование этой самой уязвимости, выполненное год назад, я получил блокировку сейчас. Уловка сработала, и два разработчика прочитали письмо, один из них даже ответил.
Скорее всего под вредоносным JS кодом Альфред упоминает скрипт, добавляющий мне в профиль +rep (причина его существования описана выше). Спустя пару минут размышлений я вспомнил, что за несколько дней до получения блокировки, мне в Steam приходило уведомление «+1 комментарий в вашем профиле», причем самого комментария не было. Просто так мне давно никто не писал, поэтому я предположил, что кто-то из разработчиков или модераторов сообщества случайно наткнулся на удаленный(!) предмет мастерской (а они могут их смотреть), и у него выполнился тот скрипт.
Я описал возможную причину в ответном письме, также указал, что если бы моей целью действительно была бы эксплуатация уязвимости, я бы просто сделал скрипт на покупку моих предметов с торговой площадки по завышенным ценам, и делал бы это массово. Но, к сожалению, уже второй день никто не отвечает. (И, вероятнее всего, никто моего ответа и не читал.)
Среди возможных причин, по которым я получил бан, помимо вышеупомянутого предположения можно выделить вероятность того, что за такой промежуток времени уязвимость нашел кто-то еще, и не исключено, что этот кто-то использовал ее во вред. В таком случае я и мой друг могли попасть под автоматический алгоритм блокировки.
И что дальше?
Ну во первых, стоит предупредить пользователей Steam, что не только эксплуатация, но и поиск уязвимостей вреден для здоровья и сохранности вашего аккаунта. Если в случае с пользователем Kaby есть заявления о том, что тот действительно использовал найденные им уязвимости во вред, то в нашем случае такого сказать не получится. XSS практически невозможно эксплуатировать незаметно, и подобный кейс уже давно стал бы общеизвестным, а бан бы я получил еще год назад.
Во вторых, стоит напомнить представителям Steam, что даже у PornHub и Imgur есть Bug Bounty программы, и платят White-Hat исследователям они деньгами (кто-то серьёзными, кто-то символическими), а не перманентными банами. С таким подходом, как у Steam, каждая мелочь из символических 100$ превращается в огромный инфоповод. Порой даже каждый третий узнает об уязвимости, и на некоторое время платформа становится неюзабельной. Что забавно, в таких ситуациях никого не блокируют (не ко всем подряд же применять санкции). Вспомните смену пароля любому пользователю или последние три массовых дефейса разделов сайта в результате использования XSS всякими школьниками (прим. Дефейс — изменение дизайна и содержания сайта (проигрывание +36 dB Димона) ради лулзов или с целью рекламы, чаще всего делается через XSS. Это к слову о том, что XSS почти никогда не получается использовать незаметно. Стоит кому-то пронюхать уязвимое поле, и тут же начинается повсеместная эксплуатация уязвимости в развлекательных целях).
Ну и в третьих, мне дорог мой аккаунт. Я считаю данную блокировку не очень обоснованной. Если вам интересна развязка истории — /id/umfc
Спасибо за прочтение и уделенное внимание.
Источник: DTF