И ещё один Steam Windows Client Local Privilege Escalation 0day

    В предыдущей серии


    Не так давно я опубликовал описание уязвимости для Steam. Я получил много отзывов от читателей. Valve не проронили ни слова, а HackerOne прислал огромное слезливое письмо и, в основном, молчал. В итоге меня забанили Valve на H1 — я не могу участвовать в их программе по отклонению уязвимостей (остальной H1 мне доступен).



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

    А оно простое и грустное — Valve все так же терпят фиаско. Последнее обновление, которое было призвано устранить проблему, легко обходится и уязвимость все еще актуальна. Да, я это проверил — прекрасно работает.

    Но эта статья не о том, что старая уязвимость все еще присутствует, а о новой. Поскольку Valve еще раз изъявили желание прочитать публичный отчет, вместо частного, не будем лишать их этого удовольствия.

    Краткое описание уязвимости


    Общее описание эксплуатации уязвимости довольно несложно и состоит из трех шагов:

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

    Все эти действия может выполнить любой пользователь ОС, а еще точнее — любая программа на компьютере. В результате можно выполнить любой код с максимальными привилегиями, такой класс уязвимостей называется escalation of privileges (eop) или local privilege escalation (lpe). Несмотря на то, что любое приложение может само по себе нанести какой-то вред, получение максимальных прав приведет к гораздо более существенным последствиям. Выключение антивируса и файрвола, установка руткита, скрытие процесса-майнера, кража личных данных всех пользователей ПК — это только малая часть того, что можно придумать.

    Теоретический минимум


    Было очень забавно наблюдать комментарии к предыдущей статье, где люди писали «В HKLM ключи реестра пользователь писать не может» или «Чтобы создать симлинк нужны права администратора». Интересно, что проверка этих утверждений займёт едва ли дольше, чем написание такого комментария. И, да, на всякий случай: оба утверждения ложны. Поэтому в этой статье я решил сделать небольшой раздел, где описал ряд сложных моментов из эксплуатации.

    «В раздел реестра HKLM нельзя писать пользователю»


    Нет такого общего правила. Есть конкретные правила безопасности, для конкретных ключей реестра. Valve выставила права полного доступа для всех пользователей на ветку HKLM\SOFTWARE\Wow6432Node\Valve\steam, и поэтому в данной ветке любой пользователь может делать, что хочет.

    «Нельзя запустить или остановить сервис без прав администратора»


    Нет такого общего правила. Есть конкретные правила безопасности для конкретных сервисов. Valve выставила права так, что сервис Steam Client Service может быть запущен и остановлен любым пользователем.

    «Для создания симлинка нужны права администратора»


    Это сам по себе забавный вопрос, учитывая, что из 5 основных видов линков в Windows только полтора требуют эти права. Итак, встречайте: file symbolic link, object directory symbolic link, hard link, NTFS reparse point и reg_link. Права администратора нужны только для создания file symbolic link и для постоянного object directory symbolic link (временный живет ровно столько, сколько живет сессия, в которой он создан, в общем смысле до перезагрузки, и специальных прав не требует).

    Симлинк с папки на папку


    Это называется NTFS reparse point или NTFS mount point. Название особо не важно, суть в том, что эта штука позволяет использовать одну папку как указатель на другую. Может создаваться обычным пользователем из пустой папки, если у него есть права Write для нее. Для создания будем пользоваться утилитой CreateMountPoint.exe из набора утилит для тестирования работы с линками.

    Уступающая блокировка


    Уступающая блокировка (OpLock или Opportunistic Lock) — это специальный механизм, при котором одно приложение может временно заблокировать доступ всем к некоторому файловому ресурсу. Тут много всяких деталей можно написать, особенностей работы с папками и разными доступами. Суть вкратце: программа может «поймать» событие обращения к некоторому файлу и задержать его на время. Устанавливать оплоки можно утилитой SetOpLock.exe из того же набора тестирования работы с линками. Запуск утилиты устанавливает требуемый оплок; когда происходит доступ, то утилита пишет сообщение; нажатие enter снимает оплок.

    BaitAndSwitch


    Это название приема, который комбинирует создание линков и установку оплоков, чтобы выиграть TOCTOU (time of check\time of use). Суть проще объяснить на примере.

    Представьте, что есть некоторая программа, которая подряд делает что-то типа такого:

    ReadContentFromFile(“C:\test\myfile.txt”);
    ReadContentFromFile(“C:\test\myfile.txt”);

    Это просто чтение одного и того же файла два раза подряд. Всегда ли будет прочитано одно и то же? Нет, не обязательно.

    Сначала создадим две папки с файлами C:\test1\myfile.txt и C:\test2\myfile.txt. А папку C:\test вообще очистим и создадим reparse point на C:\test1. Поставим оплок на файл из первой директории и запускаем программу. Как только она откроет файл, сработает оплок. Мы поменяем reparse point и C:\test будет указывать на C:\test2. Теперь, после того, как оплок будет снят, программа прочитает файл во второй раз уже из другого файла.

    Зачем это нужно? Очень просто — довольно типичная ситуация, где файл сначала проверяют (первое чтение), а потом уже запускают (второе чтение). Вот так мы на проверку отправим один файл, а на исполнение — другой.

    Теперь все готово к эксплуатации.

    Эксплуатация 1. Подготовка окружения


    Надо немного подготовить рабочее окружение. Начнем с того, что необходимо взять исполняемые файлы CreateMountPoint.exe и SetOpLock.exe.

    Теперь надо провести небольшие изменения в файловой структуре Стима. Наша задача — получить папку с двумя файлами Steam.exe и steamclient.dll и обязательным отсутствием папки bin. Это можно сделать двумя способами.

    Способ 1


    Переименовать\удалить папку bin из основной папки Steam. Все, вы великолепны (Стим при установке дает любому пользователю права на все в его папке).

    Способ 2


    В ключе реестра HKLM\SOFTWARE\Wow6432Node\Valve\steam изменить параметр InstallPath на какую-нибудь нашу папку. В эту папку закинуть Steam.exe и steamclient.dll из основной папки Стима.

    Пусть любым из способов мы подготовили папку C:\Steam (путь может быть любой, но в примерах я буду использовать этот). Теперь создадим в ней еще папки b1, b2, b3 и b4. В первые три закинем файл steamservice.dll (из комплекта Стима, в оригинале он лежал в папке bin), а в папку b4 закинем специально сформированную библиотеку с тем же именем — steamservice.dll. Подробно о подготовке библиотеки будет в 3 пункте.

    Открываем два окошка консоли. На этом подготовка окружения завершена.

    Эксплуатация 2. Подменяем файл


    Я думаю, что из приготовлений уже стало понятно, что будет что-то типа описанного выше BaitAndSwitch.

    Скриншот из ProcMon:



    Это часть лога типичного старта сервиса Steam Client Service. Обратите внимание на часть, где dll сначала копируется в C:\Program Files (x86)\Common Files\Steam, а затем загружается. Мы сделаем так, чтобы скопировалась наша библиотека из C:\Steam\b4. К сожалению, сначала идут проверки, в том числе проверяется подпись библиотеки, чтобы ее нельзя было подменить (о, ирония).

    Итак, распишу по шагам. Шаги объединены в группы из однотипных действий. Для каждого шага будет указано, где что запускать и что происходит (разные окошки консоли я назвал cmd1 и cmd2).

    1. Создаем папку C:\Steam\bin и в cmd1 выполняем:
      CreateMountPoint.exe С:\Steam\bin C:\Steam\b1
    2. В cmd1 ставим оплок:
      SetOpLock.exe C:\Steam\b1\steamservice.dll
    3. Запускаем сервис Steam Client Service, видим в cmd1, что поймали обращение к файлу.

      ***
    4. Удаляем C:\Steam\bin, создаем на его месте папку C:\Steam\bin и в cmd2 выполняем:
      CreateMountPoint.exe С:\Steam\bin C:\Steam\b2
    5. В cmd2 ставим оплок:
      SetOpLock.exe C:\Steam\b2\steamservice.dll
    6. В cmd1 отпускаем оплок, видим, что в cmd2 поймали обращение к файлу.

      ***
    7. Удаляем C:\Steam\bin, создаем на его месте папку C:\Steam\bin и cmd1 выполняем:
      CreateMountPoint.exe С:\Steam\bin C:\Steam\b3
    8. В cmd1 ставим оплок:
      SetOpLock.exe C:\Steam\b3\steamservice.dll
    9. В cmd2 отпускаем оплок, видим, что в cmd1 поймали обращение к файлу.

      ***
    10. Удаляем C:\Steam\bin, создаем на его месте папку C:\Steam\bin и cmd2 выполняем:
      CreateMountPoint.exe С:\Steam\bin C:\Steam\b2
    11. В cmd2 ставим оплок:
      SetOpLock.exe C:\Steam\b2\steamservice.dll
    12. В cmd1 отпускаем оплок, видим, что в cmd2 поймали обращение к файлу.

      ***
    13. Удаляем C:\Steam\bin, создаем на его месте папку C:\Steam\bin и cmd1 выполняем:
      CreateMountPoint.exe С:\Steam\bin C:\Steam\b3
    14. В cmd1 ставим оплок:
      SetOpLock.exe C:\Steam\b3\steamservice.dll
    15. В cmd2 отпускаем оплок, видим, что в cmd1 поймали обращение к файлу.

      ***
    16. Удаляем C:\Steam\bin, создаем на его месте папку C:\Steam\bin и cmd2 выполняем:
      CreateMountPoint.exe С:\Steam\bin C:\Steam\b4
    17. В cmd1 отпускаем оплок

    Хоть и выглядит сложно, на самом деле идея простая: из 6 обращений к файлу C:\Steam\bin\steamservice.dll первые 5 раз были отданы файлы-оригиналы из разных папок (в порядке обращения: b1, b2, b3, b2, b3), а в шестой раз для копирования был отдан файл с полезной нагрузкой.

    Схематично я изобразил это так:


    Слева — нормальное поведение, справа — поведение с эксплоитом.

    Эксплуатация 3. Внедряемая библиотека


    Для полезной нагрузки я сначала воспользовался самой типовой своей dll, которая в DllEntry создает интерактивную консоль. Поскольку код из dll будет выполнен в контексте Steam Client Service, он будет выполнен с теми же правами, что и сам сервис – NT AUTHORITY\SYSTEM. Но в результате эксплуатации консоль не появилась.

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

    Пришлось немного пореверсить, и оказалось, что сервис после загрузки dll проверяет существование функций

    int WINAPI SteamService_RunMainLoop()
    void WINAPI SteamService_Stop()

    в библиотеке. Более того, сервис вызывает первую функцию, где я и решил поместить полезную нагрузку (запуск интерактивной консоли с правами сервиса – NT AUTHORITY\SYSTEM). Вот теперь совсем все — повторяем все действия и получаем консоль с максимальными правами.

    Заключение


    Можно все это завернуть в exe-файл, но, честно говоря, мне не очень хочется заморачиваться. Я думаю, что видео с демонстрацией будет достаточно (вариант с реестром, вариант с файловой системой).
    Я не буду копировать сюда раздел «Спекуляции» из прошлой статьи. Просто факты: старая уязвимость актуальная, о новой вы только что прочитали, Valve все так же не хотят слышать о проблемах.

    Update (22.08.2019)


    На данный момент есть две новости:

    1. Клиент беты получил обновление с исправлениями. Смотреть буду когда обновление дойдет до основного клиента.
    2. Valve поменяло политику в отношении LPE. И это отличная новость!


    Update (27.08.2019)


    Хорошие новости.

    1. Основной клиент получил обновление с исправлениями.
    2. Меня разбанили на H1 и выплатили награду


    This article in english.
    Перспективный мониторинг
    252.99
    Company
    Share post

    Comments 92

      +8
      А они молодцы и последовательно превращают ситуацию в абсурд…
        +1
        Вот буквально спрашивал в комментах к прошлой статье — забанили ли?
        В итоге меня забанили Valve на H1 — я не могу участвовать в их программе по отклонению уязвимостей (остальной H1 мне доступен).

        Получил ответ =) Класс, что сказать, отличный подход. В следующий раз продайте на черном рынке найденный у них баг, желательно подешевле, чтобы как можно больше блекхетов заюзали баг и поюзали их. Раз по-человечески не реагируют.
          +3
          Я не согласен с походом Valve, но и использвания блекхатами тоже не одобряю. Я надеюсь, что они просто одумаются и нормально пофиксят.
          0

          А не проще подложить какую-нибудь неявно используемую библиотеку, например xinput?

            +2
            Проще, но сервис копирует именно steamservice.dll, а не что-то еще и на имя нельзя повлиять.
            +1
            уязвимость может работать без физического доступа взломщика к компьютеру и системному реестру?
              +6
              Без проблем может, к примеру я создаю якобы суперпупер полезную программу которой не требуются права админа и при попытке её запуска она рестартует сервис стима и выполняет нужный ей код с правами системы…
              0
              Я может невнимательно читал, но зачем переделывать симлинки и пихать настоящую библиотеку в разные папки, если можно просто поймать шестой оплок? Или нельзя?
                +1

                Чтобы Steam проснулся — нужно снять оплок. Но в таком случае можно уже не успеть поставить следующий. Значит, надо ставить второй оплок перед снятием первого. А для этого нужны два разных файла, иначе (тут я уже гадаю) либо второй оплок не встанет, либо Steam не проснётся.

                  +1
                  Примерно так и есть. Надо успеть пропустить пять обращений перед шестым. Чтобы сделать это гарантированно — мы ловим все шесть по-очереди через оплоки.
                +2
                После загрузки сервис Стима все же понимает, что ему подсунули липу, и завершает работу, поэтому полезная нагрузка из моей dll не успела выполниться.

                Пришлось немного пореверсить, и оказалось, что сервис после загрузки dll проверяет существование функций

                Больше похоже, что сервис просто получает из библиотеки эти две функции и выполняет их. То есть цели "проверить что не подсунули липу" не было, просто без этих функций работать нечему.

                  +3
                  В общем, да. Просто он завершается сразу по обнаружению отсутствия функций, поэтому это идёт как одна из проверок dll.
                  +2
                  Пока Valve делает покерфейс, что я могу сделать для защиты компов детей от этой уязвимости?
                  Используются ограниченные учетки на виндовс 7 и 8.
                    +7

                    Удалить Steam, больше ничего в такой ситуации не сделать.


                    Ну или смириться с тем, что учётки детей на самом деле не ограниченные, а немножко системные...

                      +15
                      Удалить Steam
                      Я не хочу массовых домашних волнений и несанкционированных митингов.
                        +2

                        Тогда просто внесите стим в реестр запрещенных к запуску у вас на компьютере программ :)

                          0
                          Так проблема в его службе, а не самой программе.
                          А вот пиратство поможет ))
                      0

                      Можно попробовать настроить те самые права доступа к папке bin вроде. Убрать права на запись у не-админов. И в реестре то самое.


                      Следует отметить, что именно "убрать права", а не "запретить", потому что Админ наследуется от простого юзера, а у запрета приоритет выше.

                        0

                        А Steam не восстановит ли права обратно?

                          0
                          Восстановит однозначно. Вопрос когда. Если при запуске той же dll с привилегиями, то смысла нет. А если при своем обновлении, когда я ему даю права через UAC, то норм. Обновился и потом снова поправить права.
                            0
                            При запуске Стима предложит восстановить права на папку, вроде даже с последующим запросом UAC.
                              0
                              И если отказаться, то не запускается?
                                0
                                Можно нажать Ignore и сам клиент продолжит работать.
                          0
                          Убрать — это свойства папки — безопасность — дополнительно — далее удаляем строчку с соответствующим пользователем (группой)?
                            0
                            Да. Но именно убрать галочку с «разрешить», а не поставить на «запретить».
                              0
                              Поясните, плз, разницу. Выше Вы написали, что у запрета приоритет выше, тогда почему не воспользоваться?
                                0

                                Потому что запрет получится всем пользователям, включая администраторов.

                                  0
                                  Админ наследуется от Юзера. То есть если запретить что-то Юзеру, ты запрещаешь и Админу. И даже если отдельно разрешить это админу — не сработает, потому что у запрета приоритет выше.

                                  Вот так я реализовал READONLY для не-администраторов
                                  image

                                    0
                                    Спасибо, понял. Жаль ничего не могу, кроме спасибо :)

                                    Еще конечно остается вопрос, почему админ наследует права от юзера, но я готов принять на веру сумрачный гений от мелкомягких.
                                      0
                                      почему админ наследует права от юзера

                                      Потому что он является пользователем компьютера же.

                                        +1
                                        Подразумевается что администратор это пользователь имеющий большие права.
                                        А не что пользователь это урезанный администратор.
                              0
                              Запретить запуск приложений из не доверенных папок + запретить запись в доверенные папки учёткам детей. Если код не сможет запустится — он не сможет поднять привилегии (а если сможет — то у вас и без поднятия привилегий будет достаточно проблем).
                                0
                                Я этого осознанно не делаю. Ну зашифруется все, до чего сможет дотянуться с этими правами. Это комп дитятки и папка на НАСе. Ну и что? Ребенок потеряет сейвы игр (подозреваю, что не все) и какую-то еще несданную домашку. Зато будет урок.
                              +3
                              Прощу прощения у комментатора, чей комментарий я случайно отклонил. У него был вопрос зачем столько файлов в жонглировании.
                              b4 — папка с нагрузкой, без этого файла нельзя
                              b2 и b3 — нужны для тасовки между оплоками.
                              b1 — нужен поскольку Steam первый раз открывает файл эксклюзивно и на этот файл больше нельзя поставить оплок, а, значит, он не будет участвовать в жонглировании.
                                +1
                                Спасибо за разъяснение
                                –13
                                Боже, да кому какое дело до поднятия привилегий на десктопной машине? Если злоумышленник может запустить произвольный код на моей машине — я уже в жопе, не важно с привилегиями или нет. Это примерно из той же области что висячий замок на холодильнике, чтобы злоумышленник не смог похитить мои помидоры. Valve порой творит полную херню, но в данном случае я целиком на их стороне — плевать на такую уязвимость.
                                  +10

                                  Вы, наверное, сидите под админом с выключенным UAC? Тогда для вас это и правда ни разу не уязвимость.


                                  Но ведь не все так поступают. А Steam, выходит, одним своим существованием перечеркивает последние 13 лет улучшения безопасности windows.

                                    +3
                                    Даже если сидеть не под админом и со включенным UAC — запуск произвольного кода может натворить достаточно неприятностей, потому что ко всем пользовательским данным есть доступ без повышения привилегий. Или вы искренне считаете что на компьютере без стима можно запускать что угодно и вы будете в полной безопасности? Тогда вас может однажды ждать большой (но не очень приятный) сюрприз… Надеюсь вы хотя бы бэкапы делаете.
                                      +4

                                      А зачем вообще в таком случае UAC придумали, по-вашему?

                                        –1
                                        На десктопе — только как защита от не-злонамеренного дурака, чтобы пользователь или криво написанный софт случайно не поломал всю систему.
                                        На сервере — ещё и для защиты от несанкционированного доступа пользователей к системе и данным других пользователей. В принципе, то же верно для общественного компьютера.
                                        В первом случае поднятие привилегий неважно — хотя бы потому, что пользователь может сам нажать подтверждение на поднятие привилегий, и никто ему не помешает сделать эту глупость.
                                        Во втором случае — это действительно серьёзная уязвимость. Но благо на серверах стим не запускают. Хотя вот пока всё это писал, понял, что эта уязвимость таки будет существенной в одном случае — для авторизованных компьютерных клубов, предоставляющих доступ к играм стим на повременной основе за деньги. С другой стороны, если в этих клубах не настроен запрет запуска посторонних запускаемых файлов — они сами себе злобные буратины. Да и не знаю если честно, есть ли ещё такие клубы…
                                          +2
                                          С другой стороны, если в этих клубах не настроен запрет запуска посторонних запускаемых файлов — они сами себе злобные буратины.

                                          А такой запрет и не получится сделать: папка стима же полна автоматически обновляющихся исполнимых файлов, как там отловить посторонние?

                                            –2
                                            И что? То, что стим может туда писать — не значит что и пользователь должен иметь такую возможность.
                                              +2

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

                                                –4
                                                Права писать туда можно поменять. И если это не домашний ПК, а ПК в клубе — НУЖНО поменять. И эксплоит работает не на этом эффекте. В описанном эксплоите предполагается что злоумышленник может запустить произвольный код на ПК, и с помощью обмана сервиса Steam поднять себе привелегии до суперпользователя. Но сама по себе эта уязвимость НЕ ДАЁТ никаких дополнительных возможностей по запуску произвольного кода. Смогли запустить код = стали админом. Не смогли запустить код = пошли плакать в уголке. Так вот, речь о том, что в клубе, вообще говоря, должны быть приняты меры, чтобы пользователь НЕ МОГ запустить произвольный код. Да, этот эксплоит действительно может попортить жизнь владельцам клубов, потому что они могли закономерно не принимать таких мер, рассчитывая на то, что UAC защитит их проблем, а никаких персональных данных на их ПК нет, и можно позволить пользователям запускать любой код. Если в добавок к этому перезагружать ПК перед каждым новым пользователем — проблем не будет. С этим эксплоитом — да, владельцы клубов с такой политикой могут получить определённые проблемы. Но, в общем-то, только они.
                                          0
                                          По вашему UAC нельзя обойти?
                                          github.com/hfiref0x/UACME
                                            0

                                            Все эти способы уже исправлены.

                                              0
                                              Мой там под номером 32 и он не исправлен. Как и пачка других.
                                                0

                                                И правда… Но я все равно не считаю это поводом увеличивать число способов обхода.

                                                  0
                                                  Согласен.
                                      +1
                                      AppLocker/SRP тоже перестаёт работать благодаря Steam, а эксплоит в браузере сразу знает куда писать нагрузку.
                                      0

                                      Хммм, а в steam on linux данная уязвимость присутствует?

                                        0

                                        Что-то не могу сообразить, от какого юзера под виндой запускается стимсервис
                                        Сейчас посмотрел — бинарника с названием steamservice я вообще не вижу
                                        Для проверки даже запустил игру и посмотрел дерево
                                        Первый скрин с фильтром по имени, второй — без


                                        Немного скринов


                                          0

                                          При чём тут вообще игра? Steam Client Service — это на винде служба, значит на линуксе это должен быть демон.

                                            0

                                            Разве демон не будет висеть в процессах?

                                              0

                                              Не обязательно. Он же может по запросу стартовать. Например, при установке или обновлении игры.

                                                0

                                                Попробовал установить игру, ничего похожего не появилось. Хотя может я что-то неправильно делаю, но ни во время загрузки, ни сразу после нее, ни при первом запуске ничего не появилось

                                              +1
                                              > значит на линуксе это должен быть демон.
                                              В линукс версии нет никаких демонов или сервисов. Клиент на 100% работает от имени пользователя. Все файлы клиента хранятся в папке пользователя.
                                            0

                                            В линуксе стим по-моему работает чисто в userspace и рута никогда не дёргает.

                                            +1
                                            «Пока гром не грянет мужик не перекрестится». Ой чувствую проучат steam за такое отношение к созданию проблем. Мы уже тут две уязвимости имеем, а они говорят что их нет.
                                            Повышение прав вредоносного ПО через определенную уязвимость есть вторая стадия его жизни. Даже при условии что проникновение в систему не возможно в принципе, нельзя оставлять возможность неконтролируемого повышения прав.
                                            Это нас так в колледже учили. У них походу этому вообще не учат. «Ребят, к нам голодный тигр бежит! Может пристрелим его, пока он нас не сожрал? ЧТО?! ВАМ ЛЕНЬ РУЖЬЕ ЗАРЯДИТЬ?!»
                                            Они видать ещё не попадали под такую ситуацию, при которой из-за их уязвимости производились крупные преступления. Но как говорится — всё бывает в первый раз.
                                              +2

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

                                                0
                                                Насколько я вижу, там ссылки уже есть.
                                              +1

                                              Когда Valve решила дропнуть поддержку Ubuntu вместо того, чтобы наконец сделать 64-битный стим, я сильно озадачился. Но после этой новости я просто охренел.

                                                0
                                                не поверите но стиму 64 битным стать не сложно, но при этом превратятся в «тыкву» все 32 битные игры. А пользователи купившие эти игры после такого в восторг не придут.
                                                  0
                                                  1. Кто мешает сделать клиент 64бит, но написать 32бит либы для совместимости? Не слишком просто, но в теории вполне решаемо.
                                                  2. Нет стима — 100% игр из него "тыквы". Так лучше? Что делать тем, кому хватит и 64бит игр?
                                                    0
                                                    потому что в самой системе должна быть собрана glibc с поддержкой 32 бит, а это уже без поддержки системой ничем не заменить. Поэтому если вдруг убунта выкинет поддержку 32 битного софта полностью то и стим обломится, а вместе с ним и 32 битные игры…
                                                      0
                                                      Нет стима — 100% игр из него "тыквы". Так лучше? Что делать тем, кому хватит и 64бит игр?
                                                        0

                                                        Убунта собиралась, но одумалась: https://ubuntu.com/blog/statement-on-32-bit-i386-packages-for-ubuntu-19-10-and-20-04-lts. Как я понял, часть либ оставят, но остальные и приложения выкинут + доступны полноценные окружения в Snap'ах.
                                                        Кстати, а много ли 32бит игр под линукс в стиме и почему? Он (linux) вроде всегда целился на 64бит в основном.


                                                        P.S.: в своё время мучался с постоянными крашами одной 32bit игры. Перепробовал всё, даже поставил (на соседний диск) SteamOS. В результате так ничего и не добился, пришлось забить. Это к тому, что 32бит игры и так не сахар нынче в линуксе.

                                                  +1
                                                  На мой взгляд — тепличный путь эксплуатации уязвимости, требующий действий от пользователя, а не на уровне — открыл веб-страницу через браузер стима, получил тыкву. А тут надо ставить чей-то софт, а это значит, что софт должен быть сомнительный. Действия Valve это, впрочем, не оправдывает, но по существу это не критическая уязвимость. Юзер точно так же может поставить рандомную инди-игру от Васяна, которая при установке запросит права админа, или даже без них, а потом сольёт кучу данных налево, или ещё что натворит, и никакой стим для этого ей не понадобится.

                                                  Кроме того, в Стиме же куча игр, созданных в эпоху 2000/XP, которые не в курсе про всякие UAC/MAC и т.п., соответственно, они чаще всего на этапе установки начинают требовать админские привилегии сразу. И они же вроде как через Стим получают нужные им привилегии, не спрашивая юзера. Стим не этот механизм использует для раздачи привилегий играм из каталога?
                                                    +1

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

                                                      +1
                                                      Более того, в 99% случаев так и происходит, вплоть до того что одной уязвимостью получают доступ к сетевому протоколу, второй уязвимостью подменяют трафик, третьей уязвимостью сохраняют код на пк, четвёртой его выполняют, пятой поднимают ему права, шестой маскируют этот код и так далее.
                                                      «Шведских» уязвимостей вида всё в одном практически не бывает (ну если разработчики не совсем конченые...).
                                                        –3
                                                        И я не устану повторять — если через какую-то дыру к вам в систему проникли — вы уже в жопе, и не важно, смог зловред повысить привилегии или нет.
                                                          +4

                                                          Да вообще-то важно. Ок, с юзерскими привилегиями он, возможно, зашифрует вам файлы. Неприятно, но есть восстановление системы, есть антивирус, который по поведению такое на раз два вычисляет. Если же у него есть системные права, то антивирь он вырубит и зашифрует не только юзерские файлы, но и вообще всю систему вместе с теневыми копиями.


                                                          Да, и это если речь идёт про одно пользователя. У меня на домашнем компьютере, к примеру, кроме моего пользователя есть ещё пользователь жены. Если она подцепит что-то юзермодное, то мои файлы при этом не пострадают. А если малварь сможет повысить привилегии, то см. выше.

                                                            –3
                                                            Если у вас теневые копии вместо полноценных бекапов — то вам не вирусов надо бояться…
                                                            А если есть бекапы — то и систему переставить не проблема. Будем запускать всё подряд, неважно откуда? Ну ок…
                                                            И да, антивирусы это фигня, ни разу не видел чтобы эвристика кого-то защитила. Ну, то есть, наверное она таки защищает кого-то когда-то, но процент этих случаев так мал что и упоминания не стоит.
                                                              +3

                                                              Я не говорил, что теневые копии вместо бекапов. Они их отлично дополняют — восстановиться проще, делаются постоянно.
                                                              При чём тут "запускать всё подряд, не важно откуда"? Я вроде выше написал как раз о том, что пострадать от такой уязвимости можно и без ошибки пользователя. Да и "проверенные" источники софта тоже иногда подводят.
                                                              На счёт антивирусов — ну раз вы говорите, что фигня и даже статистика с процентами у вас есть, значит так оно и есть. Пойду удалю.

                                                                –1
                                                                Я антивирус удалил уже лет ~15 назад (или 20? надо было засечь...), пока ни одного заражения (да, я примерно раз в год проверяюсь антивирусом с livecd). Учитывая состояние здоровья — у меня есть все шансы до первого заражения банально не дожить. Но нет, других следовать моему примеру не призываю — потому что люди-то бывают разные…
                                                                  +1
                                                                  У меня тоже нет антивируса. Но это не значит что меня не могли взломать, например, через js/firefox, апдейт игры в стиме или дыре в моей любимой IDE при проверке апдейтов (как я это проверю, даже при наличии квалификации?) или что-то еще на выборке в миллионы людей. Особенно если я каким-то образом попал под прицел профессиональных хакеров (счет в банке например большой).
                                                      0

                                                      Они там совсем на солнышке перегрелись?
                                                      Автор, подскажите, что Вам в тоге по поводу бана сказали? Совсем обезумели.

                                                        +2
                                                        Я нарушил правила (публично раскрыл уязвимость) — меня забанили. Я не имею претензий на этот счет.
                                                          0
                                                          публично раскрыл уязвимость
                                                          Какую уязвимость, если они её такой не признали?
                                                            +1
                                                            Хорошо, пусть будет «публично раскрыл репорт». Это не меняет сути.
                                                            Я не согласен с общей политикой Valve, но это не отменяет того, что я нарушил правила.
                                                              +3
                                                              Правило не раскрытия нужно для того, чтоб успели исправить.
                                                              Если они отказывались править, то пользователи имеют право знать в лицо таких разработчиков.
                                                              Кстати, а нельзя ли петицию в МС какую организовать, чтоб те подпись валве добавили в непроверенные там и при запуске программ выдавали «сия программа дает возможность злоумышлинникам творить зло на ваших компах?
                                                            0

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

                                                              0
                                                              нет, за прошлый забанили, из-за чего он новый не мог создать.
                                                                0

                                                                Тогда это тем более странно, он же им писал, что вот так и так… в общем, это наглядно показывает отношение разработчиков и в частности Вальве к исследователям.
                                                                После такого начинаешь задумываться, а не продать ли мне на чёрном рынке найденное...

                                                                  0
                                                                  Именно. Мы косяк не признаем, но рассказывать о нём вы не можете.
                                                                  Единственный вариант — активнее создавать плохую репутацию их разрабам и давить через ту же МС.
                                                            0
                                                            Да. Подождем патча основного клиента. В прошлый раз двух попыток исправления не хватило.
                                                              +4
                                                              Обновил статью новостями.
                                                              1) Основной клиент получил обновление с исправлениями.
                                                              2) Меня разбанили на H1 и выплатили награду.
                                                                +4
                                                                1) Радует всё что хорошо кончается
                                                                2) Грустно что для «хорошего» конца нужна мировая шумиха…
                                                              +3
                                                              Статья про эту ситуацию на arstechnica.

                                                              Only users with full accounts can post comments. Log in, please.