Неправильно построенный процесс создания софта позволяет атакующему вставить
свой кусок кода в конечный продукт или взять контроль над машиной программиста.
Данная статья посвящена существующим атакам против open
source программ, включает обзор атак против Sendmail,
OpenSSH и IRSSI. Так же показывается как три
популярных утилиты для Java (Apache
Ant, Maven
и Ivy) неправильно сконструированы и
подвержены уязвимости cross-build
injection (XBI), которая позволяет внедрять трояны,
бекдоры или другие зловредные функции в конечные продукты.

Вступление

Самая опасная уязвимость в программе та,
которая позволяет атакующему выполнить произвольный код на уязвимой системе. Для
исследователей компьютерной безопасности фраза "позволяет удаленно выполнить
произвольный код" равнозначна фразе "шах и мат". Например,
переполнение буфера
настолько опасно именно потому, что в большинстве случаев позволяет хакеру
получить контроль над программой и запустить на выполнение свой код. В данной
статье мы рассмотрим уязвимость инъекции на уровне сборки (cross-build
injection vulnerabilities
, XBI) -
уязвимость, которая позволяет нападающему вставить код в целевую программу на
этапе ее создания.

В настоящее время никто не создает программы
с нуля. На рисунке приведена типичная схема современного проекта, составленного
частично из самописного кода и частично из внешних, сторонних компонент. В
промышленных масштабах все чаще используются open source
компоненты.

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

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

Инциденты

За последние годы мы видели целый ряд взломов, связанных с использованием
open source компонентов. Все они имели несколько
похожих черт:

  • они случались в open source проектах;
  • хакеры изменяли исходники в репозиториях проектов и вставляли в них свой
    вредоносный код;
  • взломы касались пользователей, который использовали компоненты через
    автоматическую систему сборки.

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

Троян в OpenSSH 3.4p1

OpenSSH играет фундаментальную роль в безопасности
многих систем. В июле 2002 года взломщик проник в
ftp.openssh.com и frp.openbsd.org и вставил
свой код, реализующий бекдор. Неправильная версия OpenSSH
распространилась среди пользователей при помощи автоматической системы
установки OpenBSD - port. Система была разработана для
автоматической сборки и установки компонентов системы, получая пакеты с сервера
OpenBSD и компилируя их автоматически.

В данном случае код, полученный из внешнего источника был с червоточиной и
включал модифицированный makefile, подключающий бекдор
из файла bf-test.c. Будучи однажды выполненным,
makefile компилировал и запускал трояна, позволяющего
хакерам коннектится к машине с правами пользователя, запустившего процесс
компиляции. Нормальной процедурой в OpenBSD была
установка софта под привилегированным пользователем и таким образом хакер
получал удаленный доступ к компьютеру.

(Продолжение следует)

 


Источник

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии