Как стать автором
Обновить

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

На самом деле очень жирная дырка для ситуаций гостевого доступа к целевому компьютеру. Возможно, что стоит уведомить об этой проблеме Microsoft, так как в первую очередь такое вольное обращение с привилегированным доступом бьёт по безопасности Windows. А уже Microsoft вольна применить санкции к Valve, вынудив изменить алгоритмы работы сервиса.
Не уверен что Microsoft пойдет на это, это выбор пользователя, ставить такой софт, зная о проблеме или нет.
Тогда и с малварью не надо бороться — пользователь сам ставит всякую фигню, запускает подозрительные файлы и так далее. Но нет. Думаю есть смысл попытаться — MS проще решить проблему кулуарно не дожидаясь какой-нибудь очередной эпидемии NotVasya
Не совсем. Пользователь ставит Steam, потому что Valve это солидная корпорация, которой, как считает пользователь, можно доверять. Разумеется, даже солидная, достойная доверия фирма может допустить уязвимость в софте, никто от этого не застрахован. Но достойная доверия фирма моментально делает все возможное для защиты пользователей, как только она узнала о новой уязвимости. Поскольку Valve информацию об уязвимости попросту проигнорировала, тупо подставив миллионы доверяющих ей пользователей под удар, она перестает быть достойной доверия фирмой, а ее дырявый софт превращается в уязвимость для фирмы Microsoft. Потому что если с помощью этой дыры кто-то удачно запустит malware, это бросит тень не только на Valve, но и на Microsoft — ведь компьютеры с другими ОС не пострадают. И сейчас уже очередь Microsoft сделать все возможное, чтобы защитить своих пользователей и оправдать их доверие. Учитывая колоссальное количество пользователей Steam, адекватным было бы официальное уведомление на сайте Microsoft о наличии уязвимости в этом ПО, а тогда уже пользователи могут сами решать, ставить такой софт, зная о проблеме, или нет. Конечно, сайт Microsoft мало кто читает, но сми быстро растиражировали бы эту новость, и необходимый эффект был бы достигнут.

На деле, конечно, достаточно будет короткого мейла от Microsoft в Valve с угрозой выкатить подобное предупреждение, чтобы Valve, вырывая на жопе волосы, бросила все силы на закрытие дыры.
На самом деле всё немного иначе, МС в таких случаях угрожает перевести подпись в не-доверенные а не вывешивает предупреждение.
Но помогает вроде как тоже неплохо!
НЛО прилетело и опубликовало эту надпись здесь
Я думал об уведомлении MS, учитывая, что они как раз опубликовали Safe Harbor (https://www.microsoft.com/en-us/msrc/bounty-safe-harbor), но все же ситуация не та — MS не виноваты и Valve не третья сторона, а первая.
MS не виноват и, в общем смысле вряд ли, имеет право указывать на ошибки.

МС, конечно, не виноваты. Но наверняка у них есть требования к разработчикам сервисов с системным уровнем доступа на тему делегирования прав и защиты от несанкционированного использования.

У МС весьма своеобразные представления о том, что является границами безопасности. Даже среди своих компонентов они не все считают необходимым защищать. В стороннее ПО они не полезут и подавно. Например, посмотрите на мой обход UAC (https://habr.com/ru/company/pm/blog/328008/) — до сих пор работает.
Я может что-то не верно понял, но Steam не имеет системных прав, он работает в контексте админа, но не системы. А повышение до системных уже происходит через msiserver. Тут суть в том что мы стимом меняем права на msiserver.
Системные права и права админа практически не различимы. Разница скорее терминологическая, чем реальная.
Steam Client Service работает в контексте системы.
Прошу извинить, если скажу глупость, но я не разбираюсь в теме безопасности.
Вопрос такой — а насколько вообще корректна ситуация, что в Реестре Windows можно менять права у веток, на которые ссылаются симлинки? Другими словами, что мешает реализовать аналогичный подход без использования Steam? Ведь, если я правильно понял из текста, достаточно просто обладать правами на какую-то свою ветку в реестре и иметь возможность устанавливать права для дочерних веток. Нужны ли здесь вообще какие-то программы?
Строго говоря, нет ничего плохого, чтобы делать какие-то операции через симлинки. Ведь для этого они и были придуманы.
Без стима это все делать нельзя по ряду причин:
1) Симлинки из менее защищенных веток в более защищенные не работают (условно говоря, симлинк из HKCU в HKLM не будет работать).
2) Чтобы создать симлинк в HKLM в 99,99% ключей нужно уже иметь права администратора, по дефолтным правам доступа.
Понятно. Спасибо за объяснение!
То есть проблема получается в том, что сервис устанавливает общие права доступа для ключа, который находится в защищенной ветке реестра HKLM? И это позволяет создать симлинк из нее в другую защищенную, и доступ по этому симлинку будет работать с правами исходной ветки?
Это выглядит как-то странно. Получается, ни в коем случае нельзя давать доступ на запись обычным пользователям ни в один из ключей из HKLM?
Вы неправильно вывели общее из частного.
Получается, не надо давать доступ на запись обычным пользователям в те папки, с которыми, в последствии, будут происходить манипуляции.
Сам по себе симлинк не дал никаких новых прав — это сделал сервис, пройдя по симлинку.
А, теперь понял, спасибо.

Программы нужны. Права-то меняет не атакующий, а именно что Steam Client Service, в процессе рекурсивного обхода "своей" ветки реестра.

Именно так.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Интересно, сколько лет ещё будет жить миф про тормоза микроядер?.. Уж вроде не ЕМНИП 1986-й год, когда, появился MACH — микроядро первого поколения, которое действительно тормозное(и да, которое до сих пор используется в макос), а народ повально до сих пор бубнит про тормоза микроядерных систем…

Вот как появится микроядерная ось без тормозов — тогда и перестанут про тормоза микроядер говорить.

Интересно, QNX, это ось с тормозами или нет? Ну правда про неё-то все знают(и почему-то забывают), а про микроядро seL4, на котором делают туда-сюда всякое, для американских вояк, в курсе только те кто темой действительно интересуется.
> мы не даем разрешение на раскрытие уязвимости
Не совсем понятно — при чем тут сотрудник h1 и его запрет
Valve отклонили отчет об уязвимости — т.е. они считают это не уязвимостью, а, вероятно фичей.
Почему бы и не рассказать всем о такой классной фиче? основания для запрета?
Вы верно уловили мои мысли. Но никакого обоснования предоставлено не было, хоть я и запрашивал.
Правильно ли я понимаю — чтобы пофиксить в Windows, достаточно выключить полный доступ всем кроме системы и группе админов для ветки HKLM\SOFTWARE\Wow6432Node\Valve\Steam + подразделов?
Не уверен.
1) Сервис пропишет все права обратно, он же этим и занимается.
2) Даже если посчитать что убрать права достаточно — эти ветки созданы для настроек игр (ну как я понял) и хз что сломается, если права убрать.

(мимо с линуксовой версией стима пробегал)


Т.е. я всё сделал правильно, когда при установке стима ни разу не дал ему рутовых прав (включая ручную распаковку deb'ки). В своём песочном пользователе steam он может копошиться, а в чужие домашние каталоги и в систему — ни-ни.

Все правильно сделали

Это вы правильно делаете. Slack, например, в своем deb-файле пытается всунуть shell-скрипт в крон от рута, по комментариям в коде — чтобы восстанавливать себя в списке источников для менеджера пакетов, если запись будет закомментирована при обновлении системы. Но, конечно, добавляя себя в список источников, он позволяет компании Slack Inc перезаписать любой файл в системе, включая sshd или bash, например.

Я не являюсь специалистом безопасности и юриспруденции, но у меня появился вопрос. Если я разработаю полноценный MalWare на основе этой уязвимости и опубликую весь исходный код (с подробными комментариями к коду) на общедоступных форумах в виде обращения с просьбой устранить данную уязвимость в логике работы программы Steam, будет ли это считаться чем-то незаконным?
Вне зависимости, ваша деятельность будет расценена как УК РФ Статья 273 Создание, использование и распространение вредоносных компьютерных программ. И будет считаться незаконной.
А можно ли в таком случае обратиться куда-то, кроме Steam, если данная недоработка добавляет уязвимости в систему? Может в Касперский, Dr.Web или другие безопасники возьмутся за эту проблему? Допустим что Dr.Web обратится к Steam, с требованием удалить данную уязвимость, по причине создания дыр в безопасности. Они могут ведь поставить ултиматум, причисляя данное ПО к потенциально опасному?
Крайне сомнительно. Антивирусы обычно таким не интересуются.
Жаль. А потом удивляемся, откуда у нас появляются not petya. Спасибо за ответы. Есть надежда, что этот пост увидят безопасники или хоть какие то энтузиасты, а не профессиональные( и не очень ) спецы по написанию вредоносов.
Интересуются. Тот же касперский имеет модули поиска уязвимости в ПО. Правда работают тормозно. Но они есть. В энтерпрайзном KES10+ точно были.
Попадает ли bat файл с содержимым: «del C:\Windows» — под понятие «вредоносная компьютерная программа»?
Хорошо, что не я это решаю
Кто может объяснить мне причину минусования коммента? Невозможно юридически, четко разграничить понятия «вредоносная компьютерная программа» и «программа».
А вы почитали статью УК РФ, на комментарий со ссылкой на которую ответили? Там же все четко написано. Вот, специально выделил самый сок:
"Создание, распространение или использование компьютерных программ либо иной компьютерной информации, заведомо предназначенных для несанкционированного уничтожения, блокирования, модификации, копирования компьютерной информации"

То есть — да, является. Программа из одной команды — тоже программа. Программа, содержащая команду «del C:\Windows», которая будет выполнена с повышенными правами без ведома пользователя — заведомо предназначена для несанкционированного уничтожения компьютерной информации
А как отличить, эта строчка предназначена для несанкционированного уничтожения или санкционированного?

По идее, для отнесения к «заведомо предназначенным» программа помимо собственно деструктивных действий, должна содержать еще и средства маскировки от пользователя.
Насколько я понимаю, сама строчка такой информации не дает. Намерения автора выясняются другими путями. Т.е. ваш вопрос изначально некорректен.
Так и я про то же.
А вот из утверждения товарища выше вытекает, что дает.
А, прошу прощения, показалось, что первый вопрос в треде — ваш.
почитайте про термин " несанкционированный доступ", если вкратце, то несанкционированное уничтожение, это такое уничтожение, для которого у вас нет соответствующих прав доступа, но вы все равно уничтожаете. Или перед вами дверь, к которой у вас нет ключа, а вы взяли и открыли, хотя вам нельзя.
Ну и вот как выяснить, есть права или нет — только по такой вот одной строчке?
Drazd утверждает, что такой bat-файл таки является «заведомо предназначенным для несанкционированного уничтожения». Вот мне и интересно, а как он узнал, для несанкционированного или санкционированного?

Пожалуйста, не делайте так.
Не ожидал от Valve такой реакции…
Я, к сожалению, ожидал. В посте есть ссылка на твиттер enigma0x3, которому, фактически, дали отворот сами Valve без посредников.
Я на всякий случай спрошу, а нельзя ли сам SteamService.dll/SteamService.exe переписать? Там права верно установлены?
Переписать нельзя. Да, верно установлены. На эти файлы действуют права-умолчанию, с ними все нормально.

Интересно, а в конкурирующих площадках не были найдены подобные уязвимости? К примеру, в стремительно набирающим популярность Epic Games?

Не готов это комментировать.
Подобной нет, но есть кое-что.

Интересно, а не занимается ли чем-то подобным давно набравший популярность Стим?

НЛО прилетело и опубликовало эту надпись здесь
Так это баг?! А я все на свою клавиатуру грешил, да на кривые руки.
Это свойственно Valve. Так, они практически не фиксят баги в своих играх, которые не приносят им регулярного дохода (т.е. во всех, кроме, доты 2, ксго, тф2 и артефакта). Скатились ребята…
В CS 1.6 даже новые фичи добавляют, о чём ты?
Добавлять фичи — не баги фиксить)) Интересно какие там появились плюшки?

Я говорю, к примеру, о присутствии в hl2dm ряда откровенно явных косяков, которых до определенного обновления и не было. После их появления прошло уже несколько лет, об этом не раз писали в Вэлв, но ничего до сих пор не пофиксили. Вывод — им просто наплевать на игру, которая не приносит им дохода, и на комьюнити тоже.
Больше даже смахивает на то, что они умышленно эти баги добавили))

Если быть точным, то баги в хл2дм уже 9 лет не могут пофиксить :)

Артефакт приносит разве доход? У него онлайн меньше 200 человек.
Потенциально должен будет приносить, ибо Вэлв больше играми без доната не занимаются. Про хардкорные FPS без шапок можно забыть.
Ну тут я скорее не соглашусь, проект мертвый, а реанимировать игры Valve не умеет. Все что живо — живо за счет игроков (модели и режимы в L4D2, кастомные карты в Dota 2). Я не верю в Артефакт, и в то, что они за него возьмутся. Был вроде перевод на хабре статьи от одного из крупных игроков в ККИ, который сказал, что кучу его замечаний, и замечаний других экспертов, Valve просто проигнорировала (когда Артефакт был на ранней стадии). Как они с таким подходом смогут заставить игроков вновь в артефакт играть?
Я имел ввиду, что Артефакт создавался не столько для продажи, сколько для обильного заработка на внутриигровом контенте (а о его будущем судить не берусь). Вэлв давно взяли для себя такую модель заработка. И поэтому игры, в которых «не торгуют шапками», Вэлв практически не поддерживает.

Все что живо — живо за счет игроков (модели и режимы в L4D2, кастомные карты в Dota 2)
Все верно, но игрокам свойственно вырастать, обзаводится семьями и, зачастую, утрачивать возможность/желание играть в игры)) А для того, чтобы более младшие поколения тоже играли в эти же игры, их нужно поддерживать (обновлять движок, текстуры, придумывать новые фичи, как-то актуализировать игру, которой уже 5-10 лет). В противном случае потенциальные игроки могут даже не заметить такую игру. Что в итоге и случилось с Half-Life 2: Deathmatch, к примеру.
НЛО прилетело и опубликовало эту надпись здесь
Отнюдь. Я конечно уже и видел «английские» репорты, которые без знания русского языка не поймёшь, но даже если всё хорошо было описано — какой резон был премодерации такую дыру отвергать?

А через security@ я и вообще (в сравнении с этим) смешной exploit на Steamcommunity репортил, который для фишинга использовался. После того как человек на том конце смог воспроизвести проблему, буквально за считанные часы фикс добрался до прода.

UPD: «Attacks that require the ability to drop files in arbitrary locations on the user's filesystem.» если вчитаться, то действительно нужен уже локальный код, что не отменяет тот факт, что благодаря стиму любой зловред до NT SYSTEM может повыситься.
Постойте, это та самая программа, которая устанавливает права Full Control для всех пользователей на каталог «c:\Program Files (x86)\Steam» и туда же устанавливает и все свои приложения/игры, большая часть которых могла бы работать из нормального защищённого каталога?

Это та самая, которая при запуске игр выводит вот такие запросы UAC:
первая же картинка из гугла, раньше ещё и 'verified publisher' не было
первая же картинка из гугла

Да, «ваше сообщение очень важно для них»!

P.S. Нашёл скриншот старого сообщения - вообще красота!
image
И ругается, если права забрать:

Я там выше спрашивал есть ли у пользователей доступ на запись (конкретно файла steamservice.exe), потому что в сети какая-то противоречивая информация, всё забываю проверить дома.

Если так и есть, то интересно будет ли такое же безобразие, если при установке задать директорию для библиотеки игр за пределами Program Files?

(Вообще конечно подобные вещи — это полная задница. Chrome свои исполняемые файлы в AppData суёт, а этот, похоже, наоборот)
По поводу противоречия:
Сервису «Steam Client Service» соответствует файл C:\Program Files (x86)\Common Files\Steam\steamservice.exe и у него с правами все нормально.
Но есть еще файл C:\Program Files (x86)\Steam\bin\steamservice.exe — он лежит в папке, которой при установке стим дает разрешение на изменение для всех пользователей. Когда и как он запускается я не знаю.
НЛО прилетело и опубликовало эту надпись здесь
«c:\Program Files (x86)\Steam» и туда же устанавливает и все свои приложения/игры

Это по умолчанию, origin делает также. В настройках можно выбрать произвольную директорию

Так проблема-то не в директории, а в правах на неё!

НЛО прилетело и опубликовало эту надпись здесь

Отличный отчет, интересная (показательная) уязвимость. Было бы здорово дополнить статью дескриптором безопасности ключа HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps, что бы понять, какие пользователи могут создавать там симлинки (могут провести повышение привилегий).

Спасибо.
Дескриптор безопасности, опуская подробности, KA для BU (KA [Key All] — Полный доступ, BU [Built-in User] — все пользователи).
Теперь забавный факт, по которому можно отличить диванных безопасников с реддита. Для создания симлинка в реестре не только не нужны права администратора, но и даже разрешение ключа на «create links». Нужно только разрешение на создание ключей.
Обычно после таких вот публичных срачей раскрытий, компании таки идут на контакт, выплачивают положенное вознаграждение. И присылаются отписку, мол «Сотрудник Вася ошибся, просим прощения».

Но не уверен, что Valve «нормальные», учитывая, сколько раз я читал на тематических форумах «I found XSS in Steam, reported via ticket and email, posted on their forums and found my steam account disabled» и т.д. в таком же ключе.

Интересно, xi-tauw, локнут ли вам сам аккаунт. Если заблокируют — вообще отпетые.
Wargaming например именно такие, благо моему знакомому хватило ума тестировать и репортить не с основного аккаунта.
Он даже вознаграждения не просил, просто хотел что бы пофиксили.
Проблема была в том что подменой отправляемых пакетов можно было вмешиваться в расчёт «рандомных» переменных, например задавая им всегда возможный максимум.
Максимальная точность… пробитие… урон…
«Вы вмешались в работу клиента игры, это не является ошибкой, ваш аккаунт заблокирован за нарушение пользовательского соглашения.»
После такого фееричного ответа, баг был успешно продан и существовал в приватных читах почти 3 года.
Как защититься тем у кого уже стоит steam клиент? (удаление не предлагать т.к. это очевидный вариант) Быть может есть хоть какой-нибудь workaround?
Нужно ждать фикса от Valve (если он будет). Простых способов починить нет.

Переключайтесь на linux-версию стима. (Формально стим при этом не удаляется, а заменяется ОС).

Поставить гостевую ось и в неё поставить стим?
От пожирания ресурсов майнером это не спасет. Хотя от потери инфы из основной — вполне.
И от потери инфы не спасет. Спасет только виртуалка, хотя и там могут быть уязвимости для выполнения кода в основной ОС.
НЛО прилетело и опубликовало эту надпись здесь

Гостевая ось может находиться физически на одном винчестере в смежных разделах. Либо это какой-то узкоспециализированный термин?

Гостевая ось — это не ось, которой пользуются гости, а ось, запущенная на гостевой машине. Гостевая машина — это синоним слова "виртуалка".

Да, «гостевая ОС» это термин — ОС, установленная на виртуальной машине, эмулируемой с помощью программы (эмулятора), запускаемой под хостовой ОС (host — «хозяин»).
all-ht.ru/inf/vpc/p_0_1.html
Отношение «хозяин-гость» между двумя ОС иерархично, а две операционки на разных разделах совершенно равны в правах (принцип «кто первый надел халат — тот и доктор» не может считаться нормальной системой разграничения прав).
А можно простыми словами? Если у меня на компе есть не-админская учетка без пароля и установлен стим, то зайдя под этой учеткой, можно получить админские права?
Да, все так.
Верите, что за скидку в 90% вы не получите скрытый майнер?

Так это известный факт — в стиме сотни майнеров продаётся. И вовсе даже не скрытых. Никого сей факт не смущает — ни Valve, ни покупателей.

Так простой майнер и правда не проблема: его как поставили — так и удалить можно, весь вред — моральный.


А разобранная тут штука потенциально позволяет сделать неудаляемый майнер-руткит. Вот это — уже проблема.

Спасибо. Я поглядывал на статьи, связанные с этой новостью. Это довольно интересно наблюдать — так, например, tproger.ru сделали новость на основе хабровской статьи, а anti-malware.ru перевели какую из западных (уже поправили, но артефакты все равно заметны).
www.youtube.com/watch?v=HkVjLZBO7MY — вот и в уже почти сугубо развлекательных вещах упоминания пошли. Самый конец выпуска, с 5:50. (это новостной канал от одного из крупнейших западных техноблоггеров — www.youtube.com/user/LinusTechTips)
Почему крупные компании так любят скушать помоев?
Послать отрепортившего, попытаться запретить публикацию…
Ну не можешь ты быстро исправить, напиши нормальный ответ…

Западные? Наши еще и ментов могут привлечь в таких случаях.

Внес обновление в статью,
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Внес обновление в статью,
интрига до конца не раскрыта — заблокировали ли автору аккаунты h1 и steam?
Нет, не заблокировали. H1 переоткрыли отчет и прислали длинное письмо, попросили ответить в треде на один вопрос. Я ответил и прошло 5 дней, без какой-либо реакции.

Если Вам ответят, извините, ошиблись, вот ваши деньги за уязвимость — отпишитесь пожалуйста.
Интересно, признают ли они свою ошибку в итоге...

Они уже должны были бы это сделать, на фоне того, что фикс уже вышел, пусть и в бетке…

В этом-то и соль:
они могут просто сказать, что-то вроде этот баг был у нас в спринте, после очередного релиза мы его исправили, проблема устранена.

Да, я обязательно обновлю пост, если будут какие-то новости.
Если не сложно, также черканите, плиз, соответствующий коммент об этом, чтоб статья высветилась в трекере.
Обновление Steam вышло.
Судя по «радостным» комментариям, стим решил запушить это обновление как принудительное…

«Не баг» говорите? :)

steamcommunity.com/news/post/2412160539873037816

Client Update — Valve 13 авг
A new Steam client has been released and will be automatically downloaded.

Steam Windows Service
Fixed privilege escalation exploit using symbolic links in Windows registry
Спасибо! Пофиксили эксплоит.
Да, добавил в статью.
Обновление для тех, кто следит.
исследователь показал, что патч можно обойти, уязвимость все еще актуальна. Обход вкратце — можно вернуть предыдущие (до патча) версии сервиса.
Спасибо)
И еще апдейт — Valve забанили меня в своей программе на H1. Остальной H1 мне доступен, то есть это чисто часть Valve.
Похоже что фиксить они не планировали, но из-за шумихи были вынуждены и у них пригорело.
Самое время найти ещё какой нибудь аналогичный баг и сразу его опубликовать извинившись за невозможность отправить его по программе, т.к. тебя в ней забанили =))
До слёз)))
Нет, не разбанили.
Я больше скажу, что сообщение от Valve в общем смысле никак не касается меня. Они просто сказали, что произошла ошибка и свалили все на недопонимание.

Да ладно???
Похоже попахивает чёрным пиаром. Феерично, мы признаём, что баг-таки есть, обновим программу, но тому чуваку шиш. Козлы.


Жаль, что мы Вам не можем никак помочь...

Как читатели могли заметить, я стараюсь обновлять свои статьи при получении новостей, но в данный момент их, в общем-то, нет. То, что журналисты получили ответ — это просто факт уровня кто-то что-то сказал. Никаких действий со стороны Valve (именно по отношению ко мне) я не вижу.
На самом деле, сообщество мне очень помогло, я очень ценю реакцию, в том числе русскоязычных, читателей.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий