{ "author_name": "Сергей Романович", "author_type": "self", "tags": [], "comments": 56, "likes": 56, "favorites": 7, "is_advertisement": false, "section_name": "blog", "id": "12706", "is_wide": "" }
Сергей Романович
8 666
Блоги

Еще один пользователь Steam получил бан на 20 лет за обнаружение уязвимости сервиса

Поделиться

В избранное

В избранном

Всем доброго времени суток. Месяц назад я получил блокировку сообщества (aka запрет всего) за исследование (не эксплуатацию!) уязвимости, которое было почти за год до этого. На фоне обсуждения ситуации с Kaby мне захотелось поделиться и своей историей.

Предыстория

Около года назад один хороший друг сообщил мне, что нашел в предметах мастерской XSS уязвимость (прим. XSS уязвимость - это уязвимость, позволяющая внедрить ваш собственный клиентский JS код в страницу, и как следствие выполнить любое действие или порядок действий от имени пользователя, открывшего уязвимую страницу. Будь то смена никнейма или покупка предмета на торговой площадке). Исследование безопасности - одно из моих любимых занятий, поэтому я сразу же пошел пытаться обнаружить где именно она была. Спустя несколько минут я нашел проблемное место и отчитался другу. Он попросил помочь ее раскрутить (достать дополнительную информацию об особенностях и т.д., обычно представителями команд разработчиков подобное поощряется).

У Steam, за что ему отдельный плюс, стоит запрет на контент с внешних доменов, поэтому загрузить скрипт со своего сервера не представлялось возможным. Отсюда родилась необходимость в поиске обхода лимита символов в оригинальном поле. После решения этой проблемы я проверил взаимодействие с самим Steam (сделал простой скрипт, оставлявший в моем профиле +rep), проверил его на самом себе, после чего удалил все предметы мастерской, в которых проходило тестирование. Стоит отметить, что и до этого они все были скрыты, но я все же предпочел их полностью удалить.

Всю информацию я отправил другу (он нашел проблемное место первым, а значит репортить - его привилегия). Спустя несколько дней я спросил его, зарепортил ли он это. Он ответил что нет, потому что у стима нет адекватной Bug Bounty программы и отсутствуют нормальные каналы для репорта уязвимостей (поддержка не в счет, многими уже проверена ее некомпетентность в том числе и в этом вопросе). Я предложил ему написать на erics@valvesoftware.com, так как у меня самого прежде, хоть и с переменным успехом, был опыт в получении фидбека и фиксах некоторый уязвимостей. Он в итоге, как и я, об этом кейсе просто забыл.

Последствия. Развитие истории спустя год.

Я ближе к лету стал реже заходить в стим, начал чаще заниматься полезными вещами. В двадцатых числах октября я в очередной раз зашел поиграть с одним знакомым в PUBG и обнаружил блокировку сообщества на 20 лет (до января 2038 года). Первое, что вызвала у меня эта новость - недоумение, учитывая что в последние полгода я не проявлял вообще никакой активности, разве что заходил поиграть во что-нибудь два раза в неделю. Но недоумение длилось не долго, пока не обнаружил что профиль того друга тоже получил блокировку сообщества.

Разъяснение в поддержке классически-бесполезное. На вопрос о том, в чем собственно было нарушение (про свое предположение о блокировке за поиск уязвимости я им не сообщал), мне ответили, что не могут этого сказать по каким-то внутренним причинам. На уточняющий вопрос "а пункт правил хотя-бы какой?" мне ответили, что сообщили все что нужно (будто до обращения в поддержку я не знал что забанен за "какое то нарушение") и закрыли вопрос.

По моему личному опыту общения с технической поддержкой разных сайтов (а их было много), поддержка Steam - самая роботизированная и бесполезная. Я с трудом выбил ответ не шаблоном (надеюсь), пусть и не более информативный.

Затем я написал на почту разработчикам, пояснив ситуацию. (Чтобы наверняка, отправил на все известные мне адреса, включая gaben и security (к слову, первый, в отличие от второго, иногда даже отвечает)). Из за слова "ban" в заголовке его вполне ожидаемо никто не читал. Пришлось пойти на хитрость и выдать письмо за репорт той самой уязвимости, где в определенном моменте я уточняю что за исследование этой самой уязвимости, выполненное год назад, я получил блокировку сейчас. Уловка сработала, и два разработчика прочитали письмо, один из них даже ответил.

«Привет, мы не смогли найти ваш репорт, и JS код, который вы встроили в предмет мастерской, был одновременно (разрушительным?) и вредоносным, поведение, не очень похожее на поведение исследователя безопасности. Мы не уберем блокировку.»

Скорее всего под вредоносным JS кодом Альфред упоминает скрипт, добавляющий мне в профиль +rep (причина его существования описана выше). Спустя пару минут размышлений я вспомнил, что за несколько дней до получения блокировки, мне в Steam приходило уведомление "+1 комментарий в вашем профиле", причем самого комментария не было. Просто так мне давно никто не писал, поэтому я предположил, что кто-то из разработчиков или модераторов сообщества случайно наткнулся на удаленный(!) предмет мастерской (а они могут их смотреть), и у него выполнился тот скрипт.

Я описал возможную причину в ответном письме, также указал, что если бы моей целью действительно была бы эксплуатация уязвимости, я бы просто сделал скрипт на покупку моих предметов с торговой площадки по завышенным ценам, и делал бы это массово. Но, к сожалению, уже второй день никто не отвечает. (И, вероятнее всего, никто моего ответа и не читал.)

Среди возможных причин, по которым я получил бан, помимо вышеупомянутого предположения можно выделить вероятность того, что за такой промежуток времени уязвимость нашел кто-то еще, и не исключено, что этот кто-то использовал ее во вред. В таком случае я и мой друг могли попасть под автоматический алгоритм блокировки.

И что дальше?

Ну во первых, стоит предупредить пользователей Steam, что не только эксплуатация, но и поиск уязвимостей вреден для здоровья и сохранности вашего аккаунта. Если в случае с пользователем Kaby есть заявления о том, что тот действительно использовал найденные им уязвимости во вред, то в нашем случае такого сказать не получится. XSS практически невозможно эксплуатировать незаметно, и подобный кейс уже давно стал бы общеизвестным, а бан бы я получил еще год назад.

Во вторых, стоит напомнить представителям Steam, что даже у PornHub и Imgur есть Bug Bounty программы, и платят White-Hat исследователям они деньгами (кто-то серьёзными, кто-то символическими), а не перманентными банами. С таким подходом, как у Steam, каждая мелочь из символических 100$ превращается в огромный инфоповод. Порой даже каждый третий узнает об уязвимости, и на некоторое время платформа становится неюзабельной. Что забавно, в таких ситуациях никого не блокируют (не ко всем подряд же применять санкции). Вспомните смену пароля любому пользователю или последние три массовых дефейса разделов сайта в результате использования XSS всякими школьниками (прим. Дефейс - изменение дизайна и содержания сайта (проигрывание +36 dB Димона) ради лулзов или с целью рекламы, чаще всего делается через XSS. Это к слову о том, что XSS почти никогда не получается использовать незаметно. Стоит кому-то пронюхать уязвимое поле, и тут же начинается повсеместная эксплуатация уязвимости в развлекательных целях).

Ну и в третьих, мне дорог мой аккаунт. Я считаю данную блокировку не очень обоснованной. Если вам интересна развязка истории - /id/umfc

Спасибо за прочтение и уделенное внимание.

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Узнавайте первым важные новости

Подписаться
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } } ]