Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Небезпечність браузерного протоколу Steam (віддалена експлуатація локальних багів)

  1. Короткий огляд
  2. 1 STEAM
  3. 2 браузерних протокол Steam
  4. 2.1 Стратегія 1: веб-браузери
  5. 2.2 Стратегія 2: альтернативи
  6. 3 Уразливості
  7. 3.1 Команди браузерного протоколу Steam
  8. 3.2 Параметри командного рядка браузерного протоколу Steam для запуску ігор
  9. 3.2.1 Експлуатація ігор 1: движок SOURCE
  10. 3.2.2 Експлуатація ігор 2: движок UNREAL
  11. 3.2.3 Експлуатація ігор 3: APB RELOADED
  12. 3.2.4 Експлуатація ігор 4: MICROVOLTS
  13. 3.3 Демонстрація
  14. 4 Можливі виправлення і обхідні шляхи
  15. 4.1 На стороні користувача
  16. 4.2 На стороні Steam
  17. 4.3 З боку ігр
  18. 5 Висновок

Наша взаимовыгодная связь https://banwar.org/

Небезпечність браузерного протоколу Steam (віддалена експлуатація локальних багів)

В даному документі ми розкриємо і продемонструємо новий цікавий спосіб перетворення локальних багів і можливостей в віддалено експлуатовані уразливості, заснований на використанні добре відомої платформи Steam як вектор атаки на віддалені системи

Автори: Luigi Auriemma і Donato Ferrante

Короткий огляд

В даному документі ми розкриємо і продемонструємо новий цікавий спосіб перетворення локальних багів і можливостей в віддалено експлуатовані уразливості, заснований на використанні добре відомої платформи Steam в якості вектора атаки на віддалені системи.

1 STEAM

Цитата з Вікіпедії: "Steam - платформа для цифрової дистрибуції, технічних засобів захисту авторських прав, багатокористувацьких ігор і обміну інформацією, розроблена Valve Corporation". Через Steam користувачі можуть купувати ігри, завантажувати демонстраційні версії і безкоштовні ігри, шукати мережеві матчі, обмінюватися інформацією з іншими користувачами, ділитися статистикою і так далі. Steam - платформа цифрової дистрибуції з найбільшою кількістю користувачів (близько 50 мільйонів), яка підтримує кілька платформ: Windows, MacOS, PS3, мобільні пристрої і Linux.

2 браузерних протокол Steam

Steam, як і інше програмне забезпечення, використовує свій власний обробник URL, щоб інтегрувати в свою платформу заснований на веб-технологіях функціонал. URL-схема steam: // використовується для:

  • Установки і видалення ігор
  • Резервування, перевірки і дефрагментації ігрових файлів
  • З'єднання з ігровими серверами
  • запуску ігор
  • Виходу на різні сторінки і розділи, де можна купити або активувати гри, завантажити утиліти, ознайомитися з новинами, подивитися профілі користувачів і т. Д.

Браузерні протокол Steam включає в себе кілька команд, більшість з яких перераховано на сайті Valve разом з неоновленими списком ігор , Які використовують Steam в якості платформи. Даний список команд не є вичерпною довідкою по всім командам, доступним в браузерному протоколі Steam, оскільки деякі команди на сайті Valve документовані лише частково або зовсім не задокументовані.

У наступних розділах ми збираємося розглянути те, як Steam URL обробляються браузером і іншим ПО, щоб як слід зрозуміти можливі способи запуску віддалених атак через такі URL. На малюнку 1 дан огляд одного з можливих сценаріїв атак.

На малюнку 1 дан огляд одного з можливих сценаріїв атак

Малюнок 1. Дистанційна експлуатація команд протоколу Steam: огляд

2.1 Стратегія 1: веб-браузери

Спочатку ми перевірили, як найбільш відомі браузери ведуть себе при обробці зовнішніх (і не виконує жодних самими браузерами) протоколів URL (тобто, rtsp: //, mms: //, steam: // і т. Д.).

Згідно з результатами з таблиці 1, всі ті браузери, які запускають зовнішні обробники URL безпосередньо, без попереджень, і ті, які засновані на движку Mozilla (на кшталт Firefox і Seamonkey), є чудовим вектором для здійснення дзвінків браузерного протоколу Steam. Крім того, для браузерів на зразок Internet Explorer і Opera все ще можливо запобігти відображення шкідливої ​​частини URL в попереджуючому повідомленні шляхом вставки декількох прогалин між steam: // і власне URL.

Internet Explorer Відображається попередження, що включає URL, а в разі IE9 можливе додаткове попередження ( "захищений режим") без будь-яких подробиць Firefox URL не відображається, тільки запит підтвердження (без попереджень) Chrome Попередження з докладним описом URL і викликається програмою Opera Попередження, що включає тільки 40 символів URL Safari Безпосереднє виконання без попереджень Webkit Безпосереднє виконання без попереджень MaxThon Безпосереднє виконання без попереджень Avant Безпосереднє виконання без п редупрежденій Lunascape Безпосереднє виконання без попереджень SeaMonkey Див. Firefox PaleMoon Див. Firefox SRWare Iron Див. Chrome

Таблиця 1: поведінка різних браузерів при запуску обробника протоколу Steam

2.2 Стратегія 2: альтернативи

Крім веб-браузерів існують і інші програми, які можна використовувати для здійснення дзвінків до зовнішніх обробникам протоколів. Більшість з них (але не всі) засновані на використанні браузера за замовчуванням.

Ось деякі програми (протестовані в ході нашого дослідження), які не показують жодних попереджень при виконанні викликів зовнішнього протоколу URL.

  • Steam browser (свій веб-браузер Steam)
  • Вбудований браузер RealPlayer
  • Інші програми, які можуть обробляти html-сторінки

На нашу думку, Steam browser є вкрай цікаву альтернативу звичайним браузерам, проте має наступні обмеження:

  • Веб-сайти, які можна відвідувати через Steam browser, в основному обмежені доменами, що належать Valve, наприклад, steampowered.com і steamcommunity.com.
  • Valve запобігає ін'єкції в протоколі steam: // шляхом виконання кількох перевірок над посиланнями, наданими користувачами.
  • Посилання на зовнішні сайти перенаправляються викликами steam: // openurl / website, які виконуються засобами браузера за замовчуванням, а не браузера Steam.

Для повноти варто згадати, що веб-браузер, який використовується в ігровому оверлей-інтерфейсі Steam, діє інакше і дозволяє повністю іноріровать всі сайти, за винятком посилань steam: //, так що даний різновид браузера не може бути використана як вектор атаки. А ми хочемо мати можливість відкривати посилання, які не призначені для відкриття в браузері Steam.

Якщо ви знайомі з Steam, ви знаєте, що кожен користувач платформи має сторінку персонального профілю, яка може включати в себе інформацію, зображення і відеоролики. У той час як зображення, надані користувачами, завантажуються на сервера Steam, відеоролики представляють собою лише посилання на ролики YouTube. Якщо користувач спробує подивитися відеоролик, прикріплений до якого-небудь профілю, він отримає сторінку, яка містить тільки відео з YouTube без коментарів або опису. Але якщо користувач клацне на заголовку відеоролика (наприклад, щоб залишити коментарі), відкриється нове вікно з усіма подробицями, що стосуються даного ролика, включаючи коментарі і опис. Так що, зловмисник може залишати посилання на зовнішні хости, які віддалено викликають команди Steam, шляхом використання звичайних steam: // URL. Відповідно до своєї стратегії браузер Steam буде виконувати виклики обробника протоколу без будь-яких попереджень. На малюнку 2 даний підхід резюмирован графічно.

На малюнку 2 даний підхід резюмирован графічно

Малюнок 2: дистанційна експлуатація через браузер Steam і перенаправлення на YouTube.

3 Уразливості

На даний момент ми вже знаємо переваги і недоліки різних способів запуску steam: // URL, тому ми можемо почати досліджувати деякі уразливості і те, що ми можемо отримати, експлуатуючи їх. У наступних розділах будуть описані деякі нові уразливості, які ми виявили в ході нашого дослідження. Відзначимо, що всі вони можуть експлуатуватися віддалено, використовуючи в якості тригера браузерні протокол Steam.

3.1 Команди браузерного протоколу Steam

Команда retailinstall є недокументованою можливістю (НЕ багом) браузерного протоколу Steam, яка дозволяє установку і відновлення резервних копій з локальної директорії. Один з її параметрів - шлях, який використовується для завдання локальної директорії, проте, ця директорія цілком може бути мережевий папкою, розташованої на віддалений хост. Коли Steam запускає команду retailinstall, він перевіряє і завантажує два файли: splash.tga (заставка) і sku.sis (установник). Користувач бачить заставку відразу після запуску даної команди (рис. 3).

Малюнок 3: Steam завантажує spash.tga під час виконання команди retailinstall

Функція Steam, відповідальна за обробку заставок, містить уразливість переповнення цілочисельного значення при обробці неправильно сформованих TGA-файлів. Проблема полягає в функції LoadTGA бібліотеки vgui2_s.dll, яка завантажує файли TGA в пам'ять (рис. 4). В результаті відбувається переповнення буфера в купі, яке дозволяє виконання шкідливого коду в рамках процесу Steam.

В результаті відбувається переповнення буфера в купі, яке дозволяє виконання шкідливого коду в рамках процесу Steam

Малюнок 4: асемблерний код, відповідний уразливості до целочисленному переповнення в функції LoadTGA.

3.2 Параметри командного рядка браузерного протоколу Steam для запуску ігор

В Steam можна запускати встановлені гри, використовуючи одну з наступних команд steam: //

  • run
  • rungameid
  • runsafe
  • rungame

Як і більшість програм, ігри, доступні для платформи Steam, приймають аргументи командного рядка. Steam дозволяє вам передавати ігор аргументи, однак не існує офіційної документації по стратегії передачі аргументів. Виняток становить команда -applaunch, яка не може вважатися універсальним і «тихим» способом через різних методів кодування URL, що застосовуються веб-браузерами.

Перераховані чотири команди, які можна використовувати для запуску ігор, здебільшого недокументованих, проте ось як виглядають формати цих команд:

  • steam: // run / id / language / url_encoded_parameters
  • steam: // rungameid / id / language_bug / url_encoded_parameters
  • steam: // runsafe / id
  • steam: // rungame / id / lobby_id / parameters

Для віддалених середовищ підходять тільки команди run і rungameid, які беруть аргумент url_encoded_parameters - рядок, закодовану в форматі URL і передану функції Q_URLDecode, яка зберігає результат декодування в буфер розміром 128 байт. Функція Q_URLDecode дозволяє вам використовувати будь-які символи, а також демонструє, що існують команди, які використовуються віддалено через браузер. Обмеження розміру параметрів 128 символами не впливає на експлуатацію будь-яких з наведених нижче вразливостей, оскільки, якщо нам знадобиться більше місця, ми можемо просто використовувати JavaScript для з'єднання фрагментів команд.

3.2.1 Експлуатація ігор 1: движок SOURCE

Як перший приклад експлуатації ігор через Steam ми вибрали ігровий движок, яким користується найбільше число гравців: Source .

Ось найбільш відомі ігри, засновані на даному движку: Half-Life 2, Counter-Strike: Source, Half-Life: Source, Day of Defeat: Source, Team Fortress 2, Portal 2, Left 4 Dead 2, Dota 2, Alien Swarm , SiN Episodes, Dark Messiah of Might and Magic, The Ship, Zombie Panic! Source, Age of Chivalry, Synergy, DIPRIP, Eternal Silence, Pirates Vikings & Knights II, Dystopia, Insurgency, Nuclear Dawn і Smashball.

Більшість з цих ігор розуміють базові команди движка Source, які ми використовуємо для створення файлів зі спеціальним вмістом в довільних локаціях. Для експлуатування даного движка ми вибрали наступні опції командного рядка:

  • + Con_log fi le, дозволяє визначити файл, в який буде записано вміст консолі (не може перебувати у віддаленій папці Windows)
  • + Echo, використовується для приміщення в файл журналу наданих даних
  • + Quit, (необов'язкова) закриває гру
  • -hijack, (необов'язкова) корисна в разі, коли користувач вже запустив екземпляр гри, і ми хочемо послати йому додаткові команди, які обмежені 128 байтами через функції Q_URLDecode

Для експлуатації даного бага ми створюємо в папці автозапуску облікового запису користувача файл з розширенням .bat, який буде запускати наші команди, впроваджені через опцію + echo, при наступному вході користувача в систему. Існує також цікавий сценарій атаки на виділені сервери, який полягає у вказівці файлу motd.txt гри в якості файлу журналу і запуску команди cvarlist, яка вивантажить всі змінні гри в даний файл, який бачимо для будь-якого гравця, що підключається до сервера. Team Fortress 2 - одна з найбільш популярних ігор, заснованих на даному движку. Вона до того ж є безкоштовною.

3.2.2 Експлуатація ігор 2: движок UNREAL

2 Експлуатація ігор 2: движок UNREAL

Малюнок 5: дистанційна експлуатація движка Unreal через Steam

Для ігор, заснованих на движку Unreal ми вибрали таку вразливість, яка має місце при отримання контенту з віддалених комп'ютерів (по протоколу WebDAV або із загальної папки SMB), який ми можемо завантажити, використовуючи наступні параметри командного рядка:

steam: // run / ID / server nnHOSTnevil.upk -silent

Насправді цей движок має безліч вразливостей до целочисленному переповнення (можливо скоро ми їх задокументуємо), які дозволяють виконання шкідливого коду.

Повний список параметрів командного рядка движка Unreal доступний онлайн .

3.2.3 Експлуатація ігор 3: APB RELOADED

All Points Bulletin - добре відома масова розрахована на багато користувачів онлайн-гра (MMOG), яка має регульований можливість автоматічечского поновлення. В даному випадку ми встановили через командний рядок довільний сервер оновлень і експлуатуємо вразливість виходу за межі директорії для перезапису або створення файлу з бажаним контентом в потрібному місці.

Платформа Steam включає безліч безкоштовних MMO-ігор на зразок APB, так що кількість їх користувачів велике, і більшість з цих ігор можуть експлуатуватися подібним чином. Крім того, більшість цих ігор використовують механізми запобігання ігрового шахрайства (anti-cheating) і, тому, вимагають запуску з правами адміністратора (ми знаходимося в ігровому світі, в якому є безліч людей, що не володіють знаннями про безпеку, але володіють такими правами), що дозволяє скомпрометувати систему цілком.

3.2.4 Експлуатація ігор 4: MICROVOLTS

MicroVolts - ще один приклад відомої MMO-гри, експлуатованої через автообновление за допомогою іншої уразливості виходу за межі директорії.

3.3 Демонстрація

Запрошуємо відвідати канал vimeo.com/revuln для перегляду демонстраційного відео , Що ілюструє всі проблеми, порушені в даному документі.

4 Можливі виправлення і обхідні шляхи

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

4.1 На стороні користувача

Проблема може бути обмежена шляхом відключення обробника URL-схеми steam: // або використання браузера, який не дозволяє прямого запуску браузерного протоколу Steam.

4.2 На стороні Steam

Рішенням може стати заборона передачі аргументів командного рядка стороннім програмам і недокументованих команд із зовнішніх і недовірених джерел на кшталт Internet.

4.3 З боку ігр

Головна проблема браузерного протоколу Steam в тому, що він дозволяє зловживати локальними можливостями ігор (наприклад, використанням журнальних файлів), так що розробники в даній ситуації не можуть нічого вдіяти, за винятком спроб зменшити можливі проблеми шляхом:

  • Адаптації методів безпечного програмування до коду, не пов'язаного з мережевим взаємодією
  • Використання перевірки сертифікатів при автоматичному застосуванні латочок

5 Висновок

В даному документі ми довели, що поточна реалізація механізму обробки браузерного протоколу Steam є відмінним вектором атаки, який дозволяє атакуючим експлуатувати локальні проблеми віддалено. В якості підтвердження ефективності даного нового вектора атаки ми описали п'ять нових віддалено експлуатованих вразливостей, включаючи одну в самій платформі Steam і дві в широко використовуваних ігрових движках (Source і Unreal). Через великий аудиторії (більше 50 мільйонів чоловік) і підтримки різних платформ, включаючи Windows, MacOs і Linux і кількості зусиль, необхідних для експлуатації багів через команди браузерного протоколу Steam, Steam може розглядатися в якості високоефективного вектора атаки.

Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: