The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Анализ использования фрагментов уязвимых библиотек в исполняемом коде

27.12.2018 11:32

Исследователи безопасности из компании Google опубликовали наработки в области определения использования в исполняемых файлах кода сторонних библиотек, который статически скомпилирован и встроен в приложение. Процедура выявления заимствованного кода имеет большое значение при анализе безопасности приложений, так как зачастую разработчики встраивают в состав своих продуктов внешние библиотеки, но не поддерживают их в актуальном виде. Код написан на языке С++ и опубликован под лицензией Apache 2.0.

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

Предложенный метод основан на применении системы машинного обучения и алгоритма SimHash для определения уровня приблизительного сходства между фрагментами машинного кода исследуемых приложений с шаблонами кода функций из различных открытых библиотек. При помощи машинного обучения строится модель, обученная на различных комбинациях результатов компиляции кода открытых библиотек, полученных при сборке эталонных функций при помощи Visual Studio, GCC и CLANG с включением различных сборочных опций. Полученная модель позволяет выделять специфичные для кода маркеры, независимо от применяемых компиляторов, режимов оптимизаций и незначительных модификаций кода.

В качестве примеров практического применения метода продемонстрирован поиск кода unrar в библиотеке mpengine.dll, поиск функций libtiff в Adobe Reader и определение наличия форков libtiff и libjpeg в базовой поставке Windows 10 (следы уязвимых версий данных библиотек найдены в WindowsCodecs.dll).

  1. Главная ссылка к новости (https://googleprojectzero.blog...)
  2. OpenNews: Опасная уязвимость в реализациях LZO/LZ4, затрагивающая ядро Linux, FFmpeg, OpenVPN и другие проекты
  3. OpenNews: Основные проблемы с открытым кодом в коммерческих проектах вызваны использованием устаревших библиотек
  4. OpenNews: Анализ использования ассемблерных вставок в коде открытых проектов
  5. OpenNews: Инструментарий для выявления скрытых уязвимостей, возникающих из-за использования стороннего кода
  6. OpenNews: Обратная сторона систем распространения приложений в обход дистрибутивов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49862-search
Ключевые слова: search, diff, lib
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Crazy Alex (ok), 12:13, 27/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +19 +/
    Интересно было бы это использовать для поиска нарушений GPL
     
     
  • 2.27, Аноним (27), 11:59, 28/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Может быть уже хватит двигать копирастию в массы?
     
     
  • 3.28, Andrey Mitrofanov (?), 12:43, 28/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Может быть уже хватит двигать копирастию в массы?

    Конечно!  Отмени побыренькому ЗоАП.

    И все на PD пойдём,взявшись за куки и распевая невозбранно песенки михалковых и пр. рыбиных.

     
  • 3.29, Felix (??), 13:01, 28/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Денис попов, авторизуйтесь пожалуйста и расскажите о новом релизе BolgenOS )
     
  • 3.31, Аноним (31), 14:26, 28/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    да ты туповат
     
  • 3.32, Aquarius (ok), 17:44, 28/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Вы путаете копирастию с копилефтией
     

  • 1.2, тоже Аноним (ok), 12:24, 27/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На практике обычно проблемы нет.
    Ну, скомпоновала игрулька в себя древний и уязвимый libjpeg. Так она через него пропускает только собственные файлы, эксплуатировать уязвимость некому...
    И то, что она лезет на собственный сервер за обновлениями через уязвимые сетевые библиотеки, тоже, внезапно, вообще не проблема.
     
     
  • 2.3, Аноним (3), 12:32, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Не соглашусь, различные вариации libxml и libjpeg очень часто используются для обработки внешних данных. Открыл пользователь левый файл и получил трояна в системе.
     
     
  • 3.4, Аноним (4), 13:06, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Этим уже занимается системный libxml/libjpeg, который, внезапно, нужно обновлять, конечно если она не стоит в Program Files (тут вендоюзеры и прочие любители пользоваться помойками a.k.a. snap, flatpak, appimage, /opt, и.т.д. должны страдать, да. И, конечно же, 's/каждый/никто не/g' говорил, что такое может произойти).

    P.S: Хотя уже были случаи, когда в assets игры внедряли трояны и выкладывали на всякие торрент-помойки.

     
     
  • 4.6, Аноним (6), 14:07, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Речь о том, что чтобы не париться с зависимостями проприеиарщики часто статически линкуют бинарники со старыми версиями библиотек.
     
     
  • 5.15, Аноним (15), 18:54, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Статически как раз нечасто линкуют. Если откроешь директорию любой линуксовой игрушки из стима, там будет куча динамических библиотек.
     
  • 3.8, НяшМяш (ok), 14:11, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Как пример - в играх на движке source есть окно при входе на сервер, где можно показать свою html страницу. Или тот же source, где можно загрузить свою аватарку или спрайт.
     
  • 2.7, Crazy Alex (ok), 14:10, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На практике софта много и разного, и проще всех запинать, чтобы обновились на актуальную версию.  Благо, для подобных библиотек это не проблема - там обычно вполне нормальные багфикс-релизы.

    Именно так гугл чем-то подобным анализирует всё, что сабмитится в Google Play. И не пропускает, если не обновишь на правленные версии.

     
     
  • 3.9, тоже Аноним (ok), 14:23, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > проще всех запинать, чтобы обновились на актуальную версию

    Открытый софт и без пинков стараются обновлять.
    А вот с проприетарным придется пинать, чтобы КУПИЛИ новую версию.
    Ради теоретических дырок. Не хило пинков в ответ прилетит.

     
     
  • 4.11, Crazy Alex (ok), 15:25, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не, с андроидом всё просто - залить в маркет приложение, в котором найдены уязвимые библиотеки, он просто не даст. Что там, если найдено уже в залитом - не интересовался, андроид - не моя тема. Но тоже давили как-то на разработчиков. Если приложение платное это свершенно не значит, что абсолютно за все версии надо заново платить (хотя, опять же, деталей не знаю - не пользовался).

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

    Насчёт "открытый софт и без пинков стараются обновлять"... ну это вы чересчур оптимистичны, по-всякому там.

     
  • 4.13, Аноним (13), 16:40, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >А вот с проприетарным придется пинать, чтобы КУПИЛИ новую версию.

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

     
  • 2.19, Аноним (19), 21:30, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, пока для неё не сделают мод а сервер не подменят через DNS.
     
  • 2.21, mickvav (?), 22:29, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну смотрите - онлайн-игра, подгружает, например, аватарки из фоток пользователей и отдает их на клиента как есть.
     

  • 1.10, Аноним (10), 15:08, 27/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    очень полезный инструмент для хакеров.....
     
     
  • 2.14, Аноним (14), 17:06, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ....мамкиных?
     

  • 1.20, annual slayer (?), 21:31, 27/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    это что-то типа "статического" антивируса с эвристиками? или я слишком не разбираюсь в теме для понимания этой штуки
     
  • 1.22, dimqua (ok), 22:31, 27/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем делать проприетарное ПО безопаснее?
     
     
  • 2.24, Crazy Alex (ok), 23:39, 27/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Гугл это для плей маркета склепал, там понятно, зачем ему
     

  • 1.26, анан (?), 06:51, 28/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ничего не изменится, кому нужно будет попасть в магазин с старой версией будут шифровать эти библиотеки(или упаковывать) и евристики не будут определять их
     
     
  • 2.30, Crazy Alex (ok), 13:50, 28/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не стоит искать злой умысле в том, что вполне объяснимо глупостью. Обычно старые версии остаются тупо потому что поленились/забыли обновить (уязвимости закрываются в минорах, в которых API не ломается). А обновить либу на порядок проще, чем прикручивать обфускацию, даже если изменения в API есть.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру