Распространенные риски в цепочке поставок программного обеспечения и способы их смягчения

В соответствии с Отчет Gartner, к 45 году до 2025% организаций во всем мире подверглись бы атакам на свою цепочку поставок программного обеспечения. Этот тип атак становится частым, и с ним становится все труднее бороться из-за изменений в том, как в наши дни создаются программные продукты.

Сегодня инженерам-программистам не нужно создавать приложения с нуля. Столько, сколько 90% приложения может быть создан с использованием сторонних кодов, отдельных библиотек и программного обеспечения с открытым исходным кодом. Хотя такой подход к разработке программного обеспечения помогает упростить процесс создания приложений и сэкономить значительное количество времени, он также увеличивает угрозы и уязвимости безопасности, поскольку вредоносные пакеты могут доставляться через сторонние коды и программное обеспечение.

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

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

Известные уязвимости в цепочках поставок программного обеспечения

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

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

Уязвимости могут появиться в приложениях в результате:

 

  • Код, который вы пишете: плохие методы обеспечения безопасности в пользовательском коде, который вы написали сами.
  • Что вы используете: инструменты разработки программного обеспечения, используемые для создания приложений, могут быть скомпрометированы, что подвергает ваше программное обеспечение уязвимостям безопасности.
  • Что вы покупаете: некоторые готовые приложения «программное обеспечение как услуга» (SaaS), используемые для разработки приложений, могут содержать уязвимости.
  • Что вы используете: многие приложения зависят от сторонних библиотек с открытым исходным кодом, которые могут служить слабым звеном в вашей цепочке поставок.

 

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

Пакет встроенного вредоносного кода

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

Злоумышленники часто выбирают цели, системы которых имеют высокий уровень авторизации на пользовательских устройствах. Ярким примером подобной атаки является кибератака 2021 года, от которой пострадала Kaseya, разработчика ИТ-решений, среди клиентов которого были поставщики управляемых услуг и корпоративные клиенты.

Одним из ключевых ИТ-решений, предлагаемых Kaseya, является VSA, единый инструмент удаленного мониторинга и управления. Сервер VSA пользовался высоким доверием на клиентских устройствах, и, проникнув на него, злоумышленники смогли обойти контроль аутентификации на подключенных клиентах. Таким образом, они могли беспрепятственно загружать вредоносные данные. Атака Касеи похожа на Фиаско безопасности SolarWinds, где злоумышленники смогли распространить вредоносные обновления тысячам клиентов, что сделало их уязвимыми для дополнительных уязвимостей безопасности.

Эксфильтрация конфиденциальных данных

Любую атаку с целью кражи данных можно классифицировать как атаку с целью кражи данных. Говорят, что утечка данных происходит, когда злоумышленник осуществляет несанкционированную передачу конфиденциальных данных из целевой системы в другое место. Ярким примером атаки по хищению данных, произошедшей в результате атаки на цепочку поставок, была Атака на Target в ноябре 2013 г., одна из крупнейших розничных компаний в США.

Злоумышленники проникли в системы Target, используя учетные данные, которые они украли у стороннего поставщика. Эта атака предоставила им несанкционированный доступ к базе данных службы поддержки клиентов Target, что позволило им получить имена, номера телефонов, адреса электронной почты, информацию о платежных картах и ​​другие конфиденциальные данные клиентов. Информация о платежных картах 41 миллиона целевых клиентов была передана на серверы злоумышленников, а контактная информация более 60 миллионов клиентов была раскрыта.

Удаленное выполнение кода

Удаленное выполнение кода (также называемое выполнением произвольного кода) — это тип кибератаки, при которой злоумышленник получает доступ к удаленному управлению работой устройства или компьютера. Обычно злоумышленник внедряет вредоносный код в файл, строку или целый пакет, который жертва намеревается запустить в своих системах. Это позволяет злоумышленнику запустить полномасштабную атаку, которая может поставить под угрозу все веб-приложение или веб-сервер. Двумя распространенными способами атаки на удаленное выполнение кода могут произойти в атаках на цепочку поставок программного обеспечения: тайпсквоттинг и путаница зависимостей:

Typosquatting

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

Путаница зависимостей

Путаница зависимостей — еще один подход, который злоумышленники используют для запуска удаленного выполнения кода при атаке на цепочку поставок программного обеспечения. При этом типе атаки злоумышленники создают во внешней библиотеке пакет с тем же именем, что и пакет внутренней зависимости. Поскольку обе зависимости имеют одно и то же имя, менеджер пакетов может вместо этого установить вредоносный код. Это позволяет злоумышленнику проникнуть в среду непрерывной интеграции/непрерывного развертывания (CI/CD) разрабатываемого программного приложения.

Как снизить риски в цепочке поставок программного обеспечения?

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

 

Проведите аудит вашего программного обеспечения

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

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

Совсем недавно, после атаки SolarWinds в 2020 году, которая затронула несколько правительственных учреждений США, Федеральное правительство США сделало аудит программного обеспечения юридическим требованием. за каждую компанию, продающую программное обеспечение правительственному учреждению США. Вам следует сделать то же самое для всех ваших систем. Четкий учет всех зависимостей вашего программного обеспечения — единственный способ узнать, подвержена ли ваша система риску атак в цепочке поставок.

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

Автоматизированный аудит

Помимо аудита ваших систем вручную, вам также может потребоваться настроить аудит на автопилоте. Автоматизация играет ключевую роль в обнаружении уязвимостей в любой части вашего программного обеспечения. Автоматизированное сканирование помогает быстро обнаружить уязвимости в коде вашего программного обеспечения, чтобы их можно было устранить до того, как код будет запущен в производство. Использование стороннего кода при разработке программного обеспечения будет продолжать расти, и злоумышленники будут постоянно нацеливаться на эти системы как на слабое звено для проведения атак на программное обеспечение в цепочке создания стоимости. Единственный способ остановить их — постоянно следить за безопасностью вашей системы, постоянно ее проверяя.

Подготовьте спецификацию программного обеспечения

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

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

Изображение на СБОМ

 

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

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

Разработайте систему управления рисками

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

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

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

Заключение

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