Итак, герой нашей истории — ПО Steam от компании Valve. И уязвимость повышения привилегий в нем, которая позволяет любому пользователю выполнить команды от имени NT AUTHORITY\SYSTEM.
Уязвимость
Сама уязвимость довольно простая. Steam для своей работы устанавливает сервис “Steam Client Service”. Глянем на SDDL-описатель сервиса:
O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)
Здесь нас интересует часть (A;;RPWP;;;BU). В данном случае, эта запись означает, что запускать и останавливать сервис может любой пользователь из группы «Пользователи».
Посмотрим, что сервис делает при старте. Не особо много интересного, но есть часть операций, которые выглядят необычно — сервис перечисляет содержимое раздела HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps и для всех подразделов выставляет какие-то права.
Интересно, что же за права выставляются? Создаем тестовый ключ, запускаем сервис (лог procmon’а выше) и смотрим, что с правами. Тут и обнаруживается, что еще у раздела HKLM\SOFTWARE\Wow6432Node\Valve\Steam выставлены права на полный доступ для всех пользователей, которые наследуются на все подключи. Рождается гипотеза, что такие же права будут выставляться и всем подразделам HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps через вызов RegSetKeySecurity. А что если в реестре будет стоять симлинк, и ветка HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps\test будет указывать, например на HKLM\SOFTWARE\test2?
Проверяем и видим, что права в случае симлинка прописываются для целевой ветки реестра.
Проверяем права у целевой ветки и видим в SDDL-форме (пропуская неинтересное):
(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)
В словесной форме это означает, что полный (чтение и запись) доступ для всех пользователей. Именно такие права прописал ветке сервис Steam.
Теперь, когда подготовлен примитив по получению контроля над практически любой веткой реестра, докрутить PoC уже легко. Я выбрал ветку HKLM\SYSTEM\ControlSet001\Services\msiserver — она соответствует сервису «Установщик Windows», который тоже может быть запущен пользователем, но работать сервис будет с правами NT AUTHORITY\SYSTEM. После получения контроля над веткой HKLM\SYSTEM\ControlSet001\Services\msiserver мы меняем путь к исполняемому файлу в ключе ImagePath и запускаем сервис msiserver. Наш исполняемый файл запускается с максимально возможными правами — NT AUTHORITY\SYSTEM.
Собираем все, что написано выше в код и получаем простое повышение привилегий на любом компьютере с Windows, где установлен Steam.
Сообщение об уязвимости
Я отправил отчет об уязвимости в Valve через Hackerone.
Тут меня ждала первая неожиданность — прежде чем передавать уязвимость непосредственно в Valve, мне нужно было сначала убедить hackerone staff в том, что у меня действительно отчет об уязвимости, так как Valve используют функцию «Managed by HackerOne». Мне не жалко — у меня PoC, который вызывает консоль от имени NT AUTHORITY\SYSTEM — доказательства на лицо. И я получаю отказ в отчете. Причиной указывается, что мой отчет вне скоупа исследований, поскольку «Attacks that require the ability to drop files in arbitrary locations on the user's filesystem.» (атака требует возможности располагать файлы в произвольных путях файловой системы). Моя реакция: «У меня даже нет ни одной операции с файловой системой, но отказ по такой причине, серьезно?»
Пишу комментарий об этом и приходит другой сотрудник, который все же берется проверять уязвимость. Подтверждает ее и передает 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.
Например, в причине «Attacks that require the ability to drop files in arbitrary locations on the user's filesystem» я выделил ключевые, на мой взгляд, слова. Мне казалось, что такой причиной Valve хотели исключить спекуляции на тему «давайте я установлю игру в папку, доступную всем пользователям, затем буду запускать ее с правами админа, не проверяя не подменил ли кто файлы», но для них это, видимо, повод исключить вообще все что касается локальных атак.
Тоже самое и с физическим доступом. Для меня, физический доступ — это возможность отверткой открутить болты жесткого диска, загрузиться с внешнего носителя и другие интересные вещи непосредственно с оборудованием ПК. Довольно логично предположить, что имея такой доступ можно сделать почти все, что угодно. Равно как и преодолеть двухфакторную аутентификацию при физическом доступе к телефону. Valve же, видимо, любое действие на компьютере пользователя рассматривает как физику. Так и RCE запретить недолго: компьютер же соединен с серверами волнами или проводами — физически!
Поскольку прошло 45 дней с момента отчета, я решил публично раскрыть детали уязвимости, хотя я не уверен, что это сподвигнет разработчиков Steam внести изменения.
Небольшие статистические данные: уязвимость была проверена на Windows 8 x64, Windows 8.1 x64 и Windows 10 x64. Я не знаю особенностей нумерации версий ПО Steam, поэтому зафиксирую версии компонентов сервиса:
- SteamService.dll (5.16.86.11, подписан Valve 14.06.2019)
- SteamService.exe (5.16.86.11, подписан Valve 14.06.2019)
Таймлайн:
15 июня — отправлен отчет об уязвимости.
16 июня — отклонен, «Attacks that require the ability to drop files in arbitrary locations on the user's filesystem.».
16 июня — переоткрыт с комментарием.
2 июля — подтвержден сотрудником HackerOne, передан Valve.
20 июля — отклонен, «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.».
7 августа — опубликована эта статья.
Немного спекуляций
Я очень разочарован. Серьезная компания, которая пишет пафосные слова о том, что безопасность важна, открывает ваш компьютер для максимального доступа любым программам, которые вы запускаете.
Довольно иронично обнаружить, что лаунчер, который фактически предназначен для того, чтобы запускать сторонние программы на вашем компьютере, позволяет им втихую получить максимальные привилегии. Вы уверены, что бесплатная игра, сделанная на коленке неизвестным разработчиком, будет вести себя честно? Верите, что за скидку в 90% вы не получите скрытый майнер? Конечно, часть угроз останется и при работе без прав администратора, но высокие права у вредоносных программ могут существенно попортить нервов – отключение антивируса, закрепление в системные автозагрузки, изменение практически любых файлов, любых пользователей.
Благодаря популярности Steam, количество потенциальных пострадавших очень велико. В 2015 году количество активных учётных записей Steam оценивалось как 125 миллионов. Да, не у всех пользователей Steam ОС Windows, но у большинства точно, и у каких-то пользователей по нескольку «живых» аккаунтов на одной машине. Но масштабы проблемы все же впечатляют.
А может все это оставлено специально? Может, Steam — это своего рода легальный бекдор? Точно установить это невозможно, но давайте сопоставим факты:
- Есть уязвимость, которую легко эксплуатировать (причем, судя по сообщениям в твиттере, не одна).
- Ее довольно легко обнаружить — я не уверен, что я первый нашел ее, но как минимум первый описал публично.
- Нежелание принимать отчет о такой уязвимости и похожих (скоуп специально выбран так, что повышение привилегий из него выпадает).
Все это мне очень не нравится. Я не буду призывать вас удалять Steam, но предлагаю быть очень внимательным с тем, что он делает. На кону ваша безопасность.
Бонус
Дело в том, что в процессе подготовки этой статьи произошло довольно интересное событие, в связи с которым я решил дополнить таймлайн.
20 июля — после отклонения отчета, я предупредил h1, что публично раскрою детали уязвимости после 30 июля.
2 августа — еще один сотрудник h1 отмечается в закрытом отчете и говорит, что они не разрешают мне проводить раскрытие.
Данная статья была подготовлена к публикации уже к 30 июля (такая дата была выбрана из расчета 45 дней после отправки отчета), но задержалась. И вот, спустя две недели от моего сообщения 20 июля, появляется человек, который говорит мне: «мы не даем разрешение на раскрытие уязвимости». Фактически, получается: мы отметили твой отчет, как неподходящий, мы закрыли обсуждение, мы не посчитали нужным ничего тебе объяснять и мы просто не хотим, чтобы ты публиковался. При этом не единого слова от Valve. Нет, ребята, так дело не пойдет. Вы не стали уважать мою работу, я не буду уважать вашу — не вижу причин не публиковать этот отчет для всех. Скорее всего меня забанят на h1 из-за этого, но я огорчаться не стану.
UPD. Оказывается вчера вышло обновление Steam. Нет, оно ничего не исправило.
Версия файлов: 5.27.59.20 подпись от 6.08.2019.
This article in english.
Комментарии (97)
imm
07.08.2019 11:24+5> мы не даем разрешение на раскрытие уязвимости
Не совсем понятно — при чем тут сотрудник h1 и его запрет
Valve отклонили отчет об уязвимости — т.е. они считают это не уязвимостью, а, вероятно фичей.
Почему бы и не рассказать всем о такой классной фиче? основания для запрета?xi-tauw Автор
07.08.2019 11:31+1Вы верно уловили мои мысли. Но никакого обоснования предоставлено не было, хоть я и запрашивал.
imm
07.08.2019 14:16Правильно ли я понимаю — чтобы пофиксить в Windows, достаточно выключить полный доступ всем кроме системы и группе админов для ветки HKLM\SOFTWARE\Wow6432Node\Valve\Steam + подразделов?
xi-tauw Автор
07.08.2019 14:25+1Не уверен.
1) Сервис пропишет все права обратно, он же этим и занимается.
2) Даже если посчитать что убрать права достаточно — эти ветки созданы для настроек игр (ну как я понял) и хз что сломается, если права убрать.
amarao
07.08.2019 12:06+1(мимо с линуксовой версией стима пробегал)
Т.е. я всё сделал правильно, когда при установке стима ни разу не дал ему рутовых прав (включая ручную распаковку deb'ки). В своём песочном пользователе steam он может копошиться, а в чужие домашние каталоги и в систему — ни-ни.
Sabubu
07.08.2019 12:41+3Это вы правильно делаете. Slack, например, в своем deb-файле пытается всунуть shell-скрипт в крон от рута, по комментариям в коде — чтобы восстанавливать себя в списке источников для менеджера пакетов, если запись будет закомментирована при обновлении системы. Но, конечно, добавляя себя в список источников, он позволяет компании Slack Inc перезаписать любой файл в системе, включая sshd или bash, например.
VivAmigo
07.08.2019 14:08Я не являюсь специалистом безопасности и юриспруденции, но у меня появился вопрос. Если я разработаю полноценный MalWare на основе этой уязвимости и опубликую весь исходный код (с подробными комментариями к коду) на общедоступных форумах в виде обращения с просьбой устранить данную уязвимость в логике работы программы Steam, будет ли это считаться чем-то незаконным?
xi-tauw Автор
07.08.2019 14:08Вне зависимости, ваша деятельность будет расценена как УК РФ Статья 273 Создание, использование и распространение вредоносных компьютерных программ. И будет считаться незаконной.
VivAmigo
07.08.2019 14:17А можно ли в таком случае обратиться куда-то, кроме Steam, если данная недоработка добавляет уязвимости в систему? Может в Касперский, Dr.Web или другие безопасники возьмутся за эту проблему? Допустим что Dr.Web обратится к Steam, с требованием удалить данную уязвимость, по причине создания дыр в безопасности. Они могут ведь поставить ултиматум, причисляя данное ПО к потенциально опасному?
xi-tauw Автор
07.08.2019 14:25Крайне сомнительно. Антивирусы обычно таким не интересуются.
VivAmigo
07.08.2019 14:59Жаль. А потом удивляемся, откуда у нас появляются not petya. Спасибо за ответы. Есть надежда, что этот пост увидят безопасники или хоть какие то энтузиасты, а не профессиональные( и не очень ) спецы по написанию вредоносов.
khanid
08.08.2019 00:25Интересуются. Тот же касперский имеет модули поиска уязвимости в ПО. Правда работают тормозно. Но они есть. В энтерпрайзном KES10+ точно были.
sswwssww
07.08.2019 18:07-2Попадает ли bat файл с содержимым: «del C:\Windows» — под понятие «вредоносная компьютерная программа»?
sswwssww
08.08.2019 10:20Кто может объяснить мне причину минусования коммента? Невозможно юридически, четко разграничить понятия «вредоносная компьютерная программа» и «программа».
Drazd
08.08.2019 16:52А вы почитали статью УК РФ, на комментарий со ссылкой на которую ответили? Там же все четко написано. Вот, специально выделил самый сок:
"Создание, распространение или использование компьютерных программ либо иной компьютерной информации, заведомо предназначенных для несанкционированного уничтожения, блокирования, модификации, копирования компьютерной информации"
То есть — да, является. Программа из одной команды — тоже программа. Программа, содержащая команду «del C:\Windows», которая будет выполнена с повышенными правами без ведома пользователя — заведомо предназначена для несанкционированного уничтожения компьютерной информацииjuray
09.08.2019 04:06А как отличить, эта строчка предназначена для несанкционированного уничтожения или санкционированного?
По идее, для отнесения к «заведомо предназначенным» программа помимо собственно деструктивных действий, должна содержать еще и средства маскировки от пользователя.xMushroom
09.08.2019 15:25+1Насколько я понимаю, сама строчка такой информации не дает. Намерения автора выясняются другими путями. Т.е. ваш вопрос изначально некорректен.
Jaguar25
09.08.2019 15:46почитайте про термин " несанкционированный доступ", если вкратце, то несанкционированное уничтожение, это такое уничтожение, для которого у вас нет соответствующих прав доступа, но вы все равно уничтожаете. Или перед вами дверь, к которой у вас нет ключа, а вы взяли и открыли, хотя вам нельзя.
juray
10.08.2019 19:13Ну и вот как выяснить, есть права или нет — только по такой вот одной строчке?
Drazd утверждает, что такой bat-файл таки является «заведомо предназначенным для несанкционированного уничтожения». Вот мне и интересно, а как он узнал, для несанкционированного или санкционированного?
Wolchara000
07.08.2019 14:47Не ожидал от Valve такой реакции…
xi-tauw Автор
07.08.2019 15:08Я, к сожалению, ожидал. В посте есть ссылка на твиттер enigma0x3, которому, фактически, дали отворот сами Valve без посредников.
ilyapirogov
07.08.2019 16:53Интересно, а в конкурирующих площадках не были найдены подобные уязвимости? К примеру, в стремительно набирающим популярность Epic Games?
Nexon
07.08.2019 18:48Это вызывает риторический вопрос — сколько еще таких уязвимостей не опубликовано?
Просто у них баг с залипанием клавиши Tab не фиксится уже более 10 лет.Kron7
08.08.2019 10:06Это свойственно Valve. Так, они практически не фиксят баги в своих играх, которые не приносят им регулярного дохода (т.е. во всех, кроме, доты 2, ксго, тф2 и артефакта). Скатились ребята…
ExplosiveZ
08.08.2019 11:34В CS 1.6 даже новые фичи добавляют, о чём ты?
Kron7
09.08.2019 00:09Добавлять фичи — не баги фиксить)) Интересно какие там появились плюшки?
Я говорю, к примеру, о присутствии в hl2dm ряда откровенно явных косяков, которых до определенного обновления и не было. После их появления прошло уже несколько лет, об этом не раз писали в Вэлв, но ничего до сих пор не пофиксили. Вывод — им просто наплевать на игру, которая не приносит им дохода, и на комьюнити тоже.
Больше даже смахивает на то, что они умышленно эти баги добавили))
IharK
08.08.2019 16:16+1Артефакт приносит разве доход? У него онлайн меньше 200 человек.
Kron7
09.08.2019 00:17Потенциально должен будет приносить, ибо Вэлв больше играми без доната не занимаются. Про хардкорные FPS без шапок можно забыть.
IharK
09.08.2019 11:05Ну тут я скорее не соглашусь, проект мертвый, а реанимировать игры Valve не умеет. Все что живо — живо за счет игроков (модели и режимы в L4D2, кастомные карты в Dota 2). Я не верю в Артефакт, и в то, что они за него возьмутся. Был вроде перевод на хабре статьи от одного из крупных игроков в ККИ, который сказал, что кучу его замечаний, и замечаний других экспертов, Valve просто проигнорировала (когда Артефакт был на ранней стадии). Как они с таким подходом смогут заставить игроков вновь в артефакт играть?
Kron7
11.08.2019 01:26Я имел ввиду, что Артефакт создавался не столько для продажи, сколько для обильного заработка на внутриигровом контенте (а о его будущем судить не берусь). Вэлв давно взяли для себя такую модель заработка. И поэтому игры, в которых «не торгуют шапками», Вэлв практически не поддерживает.
Все что живо — живо за счет игроков (модели и режимы в L4D2, кастомные карты в Dota 2)
Все верно, но игрокам свойственно вырастать, обзаводится семьями и, зачастую, утрачивать возможность/желание играть в игры)) А для того, чтобы более младшие поколения тоже играли в эти же игры, их нужно поддерживать (обновлять движок, текстуры, придумывать новые фичи, как-то актуализировать игру, которой уже 5-10 лет). В противном случае потенциальные игроки могут даже не заметить такую игру. Что в итоге и случилось с Half-Life 2: Deathmatch, к примеру.
VADemon
07.08.2019 20:51Отнюдь. Я конечно уже и видел «английские» репорты, которые без знания русского языка не поймёшь, но даже если всё хорошо было описано — какой резон был премодерации такую дыру отвергать?
А через security@ я и вообще (в сравнении с этим) смешной exploit на Steamcommunity репортил, который для фишинга использовался. После того как человек на том конце смог воспроизвести проблему, буквально за считанные часы фикс добрался до прода.
UPD: «Attacks that require the ability to drop files in arbitrary locations on the user's filesystem.» если вчитаться, то действительно нужен уже локальный код, что не отменяет тот факт, что благодаря стиму любой зловред до NT SYSTEM может повыситься.
VitalKoshalew
07.08.2019 22:44Постойте, это та самая программа, которая устанавливает права Full Control для всех пользователей на каталог «c:\Program Files (x86)\Steam» и туда же устанавливает и все свои приложения/игры, большая часть которых могла бы работать из нормального защищённого каталога?
Это та самая, которая при запуске игр выводит вот такие запросы UAC:
первая же картинка из гугла, раньше ещё и 'verified publisher' не былоnavion
07.08.2019 23:22И ругается, если права забрать:JTG
09.08.2019 15:56Я там выше спрашивал есть ли у пользователей доступ на запись (конкретно файла steamservice.exe), потому что в сети какая-то противоречивая информация, всё забываю проверить дома.
Если так и есть, то интересно будет ли такое же безобразие, если при установке задать директорию для библиотеки игр за пределами Program Files?
(Вообще конечно подобные вещи — это полная задница. Chrome свои исполняемые файлы в AppData суёт, а этот, похоже, наоборот)xi-tauw Автор
09.08.2019 16:53По поводу противоречия:
Сервису «Steam Client Service» соответствует файл C:\Program Files (x86)\Common Files\Steam\steamservice.exe и у него с правами все нормально.
Но есть еще файл C:\Program Files (x86)\Steam\bin\steamservice.exe — он лежит в папке, которой при установке стим дает разрешение на изменение для всех пользователей. Когда и как он запускается я не знаю.
sumanai
08.08.2019 05:54А потом люди удивляются, что это я не ставлю программы для установки программ. Да в них подобные дыры by design.
kITerE
08.08.2019 09:42Отличный отчет, интересная (показательная) уязвимость. Было бы здорово дополнить статью дескриптором безопасности ключа HKLM\SOFTWARE\Wow6432Node\Valve\Steam\Apps, что бы понять, какие пользователи могут создавать там симлинки (могут провести повышение привилегий).
xi-tauw Автор
08.08.2019 10:14+2Спасибо.
Дескриптор безопасности, опуская подробности, KA для BU (KA [Key All] — Полный доступ, BU [Built-in User] — все пользователи).
Теперь забавный факт, по которому можно отличить диванных безопасников с реддита. Для создания симлинка в реестре не только не нужны права администратора, но и даже разрешение ключа на «create links». Нужно только разрешение на создание ключей.
member0
08.08.2019 10:06Обычно после таких вот публичных
срачейраскрытий, компании таки идут на контакт, выплачивают положенное вознаграждение. И присылаются отписку, мол «Сотрудник Вася ошибся, просим прощения».
Но не уверен, что Valve «нормальные», учитывая, сколько раз я читал на тематических форумах «I found XSS in Steam, reported via ticket and email, posted on their forums and found my steam account disabled» и т.д. в таком же ключе.
Интересно, xi-tauw, локнут ли вам сам аккаунт. Если заблокируют — вообще отпетые.GDragon
08.08.2019 12:01+2Wargaming например именно такие, благо моему знакомому хватило ума тестировать и репортить не с основного аккаунта.
Он даже вознаграждения не просил, просто хотел что бы пофиксили.
Проблема была в том что подменой отправляемых пакетов можно было вмешиваться в расчёт «рандомных» переменных, например задавая им всегда возможный максимум.
Максимальная точность… пробитие… урон…
«Вы вмешались в работу клиента игры, это не является ошибкой, ваш аккаунт заблокирован за нарушение пользовательского соглашения.»
После такого фееричного ответа, баг был успешно продан и существовал в приватных читах почти 3 года.
alexvangog
08.08.2019 10:06Как защититься тем у кого уже стоит steam клиент? (удаление не предлагать т.к. это очевидный вариант) Быть может есть хоть какой-нибудь workaround?
xi-tauw Автор
08.08.2019 10:08Нужно ждать фикса от Valve (если он будет). Простых способов починить нет.
amarao
08.08.2019 10:42Переключайтесь на linux-версию стима. (Формально стим при этом не удаляется, а заменяется ОС).
GDragon
08.08.2019 12:02Поставить гостевую ось и в неё поставить стим?
juray
09.08.2019 04:11От пожирания ресурсов майнером это не спасет. Хотя от потери инфы из основной — вполне.
8street
09.08.2019 09:02И от потери инфы не спасет. Спасет только виртуалка, хотя и там могут быть уязвимости для выполнения кода в основной ОС.
sumanai
09.08.2019 13:04Спасет только виртуалка
Так ведь
гостевую ось
8street
09.08.2019 14:09Гостевая ось может находиться физически на одном винчестере в смежных разделах. Либо это какой-то узкоспециализированный термин?
mayorovp
09.08.2019 14:21Гостевая ось — это не ось, которой пользуются гости, а ось, запущенная на гостевой машине. Гостевая машина — это синоним слова "виртуалка".
juray
10.08.2019 19:25Да, «гостевая ОС» это термин — ОС, установленная на виртуальной машине, эмулируемой с помощью программы (эмулятора), запускаемой под хостовой ОС (host — «хозяин»).
all-ht.ru/inf/vpc/p_0_1.html
Отношение «хозяин-гость» между двумя ОС иерархично, а две операционки на разных разделах совершенно равны в правах (принцип «кто первый надел халат — тот и доктор» не может считаться нормальной системой разграничения прав).
LonerD
08.08.2019 13:39Верите, что за скидку в 90% вы не получите скрытый майнер?
Так это известный факт — в стиме сотни майнеров продаётся. И вовсе даже не скрытых. Никого сей факт не смущает — ни Valve, ни покупателей.mayorovp
08.08.2019 14:33+1Так простой майнер и правда не проблема: его как поставили — так и удалить можно, весь вред — моральный.
А разобранная тут штука потенциально позволяет сделать неудаляемый майнер-руткит. Вот это — уже проблема.
akdes
09.08.2019 15:43+1Поздравляю, Ваша информация/посыл пошла дальше…
Немецкий IT-Blogxi-tauw Автор
09.08.2019 15:56Спасибо. Я поглядывал на статьи, связанные с этой новостью. Это довольно интересно наблюдать — так, например, tproger.ru сделали новость на основе хабровской статьи, а anti-malware.ru перевели какую из западных (уже поправили, но артефакты все равно заметны).
Gugic
10.08.2019 06:13+1www.youtube.com/watch?v=HkVjLZBO7MY — вот и в уже почти сугубо развлекательных вещах упоминания пошли. Самый конец выпуска, с 5:50. (это новостной канал от одного из крупнейших западных техноблоггеров — www.youtube.com/user/LinusTechTips)
ExplosiveZ
10.08.2019 11:44+4GDragon
10.08.2019 16:21+2Почему крупные компании так любят скушать помоев?
Послать отрепортившего, попытаться запретить публикацию…
Ну не можешь ты быстро исправить, напиши нормальный ответ…
vergil01
10.08.2019 16:09Новости быстро расходятся и доходят даже до таких каналов. А что Steam? А ничего.
www.youtube.com/watch?v=HkVjLZBO7MY
Nexon
10.08.2019 16:32Спасибо за проделанную работу. В конечном счете Valve отреагировали на это, пусть хоть это может иметь последствия.
KarasikovSergey
На самом деле очень жирная дырка для ситуаций гостевого доступа к целевому компьютеру. Возможно, что стоит уведомить об этой проблеме Microsoft, так как в первую очередь такое вольное обращение с привилегированным доступом бьёт по безопасности Windows. А уже Microsoft вольна применить санкции к Valve, вынудив изменить алгоритмы работы сервиса.
loony_dev
Не уверен что Microsoft пойдет на это, это выбор пользователя, ставить такой софт, зная о проблеме или нет.
KarasikovSergey
Тогда и с малварью не надо бороться — пользователь сам ставит всякую фигню, запускает подозрительные файлы и так далее. Но нет. Думаю есть смысл попытаться — MS проще решить проблему кулуарно не дожидаясь какой-нибудь очередной эпидемии NotVasya
karabas_b
Не совсем. Пользователь ставит Steam, потому что Valve это солидная корпорация, которой, как считает пользователь, можно доверять. Разумеется, даже солидная, достойная доверия фирма может допустить уязвимость в софте, никто от этого не застрахован. Но достойная доверия фирма моментально делает все возможное для защиты пользователей, как только она узнала о новой уязвимости. Поскольку Valve информацию об уязвимости попросту проигнорировала, тупо подставив миллионы доверяющих ей пользователей под удар, она перестает быть достойной доверия фирмой, а ее дырявый софт превращается в уязвимость для фирмы Microsoft. Потому что если с помощью этой дыры кто-то удачно запустит malware, это бросит тень не только на Valve, но и на Microsoft — ведь компьютеры с другими ОС не пострадают. И сейчас уже очередь Microsoft сделать все возможное, чтобы защитить своих пользователей и оправдать их доверие. Учитывая колоссальное количество пользователей Steam, адекватным было бы официальное уведомление на сайте Microsoft о наличии уязвимости в этом ПО, а тогда уже пользователи могут сами решать, ставить такой софт, зная о проблеме, или нет. Конечно, сайт Microsoft мало кто читает, но сми быстро растиражировали бы эту новость, и необходимый эффект был бы достигнут.
На деле, конечно, достаточно будет короткого мейла от Microsoft в Valve с угрозой выкатить подобное предупреждение, чтобы Valve, вырывая на жопе волосы, бросила все силы на закрытие дыры.
GDragon
На самом деле всё немного иначе, МС в таких случаях угрожает перевести подпись в не-доверенные а не вывешивает предупреждение.
Но помогает вроде как тоже неплохо!
xi-tauw Автор
Я думал об уведомлении MS, учитывая, что они как раз опубликовали Safe Harbor (https://www.microsoft.com/en-us/msrc/bounty-safe-harbor), но все же ситуация не та — MS не виноваты и Valve не третья сторона, а первая.
MS не виноват и, в общем смысле вряд ли, имеет право указывать на ошибки.
KarasikovSergey
МС, конечно, не виноваты. Но наверняка у них есть требования к разработчикам сервисов с системным уровнем доступа на тему делегирования прав и защиты от несанкционированного использования.
xi-tauw Автор
У МС весьма своеобразные представления о том, что является границами безопасности. Даже среди своих компонентов они не все считают необходимым защищать. В стороннее ПО они не полезут и подавно. Например, посмотрите на мой обход UAC (https://habr.com/ru/company/pm/blog/328008/) — до сих пор работает.
loony_dev
Я может что-то не верно понял, но Steam не имеет системных прав, он работает в контексте админа, но не системы. А повышение до системных уже происходит через msiserver. Тут суть в том что мы стимом меняем права на msiserver.
xi-tauw Автор
Системные права и права админа практически не различимы. Разница скорее терминологическая, чем реальная.
navion
Steam Client Service работает в контексте системы.
FibYar
Прошу извинить, если скажу глупость, но я не разбираюсь в теме безопасности.
Вопрос такой — а насколько вообще корректна ситуация, что в Реестре Windows можно менять права у веток, на которые ссылаются симлинки? Другими словами, что мешает реализовать аналогичный подход без использования Steam? Ведь, если я правильно понял из текста, достаточно просто обладать правами на какую-то свою ветку в реестре и иметь возможность устанавливать права для дочерних веток. Нужны ли здесь вообще какие-то программы?
xi-tauw Автор
Строго говоря, нет ничего плохого, чтобы делать какие-то операции через симлинки. Ведь для этого они и были придуманы.
Без стима это все делать нельзя по ряду причин:
1) Симлинки из менее защищенных веток в более защищенные не работают (условно говоря, симлинк из HKCU в HKLM не будет работать).
2) Чтобы создать симлинк в HKLM в 99,99% ключей нужно уже иметь права администратора, по дефолтным правам доступа.
FibYar
Понятно. Спасибо за объяснение!
xMushroom
То есть проблема получается в том, что сервис устанавливает общие права доступа для ключа, который находится в защищенной ветке реестра HKLM? И это позволяет создать симлинк из нее в другую защищенную, и доступ по этому симлинку будет работать с правами исходной ветки?
Это выглядит как-то странно. Получается, ни в коем случае нельзя давать доступ на запись обычным пользователям ни в один из ключей из HKLM?
xi-tauw Автор
Вы неправильно вывели общее из частного.
Получается, не надо давать доступ на запись обычным пользователям в те папки, с которыми, в последствии, будут происходить манипуляции.
Сам по себе симлинк не дал никаких новых прав — это сделал сервис, пройдя по симлинку.
xMushroom
А, теперь понял, спасибо.
mayorovp
Программы нужны. Права-то меняет не атакующий, а именно что Steam Client Service, в процессе рекурсивного обхода "своей" ветки реестра.
xi-tauw Автор
Именно так.
realimba
M$ начхать даже на кривые драйвера, что говорить о сервисе.
Ядро монолит изжило себя и с каждым днем будет только хуже, как же долго я ждал этого дня :D
https://www.unknowncheats.me/forum/anti-cheat-bypass/334557-vulnerable-driver-megathread.html
sumanai
А много вы знаете ОС с не монолитом? И готовы ли терпеть тормоза микроядер?