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

Проактивное непрерывное управление уязвимостями AppSec для разработчиков и групп безопасности.

Опубликовано 6 ноября 2024 г.
Просматривать:257

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

Разработчики и группы безопасности сталкиваются с постоянно растущим набором угроз: от изощренных атак с открытым исходным кодом и контролируемых поставщиками цепочек поставок до уязвимостей, создаваемых кодом, сгенерированным искусственным интеллектом, таких как быстрое внедрение и плохая безопасность кода со стороны GitHub Copilot. Сложность современных приложений, которые часто в значительной степени полагаются на компоненты с открытым исходным кодом (например, те, которые вы найдете в npm, PyPI или RubyGems) и контейнерные развертывания, усложняет задачу. 

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

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

  • Растущая зависимость от компонентов с открытым исходным кодом. Компоненты с открытым исходным кодом стали повсеместно использоваться в современной разработке программного обеспечения. Хотя эти компоненты ускоряют разработку приложений и помогают снизить затраты, они также создают значительные риски для безопасности. Громкие атаки на цепочки поставок, такие как бэкдор XZ и взлом SolarWinds, выявили потенциал широкомасштабного ущерба при использовании уязвимостей в зависимостях с открытым исходным кодом и закрытых компонентах, контролируемых поставщиком.
  • Растущее использование кода, сгенерированного ИИ, в разработке. Рост использования генеративного ИИ (GenAI) в разработке программного обеспечения открывает как возможности, так и проблемы. GenAI может значительно ускорить задачи кодирования, но также может создавать новые уязвимости. В коде, созданном ИИ, могут отсутствовать соображения безопасности, которые обычно включают в себя опытные разработчики, что приводит к потенциальным пробелам в безопасности. Одним из примеров этого является GitHub Copilot, представляющий XSS в React.
  • Быстрый рост количества контейнерных приложений. Контейнерные приложения стали нормой для развертывания современного программного обеспечения. Контейнеры предлагают множество преимуществ, включая согласованность в различных средах и простоту масштабирования. Однако они также создают новые проблемы безопасности, особенно при управлении уязвимостями в образах контейнеров. Таким образом, разработчикам может понадобиться помощь в обучении тому, как выбрать лучший образ контейнера, и общие советы по контейнерам, но автоматизация уязвимостей образа контейнера Docker является обязательной.

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

Благодаря GenAI ИИ-помощники по написанию кода, такие как GitHub Copilot или ChatGPT, создают реальные потенциальные уязвимости. GenAI может непреднамеренно внедрить небезопасные методы кодирования или не распознать требования безопасности, зависящие от контекста. Например, модель ИИ может генерировать код, уязвимый для атак с использованием SQL-инъекций или межсайтовых сценариев (XSS). Поэтому мониторинг и защита кода, сгенерированного ИИ, имеют решающее значение для обеспечения безопасности приложений. 

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

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

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

Проактивная защита приложений и непрерывное управление уязвимостями с помощью Snyk

Чтобы снизить риски, связанные с кодом, сгенерированным искусственным интеллектом, рассмотрите возможность использования таких инструментов, как Snyk Code. Этот быстрый инструмент SAST, основанный на Snyk DeepCode AI, можно интегрировать непосредственно в среду разработки разработчика с помощью плагина. Он использует обучение данным, специфичным для безопасности, для распознавания уязвимого и небезопасного кода, гарантируя выявление и устранение проблем на ранних стадиях разработки.

Начать работу с Snyk DeepCode AI очень просто. Плагин поддерживает популярные IDE, такие как Visual Studio Code, IntelliJ IDEA, VS Code и PyCharm. 

Краткое руководство по установке и интеграции Snyk DeepCode AI в код Visual Studio.

  1. Установите расширение Snyk:
  • Откройте код Visual Studio.
  • Перейдите к представлению «Расширения», щелкнув значок «Расширения» на панели действий сбоку окна.
  • Найдите «Snyk» и нажмите «Установить» в расширении Snyk.
  1. Аутентифицироваться с помощью Snyk:
  • После установки вам будет предложено пройти аутентификацию с использованием вашей учетной записи Snyk.
  • Следуйте инструкциям на экране, чтобы войти или зарегистрироваться здесь.
  1. Включить Snyk DeepCode AI:
  • После аутентификации перейдите к представлению Snyk на панели действий.
  • Включите Snyk DeepCode AI, чтобы начать сканирование вашего кода на наличие уязвимостей.

После установки логотип Snyk на боковой панели будет отображать уязвимости и проблемы безопасности, обнаруженные в ваших зависимостях с открытым исходным кодом, вашем собственном коде (или коде, созданном GenAI), а также проблемах IaC.

Proactive AppSec continuous vulnerability management for developers and security teams

Преимущества инструментов SAST в выявлении шаблонов небезопасного кода прямо в IDE для разработчиков

  1. Обратная связь в режиме реального времени: пока вы пишете код, Snyk DeepCode AI анализирует его в режиме реального времени, обеспечивая мгновенную обратную связь о потенциальных проблемах безопасности. Это позволяет разработчикам устранять уязвимости до того, как они укоренятся в кодовой базе.
  2. Информация, основанная на искусственном интеллекте: модель искусственного интеллекта обучается на обширном наборе данных, связанных с безопасностью, что позволяет ей распознавать небезопасные шаблоны кодирования, даже те, которые были введены GenAI или плохими практиками программирования.
  3. Бесшовная интеграция: благодаря непосредственной интеграции в IDE, Snyk DeepCode AI естественным образом вписывается в рабочий процесс разработчика, сводя к минимуму сбои и повышая производительность.

Давайте посмотрим на пример устранения уязвимостей, созданных GenAI. В этом проекте я использовал GitHub Copilot для автоматического завершения кода, который создает маршрут конечной точки Express POST для запроса API OpenAI, а затем использовал res.send() для отправки ответа в браузер.

Однако что, если ответ в этой полезной нагрузке будет отображаться непосредственно в браузере? Если для отправки этого запроса использовался заголовок типа контента text/html по умолчанию, уязвимость межсайтового сценария могла бы повлиять на работающее приложение. Что мы можем с этим поделать?

Proactive AppSec continuous vulnerability management for developers and security teams
Как вы можете видеть в аннотации выше строки 31, Сник предлагает исправить эту проблему безопасности. Я нажал на него, и через несколько секунд AI-расширение Snyk DeepCode предложило смягчение последствий, заменив res.send() на res.json следующим образом:

res.json(response.choices[0].message.content);

Благодаря этому изменению приложение Express заставляет тип контента в ответе быть application/json, который является общим текстом и может допускать такой текст, как alert().

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

Автоматизация управления зависимостями с помощью Snyk Open Source

Snyk Open Source — это мощный инструмент, призванный помочь разработчикам и командам безопасности управлять рисками, связанными с зависимостями с открытым исходным кодом. С ростом зависимости от библиотек с открытым исходным кодом потребность в надежном и автоматизированном управлении зависимостями становится как никогда важной. Snyk Open Source предоставляет комплексные возможности сканирования и устранения уязвимостей, гарантируя безопасность и соответствие вашим проектам.

В моем предыдущем приложении Node.js я также использовал зависимость SQLite, о которой Snyk предупреждает меня о проблеме безопасности следующим образом:

Proactive AppSec continuous vulnerability management for developers and security teams
Эта информация об уязвимостях полезна для понимания того, какая транзитивная зависимость создает угрозу безопасности и как ее смягчить, если это вообще возможно. В этом случае обнаруживается, что транзитивная зависимость inflight имеет среднюю уязвимость.

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

Proactive AppSec continuous vulnerability management for developers and security teams
С этого момента Snyk будет автоматически открывать новые запросы на включение, чтобы предлагать обновления зависимостей, когда в манифесте моего пакета будут обнаружены уязвимости безопасности.

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

Рассмотрим следующий сценарий:

{
  "dependencies": {
    "express": "^4.17.1",
    "lodash": "^4.17.20"
  }
}

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

Когда дело доходит до управления уязвимостями контейнеров, Snyk Container помогает снять бремя, связанное с обновлением тегов базового образа с помощью исправлений безопасности.

Snyk Container — это комплексное решение, призванное помочь разработчикам и командам безопасности эффективно управлять уязвимостями контейнеров. На предприятии широко распространены рабочие нагрузки контейнерных приложений, а также необходимость обеспечения безопасности этих сред. Snyk Container легко интегрируется в ваш конвейер CI/CD, обеспечивая непрерывный мониторинг и упреждающее устранение уязвимостей в ваших образах контейнеров.

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

Вот пример того, как Snyk Container может автоматизировать PR для обновления уязвимого пакета в Dockerfile:

FROM node:14.1.0
RUN npm install express
COPY . /app
CMD ["node", "/app/index.js"]

Когда Snyk Container обнаруживает уязвимость, он автоматически генерирует PR с необходимыми изменениями для устранения проблемы. Это может включать обновление уязвимого пакета или установку исправления безопасности. Автоматизируя этот процесс, Snyk Container гарантирует быстрое устранение уязвимостей, сокращая окно уязвимости.

Proactive AppSec continuous vulnerability management for developers and security teams
Следуя этим рекомендуемым базовым образам, вы сможете значительно сократить количество уязвимостей в образах контейнеров, повысив общую безопасность ваших приложений.

Proactive AppSec continuous vulnerability management for developers and security teams
Snyk Container обнаружил несколько уязвимостей в этом базовом образе и автоматически сгенерировал запросы на обновление образа и связанных с ним зависимостей. Команда смогла быстро просмотреть и объединить эти запросы, сократив количество их уязвимостей более чем на 30% за считанные секунды за счет объединения запросов на включение и обеспечения успешного прохождения тестов конвейера CI/CD.

Proactive AppSec continuous vulnerability management for developers and security teams
Такой проактивный подход не только улучшил уровень безопасности приложений, но и высвободил драгоценное время разработчиков, которое позволило им сосредоточиться на создании новых функций, а не на устранении уязвимостей.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/snyk/proactive-appsec-continous-vulnerability-management-for-developers-and-security-teams-49he?1 В случае каких-либо нарушений, пожалуйста, свяжитесь с Study_golang@163. .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3