Письмо от HackerOne с уведомлением, что Valve отстранила Василия Кравца от участия в программе bug bounty

Независимый исследователь в области информационной безопасности Василий Кравец из Москвы (xi-tauw) попал в центр большой истории, которая в неприглядном свете выставила компанию Valve. Та отказалась выплачивать Василию вознаграждение за первую уязвимость по программе HackerOne, но он её всё-таки разгласил. А после публикации второй 0day для Steam компания признала свою ошибку — и вчера внесла изменения в правила программы bug bounty.

Это большая победа здравого смысла над бюрократией. Осталось только заплатить Василию и разблокировать его аккаунт.

Всё началось 7 августа 2019 года, когда xi-tauw опубликовал статью об уязвимости с локальным повышением привилегий в клиенте Steam. Как и положено, он заблаговременно уведомил Valve. Однако компания ничего ему не ответила. А через некоторое время платформа HackerOne, которая принимает отчёты и обрабатывает платежи в пользу хакеров за найденные уязвимости, прислала Василию большое письмо с уведомлением, что Valve отстранила его от участия в программе.

Сама уязвимость была технически простой: здесь Василий цитирует свою статью на Хабре, где описан формат SDDL (Security Descriptor Definition Language).

Для клиента Steam строка SDDL выглядит так:

O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)

Самая интересная часть (A;;RPWP;;;BU) означает, что любой пользователь из группы Users имеет право запускать или останавливать сервис. Василий внимательно изучил, какие разрешения клиент прописывает в реестре Windows. Оказалось, что для раздела HKLM\SOFTWARE\Wow6432Node\Valve\Steam явно указан Full control для группы Users, и эти разрешения наследуются всеми подключами в разделе и их подключами тоже. Оставалось только создать симлинк в подразделе — и убедиться, что у него есть полные права:

(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)

Имея доступ ко всему реестру из подраздела реестра Steam, несложно превратить эту уязвимость в полное повышение привилегий, говорит специалист.

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

Уведомление Valve


Пришло время уведомить Valve. «Тут меня ждала первая неожиданность, — пишет Кравец. — Прежде чем передавать уязвимость непосредственно в Valve, мне нужно было сначала убедить hackerone staff в том, что у меня действительно отчет об уязвимости, так как Valve используют функцию „Managed by HackerOne”. Мне не жалко — у меня PoC, который вызывает консоль от имени NT AUTHORITY\SYSTEM — доказательства налицо. И я получаю отказ в отчёте. Причиной указывается, что мой отчет вне скоупа исследований, поскольку „атака требует возможности располагать файлы в произвольных путях файловой системы”. Моя реакция: „У меня даже нет ни одной операции с файловой системой, но отказ по такой причине, серьезно?”. Пишу комментарий об этом и приходит другой сотрудник, который всё же берётся проверять уязвимость. Подтверждает её и передает Valve».

Однако через некоторое время отчёт снова отвергли. Причины: «Attacks that require the ability to drop files in arbitrary locations on the user's filesystem» и «Attacks that require physical access to the user’s device» (атака требует физический доступ к устройству пользователя). Оказалось, что атаки на повышение привилегий попросту не входят в программу выплаты вознаграждений Valve на платформе Steam.

В связи с этим через 45 дней с момента отчета Кравец публично раскрыл детали уязвимости — а в ответ получил бан и запрет на участие в программе bug bounty.

Российского исследователя поддержал ещё один известный специалист по безопасности Мэтт Нельсон. Он написал, что зарепортил точно такую же уязвимость, и тоже получил отказ. Нельсон также открыл свой PoC.

Второй 0day


20 августа Valve забанила Василия в своей программе на HackerOne, но это его не остановило — и он выложил второй 0day для клиента Steam, тоже с повышением привилегий.

Он написал на Хабре, что ситуация у Valve такая же плачевная, как и раньше: «Последнее обновление, которое было призвано устранить проблему, легко обходится и уязвимость все ещё актуальна».

Второй 0day тоже позволяет любой программе на компьютере выполнить любой код с максимальными привилегиями, воспользовавшись брешью в клиенте Steam. Общее описание эксплуатации уязвимости довольно несложно и состоит из трёх шагов, пишет xi-tauw:

  1. Подготавливаем окружение для эксплуатации (целых два способа на выбор, используя разные недочеты безопасности).
  2. Заставляем Steam скопировать и запустить нашу dll.
  3. Dll должна соответствовать небольшим требованиям.

После публикации второй 0day история получила ещё более широкий резонанс, а компания Valve опять подверглась обструкции за то, что не включает повышение привилегий в свою программу выплаты уязвимостей. Судя по отсутствию изменений в клиенте Steam, компания как будто вообще не рассматривает несанкционированное повышение привилегий в качестве легитимной уязвимости.

Общественность особенно возмутилось баном исследователя, которому компания словно пытается заткнуть рот: «Это абсолютное нарушение стандартной практики Международной организации по стандартизации (ISO), — комментирует Кэти Муссурис (Katie Moussouris), основатель и исполнительный директор Luta Security, — и запрет сообщать о дальнейших проблемах просто безответственный по отношению к пользователям, которые в противном случае выигрывают от продолжения исследований. Нормы раскрытия уязвимостей искажаются платформами, которые ставят прибыль выше людей».

Valve признала ошибку




Вчера компания Valve опубликовала заявление и признала, что ошибочно отвергла отчёты исследователя о багах в своём программном обеспечении: «Наши правила программы HackerOne должны были отфильтровать только сообщения, что Steam используется для запуска ранее установленного вредоносного ПО на компьютере пользователя. Неправильное толкование правил привело к исключению более серьёзной атаки, которая также выполняла локальную эскалацию привилегий через Steam, — объясняет Valve суть недопонимания. — Мы обновили наши правила программы HackerOne, чтобы явно указать, что эти проблемы находятся в скоупе и подлежат рассмотрению. За последние два года мы вознаградили 263 исследователей в области безопасности, которые помогали нам выявить и исправить примерно 500 проблем безопасности, выплатив более $675 000 в виде вознаграждений. Мы стремимся продолжить работу с сообществом ИБ для повышения безопасности наших продуктов через программу HackerOne».

Новые правила программы HackerOne от Valve специально оговаривают, что «любой случай, который позволяет вредоносному или скомпрометированному программному обеспечению выполнять эскалацию привилегий через Steam, без предоставления административных учётных данных или подтверждения диалога UAC, находится в области действия. Любая несанкционированная модификация привилегированной службы клиента Steam также находится в области действия».

Впрочем, Valve отказалась комментировать снятие бана с Василия и выплату ему положенного вознаграждения: «Что касается конкретных исследователей, мы рассматриваем детали каждой ситуации, чтобы определить соответствующие действия. Мы не будем обсуждать детали каждой ситуации или состояние их счетов в настоящее время».

По состоянию на вчерашний день он был забанен:



Таким образом, справедливость восторжествовала, но ещё не до конца.

UPD 27.08.2019 Вышло обновление клиента Steam. В списке изменений указано "Fixes for local-privilege-escalation vulnerabilities".

Комментарии (18)


  1. VivAmigo
    23.08.2019 09:58

    Неужели они наконец словили, что через их ПО появляется бэкдор?! Наконец-то. Я ведь уже часть кода написал для эксплуатации. Хорошо, что его можно выбросить в помойку.Ну а ниже приятная пикча по этому случаю.

    Со смыслом
    image


    1. OnelaW
      23.08.2019 10:37
      +1

      Что-то неладно в королевстве.
      Два исследователя приходят к одинаковым результатам и им не верят. Исследователи показывают как это работает и показывают общественности. И тут, ой извините мы ошиблись. Хорошо хоть не писали в ответ это не баг это фича.


      1. EEElice
        23.08.2019 10:52
        +1

        Проблема в другом — для них расширение прав доступа уязвимостью не считает


        1. oldbie
          23.08.2019 11:32

          Проблема в другом — для них расширение прав доступа уязвимостью не считает

          Проблема еще более в другом. Уязвимостью как раз таки считает, иначе бы не наказывали исследователям банами и пытались исправить. Но видимо у компании дефицит желания исправлять, платить и, главное, открыто признавать проблемы безопасности. И я думаю что в первую очередь именно из-за соображений репутационного толка они так отреагировали. Т.к. сомневаюсь что там кому-то всерьез денег жалко, для такого монстра как Valve $700k за 2 года сумма несрьезная. Наверняка у них в штате есть разработчики с таким доходом в год.


    1. medusa_01
      25.08.2019 17:04

      Хорошо бы разбанить, но ведь это так удобно — признать чью-то правоту, но при этом не платить. Очень в духе.


  1. Rober
    23.08.2019 11:17
    +2

    Valve лишь признала ошибку в правилах отбора уязвимостей. Было бы интересно узнать, как так вышло, что когда в самой Valve 0-day уязвимость не признали таковой, в следующей версии клиента появились попытки исправления.
    "Крановцы" могут сколько угодно сокрушаться по поводу несовершенства ими же составленных правил на HackerOne, но факт остается фактом: они узнали о проблеме, попытались её решить, при этом зачем-то пойдя на конфликт с нашедшим уязвимость.


    1. oldbie
      23.08.2019 11:49

      disclaimer Я не слишком хорошо знаком с этой кухней пусть меня поправят и вообще все ниже — домыслы.

      Посмотрите на историю cо Spectre — Meltdown. Да, они признали проблемы, готовили какие-то патчи и сделали все что от них зависит для исплавения(предположим что так). Но их все равно заслуженно обмазали какахами с головы до пят. И теперь в каждом обсуждении, на каждой площадке отзывов можно найти intel=Meltdown.
      Ведь как я понимаю репорт скрыт от посторонних только какое-то время, затем исследователи пишут статьи и отчеты на профильных ресрсах. А если сделать вид что суслика нет, то есть шанс все закрыть по-тихому в надежде что исследователь не будет нарываться, что Valve вероятно и пыталась провернуть, хотя уязвимость и не такая гремучая.
      А если компания платит значит признает свою оплошность и ответственность, а через полгода всем расскажут как давно steam был страшным образом уязвим. Если не повезт, история раздуется, то только ленивый не пнет валву на страницах интернетиков. А тут еще epic со своей площадкой.


      1. creker
        23.08.2019 15:12

        Мельдаун все таки уязвимость огромных масштабов. Здесь речь о не такой серьезной уязвимости, которая бы однозначно осталась за кадром, если бы валв сделала все как надо. Ведь эта уязвимость получила известность совсем не из-за своей серьезности, люди далеки от этого. Они видят другое — валве репортят уязвимость, а они игнорят и банят человека. Вот за это они и получили известность. А могло бы все закончиться намного лучше — репорт, выплата денег, выпуск фикса. Все. Ни один новостной сайт бы и слова не сказал об этом, потому что из этого не сделать новость — ну была проблема, ее уже исправили. Это никому не интересно, проблемы с безопасностью есть у всех. Это и видно — программа выплат существует не первый день у валв, но это первая проблема, которая дошла до широкой публики.


      1. Am0ralist
        23.08.2019 16:31

        Но их все равно заслуженно обмазали какахами с головы до пят. И теперь в каждом обсуждении, на каждой площадке отзывов можно найти intel=Meltdown.
        правильно обмазали, потому что заплатки, например, просадили заметно работу с жесткими и теперь на старых компах, которые ещё год работали нормально — сейчас работать невозможно без замены на ssd.
        а тут ситуация в том, что через полгода никому бы это было не интересно — ой, ну было там когда-то ошибка, пофиксили же.


        1. creker
          23.08.2019 17:04

          Пруфы можно? Потом что по бенчмаркам заплатки просадили как раз таки топовые ssd.


    1. eclipse20
      23.08.2019 17:24

      Чтобы компании как Valve не наглели и знали свое место, необходимо в профилактических целях публиковать 0-day уязвимости без предупреждения. Тогда они не станут отказывать специалистам, которые за копейки тратят свое драгоценное время.


  1. halted
    23.08.2019 11:36

    Тот момент, когда Steam показывает, что продать на сторону баг выгоднее, чем сообщать им.


    1. Nicks_TechSupport
      23.08.2019 13:23

      посмотрим на сумму компенсации исследователю. На месте Вальве надо не только накинуть за исследование 2й раз, но и за моральный ущерб так сказать.


      1. halted
        23.08.2019 14:06

        скорее не за моральный ущерб, а за сохранение своей репутации


  1. Allozorro
    23.08.2019 17:24

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


  1. member0
    23.08.2019 18:46

    Какой же абсурд.

    Ждем следующую новость «Valve пошла навстречу исследователю и в качестве жеста доброй воли соизволила разбанить исследователя в H1. Чтобы он имел возможность в будущем слать отчеты. Конечно же, без выплаты вознаграждения, ведь вам всем показалось в продуктах Valve багов нет».

    Надеюсь, больше не один вайтхет не будет им слать баги в H1, а будут сразу же сливать блекхетам. С целью профилактики и перевоспитания. Чтобы ценили, что люди за копейки на фоне возможных потерь, спасают им репутацию.


  1. Azirel
    27.08.2019 07:09

    Сегодня утром Steam пропатчился и в списке изменений есть исправления, судя по всему, как раз этого.


    https://store.steampowered.com/news/53677/


    1. xi-tauw
      27.08.2019 15:50

      Да. Я обновил статью.