Игры Антон Самитов
5 088

В коде Steam исправили критическую уязвимость, просуществовавшую больше десяти лет

На брешь в защите из-за простого бага обратили внимание лишь в начале 2018-го.

В закладки

30 мая специалист по кибербезопасности Том Корт (Tom Court) описал уязвимость в коде клиента Steam, которую сам же и помог обнаружить разработчикам.

Эксплойт был связан с тем, как программа работает с фрагментами блоков информации, передающимися через UDP и собственный протокол Steam. В определённых условиях могло произойти повреждение содержимого памяти, что позволяло осуществить удалённое выполнение кода (RCE).

Уязвимости подобного рода считаются одними из самых опасных, так как фактически дают взломщику доступ к ПК жертвы.

Демонстрация работы эксплойта — запуск калькулятора через клиент Steam

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

При этом эксплойтом стало пользоваться куда сложнее с июля 2017 года, когда разработчики переработали защиту от уязвимостей. После обновления при попытке взлома тем же путём Steam попросту «вылетал».

Корт сообщил о «дыре» в феврале 2018-го, и Valve выпустила бета-версию патча спустя лишь восемь часов — удивительно быстро, отмечает эксперт. Окончательно уязвимость устранили 22 марта.

В начале мая 2018-го Valve запустила программу денежных вознаграждений за найденные в коде Steam уязвимости.

#steam #технологии

{ "author_name": "Антон Самитов", "author_type": "editor", "tags": ["steam","\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438"], "comments": 45, "likes": 47, "favorites": 2, "is_advertisement": false, "subsite_label": "games", "id": 20585, "is_wide": false }
{ "id": 20585, "author_id": 24538, "diff_limit": 1000, "urls": {"diff":"\/comments\/20585\/get","add":"\/comments\/20585\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/20585"}, "attach_limit": 2, "max_comment_text_length": 5000 }

45 комментариев 45 комм.

Популярные

По порядку

Написать комментарий...

Andrey Apanasik

21

"Похоже, что старая часть кода, где и находился баг, в остальном работала исправно, и у Valve попросту не было причин проверять её на соответствие всем современным стандартам безопасности"
Раньше стандарты безопасности разрешали не проверять свой код на наличие багов?

Ответить

Alexander Pankov

Andrey
31

Спросите это инженеров Intel и AMD.

Ответить

A X

Andrey
10

Так исправно же работала, о каких багах речь?

Ответить

Andrey Apanasik

A
0

Не пойман - не вор?

Ответить

Мимокрокодил

Andrey
2

Часто ли ты в своей жизни тесты писал?

Ответить

Sdfal Sdfal

Мимокрокодил
3

Часто ли ты в своей жизни тесты писал?

Ответить

Andrey Apanasik

Мимокрокодил
0

В каждом проекте. Не 100% покрытие, безусловно, но я стараюсь. Вы пытаетесь оперировать к тому, что "нельзя всё покрыть тестами"? Так моя претензия не к этому вообще была. А к формулировке, которая говорит, что раньше "стандарты позволяли косячить".

Ответить

Никита Хэзэковъ

Andrey
2

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

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

Ответить

Мимокрокодил

Andrey
1

Нет, я хотел оперировать к тому, что "и какие бы тесты ты написал для отлова этой уязвимости, и часто ли ты пишешь новые тесты к легаси-коду"?

Что формулировка отстойная, спору нет, но ведь я и не на тот комментарий ответил, верно?

Ответить

Andrey Apanasik

Мимокрокодил
–2

"и какие бы тесты ты написал для отлова этой уязвимост"
Я на таком низком уровне не работаю. Не могу сказать. Как минимум, мне не понятно, зачем было для клиента городить свой протокол,.

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

Ответить

Мимокрокодил

Andrey
0

Протокол - вроде там ничего особенного, простая обертка вокруг UDP. А так как клиент должен был заниматься и отображением магазина, и загрузкой игр, то желание написать свой протокол нормально.

Почему не были написаны тесты - потому что это геймдев)

Ответить

Rudolf Cunningham

Andrey
0

В то время тесты почти нигде не писали.

Ответить

Dmitry Namynnuz

Andrey
1

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

Ответить

Flame

Andrey
0

Раньше стандарты ГОСбезопасности запрещали проверять свой код на наличие багов.
/пофиксил, шурша шапочкой

Ответить

Nikita Savyolov

9

В стиме уже много лет существует одна огромная уязвимость - жирнейший и древнейший хромиум

Ответить

Valery Kirichenko

Nikita
4

Не такой уж и древний

Ответить

Flame

Valery
0

В ХРю — древний, 49, уже 2 года не обновляют его, впрочем как и остальные

Ответить

Любить Спэйс

Flame
9

XP в 2018 — это само воплощение понятия "уязвимость"

Ответить

Flame

Любить
–2

Ой да ну ладно, там все дыры уже залатали, а новых не делают %)
На самом деле в ХРю не хватает только обновления криптобиблиотек, больше там ничего не надо. Зато фаерфокс все свое использует, так что норм. :)

Ответить

Valery Kirichenko

Flame
3

все дыры уже залатали

Хорошая шутка)

Ответить

Flame

Valery
0

пруф, что не все. :3

Ответить

Valery Kirichenko

Flame
4

Сейчас, я порыщу в своем ящичке публичных 0day уязвимостей, подожди

Ответить

Flame

Valery
0

Хорошо, жду, до конца дня еще полтора часа, успеешь? :3

Ответить

Твиттерский Жук

Nikita
1

да и вообще должен быть обычный нативный интерфейс, а не чо они там накостыляли и надесигнели

Ответить

Valery Kirichenko

Твиттерский
2

Обычный нативный интерфейс это сферический конь в вакууме. Сколько ты таких программ знаешь? Я про кроссплатформу, разумеется

Ответить

Твиттерский Жук

Valery
1

да почти всё на Qt, как минимум, есть к чему придраться, не прям 100% нативненько, но в Стиме совсем же ппц.

Ответить

Sdfal Sdfal

Твиттерский
5

На Qt это делается так: берётся вебкитовский embed виджет QWebView и в него вставляется веб-страница. Прямо, как сейчас. Если же делать нативно, то: 1) слишком много времени и денег будет уходить на разработку; взвоют менеджеры и стейкхолдеры; 2) маркетинговый отдел будет жаловаться, что они не могут ничего применить из своих фишек в нативном приложении, а это и весёлые картинки, и трекинг пользователей, и оперативные скидочные и прочие предложения; 3) дыр и багов будет не меньше, если не больше.

Я сам обожаю нативные приложения, но в реальности для каждого инструмента всё же есть своё применение. С гадким интерфейсом стима я ещё готов смириться; лучше бы они продолжили выпускать игры.

Ответить

Valery Kirichenko

Твиттерский
1

Не нативненько на Qt :) Особенно если смотреть детально, сравнивая с какими-нибудь встроенными программами в каждой из ОС. Где-то кнопки не те, где-то шрифт выглядит иначе, где-то отступы неправильные и т.д.

Ответить

Твиттерский Жук

Valery
2

оно хотя бы пытается, а не как Стим, ну браузер из клиента хотя бы выкинуть бы.

Ответить

Даниил Каруна

Твиттерский
0

Гораздо легче выкинуть клиент из браузера и продолжить пилить на электроне

Ответить

Твиттерский Жук

Даниил
0

или так)... Мда уж.

Ответить

Hr0ffT Xirrantos

Твиттерский
0

Не надо выбрасывать браузер

Ответить

Valery Kirichenko

Твиттерский
0

Браузер точно не выкинут. Слишком много придется переделывать (практически все) — весь магазин и все сообщество работают в нем.

Ответить

Жора Жугор

Valery
0

Вот пусть работают, уже все свои клиенты по обновляли , один габен сидит на допотопном уродливом, неудобном клиенте. Всё равно что с винды 10 поставить винду 98

Ответить

Жора Жугор

Valery
–1

Мда, пока с телефона текст редактировал, так редактирование запретили

Вот пусть работают, уже все свои клиенты по обновляли , один габен сидит на допотопном уродливом, неудобном клиенте. Всё равно что с винды 10 поставить винду 98

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

Вот если бы он выглядел как дискорд ну или типа того, было бы вполне себе стильно модно молодежно, да и постоянного подключения к сети не требует, можно по сохранённым группам лазить и читать, просматривать и изменять свой профиль (изменения вступят в силу когда появится соединение с сетью)

Вот пример как концепт стим в 3.0, там очень много фишек которые я бы хотел видеть, например сбор пати не заходя в игру, нормальный музыкальный плеер (да и ещё много чего, я просто не помню что он там в видео показывает)

Ответить

Kirill Koptyaev

Жора
0

надо зайти куда то в задницу

При каждом обновлении вылазит окно с подробным чейнджлогом. Или можно через 2 клика его самому увидеть. В отличии от того же Дискорда, где разработчики пишут только о крупных измениях.

стильно модно молодежно

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

уже все свои клиенты по обновляли

Например? Потому что ориджин и юплей пошли по пути стима и добавили браузер.

нормальный музыкальный плеер

Уже есть. 👌

Ответить

Жора Жугор

Kirill
0

>При каждом обновлении вылазит окно с подробным чейнджлогом

Скриншот в студию! где это окно и где оно вылазит

>В отличии от того же Дискорда

Я поставил его в пример, а не сказал что надо сделать именно так. Так ты хоть будешь понимать что они изменили настройки приватности, а не читать в обсуждениях сто тыщ миллионов тем на тему "КУДА ДЕЛИСЬ ИХРЫ МАИХ ДРУЗЕЙ?!"

>Даже нормальная поддержка скинов есть

Это какая? Где ты полностью ограничен в создании скина? для примера знаю только метро и сам им пользуюсь, у других очень много кривизны, а остальные 99% это просто замена цветовой схемы

>Потому что ориджин и юплей пошли по пути стима и добавили браузер

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

>Уже есть

Что уже есть? этот плеер по функционалу на одном уровне с STP

и что ты мне скриншот вывалил, сам то хоть проверяешь? или так, на диалог забайтить?
Ага, отличные новости "ОБНОВЛЕНИЙ" https://a.uguu.se/rOzDyVKSYYkq_2018-06-02_00-20-40.mp4

Ответить

Kirill Koptyaev

Жора
1

Тогда зачем тебе "нормальный музыкальный плеер", если стимовский не устраивает? Хочешь медиакомбайн? Не проще использовать отдельный?
😂👌

Где ты полностью ограничен в создании скина?

99% это просто замена цветовой схемы

Потому что все используют простые конструкторы. Но это никак не "полностью ограничен". Если знать как, то можно и нормальный скин сделать.

Ответить

Жора Жугор

Kirill
0

1. если они сделали плеер, то пусть дадут ему ума
Если знать как, то можно и нормальный скин сделать.

2.тогда почему существует только 1 метро, который сделан нормально? Во всем мире одни аутисты которые не знают как сделать скин?
3. Эту рамку последний раз я видел года два назад. Она вылетает ПЕРЕД обновлением но не после, а это просто жирнющий минус.

4. как ты думаешь сколько % от пользователей заходят в этот раздел NEWS? :-) сразу отвечаю на него, очень мало, люди используют его как игровой лаунчер, а не всё в одном, некоторые даже не знают что в нем музыкальный плеер есть..

Ответить

Kirill Koptyaev

Жора
0

И да, тот скриншот выше я не проверял ¯\_(ツ)_/¯
ну не суть, в особых случаях там тоже бывают важные уведомления от valve

А по поводу жирного запроса в комментарии выше все расписано: comment=527298

Ответить

Kirill Koptyaev

Жора
0

Ахах

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

Какой жирный запрос.

Зачем я вообще на твою толстоту повелся🤔

Ответить

Flame

Твиттерский
1

Забавно, что раньше стим был на кутях :)

Ответить

Евгений Дорожкин

1

Сотрудник после исправления

Ответить

Рюрик Патихардович

1

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

Со временем начал так частенько работать. Альтаб - у тя винда, аль таб - у тебя мак.

так вот. Это баг, или фича?

Ответить

Семён Геращенко

0

Вот и новый работник Валв, его точно позовут работать, как минимум

Ответить
0

Прямой эфир

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