Всем привет! Меня зовут Денис Макрушин, я отвечаю за создание технологий кибербезопасности в MTC RED и возглавляю команду перспективных исследований МТС RED ART (Advanced Research Team).

Сегодня проведу разбор самых интересных исследований первого квартала 2024. Под катом — новые методы поиска уязвимостей и секретов в исходном коде, инструменты и принципы построения безопасной разработки и многое другое.

Secure by Design: принципы построения защищённых систем от Google

Пока исследователи и центры мониторинга разбирают бэкдор, который умело спрятан в новых версиях широко используемой библиотеки liblzma, мы ознакомимся с отчётом Secure by Design at Google. В нём инженеры безопасности пересмотрели принципы построения современных приложений.

Цель отчёта — сократить разрыв между концептуальными требованиями Secure by Design и их практическим применением. Ключевые инсайты:

  • Инженеры Google столкнулись с вызовом: скорость изменений в программном обеспечении и в особенности в облачном ПО настолько высокая, что не позволяет реализовать существующие требования безопасности. Они актуальны скорее для физических систем, поскольку в физических системах после тщательного проектирования архитектуры риск появления дефектов на этапе производства существенно ниже, чем в ежедневных обновлениях ПО.

  • Ключевое требование — дизайн, ориентированный на пользователя. «Наша задача заключается в проектировании и внедрении продуктов и сервисов, которые обеспечат безопасность наших пользователей», — утверждают авторы документа. На практике это означает необходимость формировать требования безопасности и архитектуру продукта, отталкиваясь от действий пользователя. Для каждого действия нужно оценить, может ли оно привести к неблагоприятным последствиям, а если да, то каким образом. При этом разработчик — тоже пользователь.

  • Дизайн-мышление в терминах инвариантов.

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

    Инварианты безопасности помогают исключить какие-либо требования к пользователям и сфокусировать архитектора на требованиях к системе, с которой он работает. При этом реализация всех инвариантов может быть проверена автоматически на этапе анализа качества ПО.

    Когда-то появилась концепция «неизменяемой инфраструктуры» (Immutable Infrastructure). Теперь инварианты дают архитектору возможность сделать реализацию архитектуры «неизменяемой» на этапе разработки.

Поиск секретов в скрытых git-коммитах

Искать секреты в исходном коде мы уже умеем. Но в git-репозиториях остались интересные места, до которых стандартными способами не доберёшься. Речь о скрытых коммитах — информации об изменённых файлах в репозитории, которая была удалена и не отображается в истории проекта.

Когда разработчик вносит изменения (коммиты) в репозиторий, а потом по какой-то причине хочет их отменить, он выполняет команды:

git reset --hard HEAD^
git push origin -f

Первая строка отменяет последний коммит и все последние изменения в файлах целевого репозитория. А вторая применяет все изменения в этом репозитории. То есть эти команды удаляют последние внесённые изменения.

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

Пример скрытого коммита
Пример скрытого коммита

Исследователи опубликовали инструмент для извлечения скрытых коммитов публичного GitHub-репозитория и их анализа. Для репозиториев GitLab эта техника тоже работает, а ещё есть готовый инструмент. Security-чемпионы и специалисты по безопасности приложений берут этот подход в работу.

Метод поиска n-day-уязвимостей в бинарном коде

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

К уже известным техникам добавилось свежее исследование, которое точно нужно воспроизвести: BinGo: Identifying Security Patches in Binary Code with Graph Representation Learning.

Это интересный метод поиска security-патчей в бинарном коде приложений. Он актуален для тех случаев, когда владелец приложения скрытно исправляет какие-либо уязвимости в своём коде без регистрации CVE или без описания в change log. Помогает выявлять n-day-уязвимости.

Метод основан на представлении бинарного файла в виде Code Property Graph — промежуточном представлении кода, изначально разработанном для анализа его безопасности. CPG включает в себя абстрактное синтаксическое дерево, граф потока управления и зависимости данных.

Ключевые этапы метода поиска n-day-уязвимостей
Ключевые этапы метода поиска n-day-уязвимостей

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

Уровень обнаружения security-патчей среди прочих модификаций бинарного кода — 80,77%. Отлично! Осталось подобрать интересные таргеты.

Что, если использовать метод определения security-патчей для выявления закладок в бинарном коде?

Есть гипотеза, что метод и система определения security-исправлений в бинарном коде могут применяться для выявления вредоносных модификаций (закладок или имплантов) в приложениях. Чтобы проверить гипотезу, можно провести исследование. Этапы могли бы быть такими:

  1. Подбор примеров (семплов) модификаций кода — то есть закладок.

  2. Формирование CFG для подобранных семплов.

  3. Обучение сиамской сети для определения сходства заданного CFG с це��евым CFG, полученным от семплов.

Возможно, кто-то из читателей захочет её проверить.

Стратегия выявления угроз: на чём сосредоточить усилия при разработке методов обнаружения?

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

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

Помогает такая модель:

  1. Представляем каждую технику матрицы Mitre ATT&CK в виде точки.

  2. Представляем путь атакующего от получения первичного доступа до продвижения к цели в виде определённой последовательности таких точек.

  3. Техники матрицы, у которых есть множество подтехник, тоже раскладываем на группы точек. Размер группы увеличивает вероятность выполнения этой техники.

  4. Каждую подтехнику выполняем с помощью разных процедур и инструментов: это добавит ещё больше точек в группы.

  5. Следуем тактике выявления: чем больше процедур в рамках одной подтехники охватывает метод обнаружения, тем лучше этот метод. Эффективный метод обнаружения — тот, который выявляет процедуру с наибольшим количеством связей с другими процедурами.

И вот тут гипотеза, которую можно проверить в рамках исследовательской работы: составить граф всех процедур Mitre ATT&CK и определить узлы с наибольшим количеством связей. Пример на рисунке отмечен жёлтым.

Пример графа процедур Mitre ATT&CK
Пример графа процедур Mitre ATT&CK

Эти узлы станут базой для выстраивания системы защиты и помогут определить приоритеты в условиях ограниченных ресурсов. Аналитик центра мониторинга получит ещё одну возможность количественно обосновать необходимость разработки нового детек��а или покупку «того самого» средства защиты.

Распространение вредоносного кода через комментарии GitHub

Исследователи обнаружили троян, который распространяется под видом игровых читов и крадёт инфу с заражённой станции. Сам зловред вряд ли чем-то примечателен, зато интересен способ его распространения. Источник, в котором опубликован загрузчик трояна, — официальные GitHub-репозитории Microsoft.

Пример URL с вредоносным кодом:

https://github[.]com/microsoft/vcpkg/files/14125503/Cheat.Lab.2.7.2.zip

GitHub позволяет злоумышленникам обходить правила блокировки на основе чёрных и белых списков.

Как троян там оказался:

  1. Злодей создаёт комментарий к любому коммиту или issue в репозитории Microsoft.

  2. В комментарий загружается вложение с произвольным файлом.

  3. Файл будет загружен в GitHub CDN и привязан к проекту с уникальной ссылкой. Формат ссылки:
    https://www.github.com/{project_user}/{repo_name}/files/{file_id}/{file_name}

  4. Комментарий может быть не опубликован, но при этом ссылка становится активной.

Атакующий может прикрепить вредоносный файл к любому репозиторию. Пока что единственный вариант уберечь свой проект от подобного использования — отключить комментарии.

Повышение уровня наблюдаемости процессов DevSecOps

Университет Карнеги-Меллона представил фреймворк Polar, который повышает наблюдаемость данных внутри платформы разработки ПО. Цель — увеличить скорость и качество управленческих решений внутри существующего DevSecOps-пайплайна.

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

  • Observers — компоненты, отвечающие за мониторинг ресурсов и сред.

  • Information Processors — связующие звенья, которые преобразуют необработанные данные от Observers в структурированные данные графовой БД.

  • Policy Agents — ведут контроль всех компонентов системы и с помощью конфигураций обеспечивают их работу в рамках заданных параметров.

В итоге граф — это модель данных, которая показывает актуальные взаимосвязи в операционной деятельности бизнеса.

Архитектура фреймворка
Архитектура фреймворка

Использовать такой граф можно, например, чтобы проанализировать существующие процессы DevSecOps для последующей оптимизации и снижения показателя Time to Deploy.

Инсайты из аналитических отчётов

В отчёте подразделения Palo Alto Unit42 отмечен тренд: использование скомпрометированных учётных записей становится ключевой тактикой атакующих для обеспечения первичного доступа в организацию. Если в 2022 году для этой задачи в основном использовался фишинг, то уже в 2023 году эта техника отошла на второй план. На взломанные утечки приходится 20,5% от всех зафиксированных инцидентов.

Исследователи Google опубликовали отчёт с разбором 0day-уязвимостей, которые эксплуатировались в 2023 году. Интересные факты:

  1. Проанализировано 92 уязвимости: из них 61 обнаружена в продуктах и платформах для конечных пользователей. Остальные — в корпоративном софте. Интерес злоумышленников к пользовательским данным по-прежнему стабилен.

  2. Атакующие смещают фокус к компрометации сторонних компонент и библиотек. Сохраняется тренд атак на цепочку поставок.

  3. Снижается доля 0day, использованных для атак с целью финансовой выгоды. Этот пункт можно объяснить тем, что использование дорогих средств эксплуатации для подобных атак экономически нецелесообразно. Для злодея есть более дешёвые альтернативы, которые ведут к такому же результату.

Исследовательское подразделение Fortinet опубликовало отчёт об угрозах второго полугодия 2023. Интересное:

  1. Атаки начинаются в среднем через 4,76 дня после публикации новых эксплойтов к известным уязвимостям.

  2. Некоторые обнаруженные уязвимости остаются неисправленными более 15 лет.

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