Снижение рисков безопасности цепочки поставок программного обеспечения часто предполагает внедрение нескольких уровней безопасности и различных стратегий. Но один из наиболее эффективных подходов к обеспечению безопасности вашего программного обеспечения — устранение возможных уязвимостей безопасности на этапе разработки вашего программного приложения. Это часто является проблемой, поскольку лишь немногие модели жизненного цикла разработки программного обеспечения явно решают вопросы безопасности программного обеспечения. Чтобы обеспечить безопасность вашего программного обеспечения, вам необходимо будет принять методы безопасной разработки программного обеспечения для любой модели жизненного цикла разработки программного обеспечения, которую вы выберете.
Структура безопасной разработки программного обеспечения (SSDF) описывает некоторые фундаментальные методы, которым следует следовать, чтобы обеспечить безопасность создаваемого вами программного обеспечения. SSDF основан на стандартных методах обеспечения безопасности разработки программного обеспечения, установленных Национальным институтом стандартов и технологий (NIST), и явно рассматривает проблемы безопасности при разработке программного обеспечения. SSDF версии 1.1 определен в НИСТ СП 800-218 публикация. Структура была первоначально опубликована в сентябре 2021 года как проект версия. 22 марта 2021 г. NIST выпустил финальную версию SSDF 1.1. Все практики и задачи высокого уровня остались прежними, но многие различия заключались в различных приведенных примерах. При принятии решения о том, какую практику внедрять, NIST рекомендует сбалансировать риск с затратами, осуществимостью и применимостью. Ключевой особенностью, которую следует учитывать, является автоматизация как можно большего количества проверок и процессов, обеспечивающих безопасность программного обеспечения.
Как организация, работающая с моделью жизненного цикла разработки программного обеспечения, вам следует применять рекомендации SSDF как часть общих усилий по защите вашего программного обеспечения от уязвимостей цепочки поставок программного обеспечения. Следование этой схеме поможет обнаружить неустраненные уязвимости до выпуска программного обеспечения. Это снижает риск и последствия возможных злоупотреблений безопасностью из-за этих необнаруженных уязвимостей. Эта статья представляет собой подробное руководство, в котором подробно описывается, что такое платформа SSDF и как она способствует безопасности цепочки поставок программного обеспечения.
4 практики безопасной разработки программного обеспечения
Практики SSDF сгруппированы в четыре категории. В рамках SSDF каждая практика идентифицируется уникальным идентификатором и кратким объяснением того, что это такое, почему это выгодно и какие задачи необходимо выполнить для ее реализации. Структура также включает примеры инструментов, процессов и методов реализации практик со ссылками на установленные документы по безопасной разработке. Ниже приведены четыре основных практики Secure Software Development Framework (SSDF) версии 1.1:
Подготовьте организацию (PO)
Разработка безопасного программного обеспечения во многом зависит от людей. Поэтому первым шагом при внедрении SSDF является обеспечение того, чтобы все в вашей организации были достаточно подготовлены к изменениям, которые потребует структура. Для начала вы должны определить конкретные требования безопасности к программному обеспечению, которое вы разрабатываете, на основе инструментов, которые они будут использовать для разработки программного обеспечения. Таким образом, вы можете начать подготовку людей, процессов и технологий, которые они используют, как на организационном, так и на индивидуальном уровне.
Подготовка организации обычно заключается в получении поддержки от высшего руководства и проведении необходимого обучения сотрудников. Часть ваших усилий по подготовке может также включать внедрение инструментов, которые помогут автоматизировать процессы и создать безопасную среду для разработки.
Защитите программное обеспечение (PS)
Структура безопасной разработки программного обеспечения описывает методы защиты всех компонентов вашего программного обеспечения от несанкционированного доступа и взлома. Это важный шаг, позволяющий предотвратить несанкционированные изменения кода, как случайные, так и преднамеренные, а также защитить исходный код и конфигурацию программного обеспечения. Защита вашего программного обеспечения может включать разные подходы в зависимости от конкретной ситуации. Если код не предназначен для публичного доступа, это может предотвратить кражу программного обеспечения и усложнить или увеличить время для злоумышленников на поиск уязвимостей.
Следуя практикам, изложенным в этом разделе SSDF, потребители программного обеспечения гарантируют, что приобретаемое ими программное обеспечение является законным и не было подделано. Кроме того, это помогает выявлять, анализировать и устранять уязвимости в программном обеспечении после его выпуска, сохраняя версии программного обеспечения.
Производите хорошо защищенное программное обеспечение (PW)
Чтобы создать хорошо защищенное программное обеспечение с минимальными уязвимостями безопасности, необходимо следовать основным шагам на протяжении всего жизненного цикла разработки программного обеспечения. К ним относятся:
- Выбор безопасных конфигураций программного обеспечения
- Оценка любого стороннего компонента вашего программного обеспечения для обеспечения его целостности.
- Обеспечение соответствия исходного кода вашего программного обеспечения практикам безопасного кодирования.
- Проверка, анализ и тестирование вашего кода на наличие уязвимостей и устранение любых проблем, выявленных до выпуска кода.
- Предотвращение уязвимостей с помощью таких функций инструментов сборки, как компиляторы и интерпретаторы.
Реагирование на уязвимости (RV)
Даже после того, как ваше программное обеспечение будет выпущено, все еще существует вероятность того, что вы обнаружите в нем уязвимости. Эти уязвимости могут обнаружить тестировщики внутри вашей организации, внешние исследователи безопасности или даже клиенты. Важной частью защиты вашего программного обеспечения является быстрое реагирование на эти уязвимости, как только они будут обнаружены. Чем дольше вы скрываете лазейку в безопасности, тем больший ущерб она может нанести. Каждой организации необходима программа раскрытия уязвимостей, а также другие политики для анализа новых уязвимостей и принятия решения о том, как их следует устранять.
Какие основные моменты следует учитывать?
Основная цель SSDF — помочь организациям согласовать и расставить приоритеты безопасности в своей деятельности по разработке программного обеспечения. SSDF учитывает бизнес-требования, устойчивость к риску и ресурсы при внедрении безопасности в жизненном цикле разработки программного обеспечения. Некоторые из ключевых соображений этой структуры включают в себя:
-
Интегрируйте безопасность в SDLC
Первым шагом в создании безопасного программного обеспечения является интеграция безопасности в различные этапы жизненного цикла разработки программного обеспечения. По сути, ваша команда разработчиков должна иметь культуру, ориентированную на безопасность, и это должно начинаться даже на самой ранней стадии процесса разработки.
В большинстве случаев многие стандартные методы кодирования содержат многочисленные уязвимости, которые могут быть использованы злоумышленниками позже, когда программное обеспечение будет выпущено. Вот почему разработчики должны с самого начала думать о безопасности и быть хорошо осведомленными о стратегиях, которые помогают уменьшить эти потенциальные маршруты атак.
Помимо размышлений о человеческих аспектах защиты вашего программного обеспечения, вам также следует с самого начала рассмотреть возможность автоматизации процесса тестирования и мониторинга вашего программного обеспечения на предмет потенциальных уязвимостей.
-
Политика безопасной разработки программного обеспечения
Политика безопасной разработки программного обеспечения — это формальный набор руководящих принципов, в которых подробно описываются методы и процедуры, которым следует ваша организация для безопасной разработки программного обеспечения. Этот политический документ содержит подробные инструкции для людей, технологий и процессов, которым вы следуете на каждом этапе жизненного цикла разработки.
Политика безопасной разработки программного обеспечения — это больше, чем просто рекомендация по повышению целостности вашего программного обеспечения. В некоторых случаях это даже является обязательным. Например, если ваше программное обеспечение должно соответствовать стандартам безопасности, таким как ISO 27001 или стандартам SOC Type 2, вам понадобится документация по политике безопасной разработки. К счастью, для этой цели можно использовать шаблонные руководства. Ваша команда по безопасности программного обеспечения также может создать документацию по политике с нуля и адаптировать ее к вашим конкретным потребностям.
-
Сторонние поставщики
Недостаточно писать безопасный код и соблюдать внутренние требования безопасности. Большая часть программного обеспечения по-прежнему использует компоненты сторонних поставщиков, которые могут не соответствовать тем же стандартам безопасности, что и вы. Эти компоненты стороннего кода являются обычными путями, по которым атаки на цепочку поставок программного обеспечения осуществляются.
В рамках усилий по обеспечению соответствия требованиям безопасности на протяжении всего жизненного цикла разработки программного обеспечения вам следует отслеживать все сторонние компоненты, которые вы используете, и убедиться, что поставщики полностью осведомлены о ваших требованиях к безопасности и полностью соответствуют тем же стандартам безопасности, что и вы.
-
Защита целостности кода
Код вашего программного обеспечения и все его компоненты являются потенциальными точками атаки, которые злоумышленники могут использовать для внедрения уязвимостей в ваше программное обеспечение. Чтобы предотвратить это, все коды следует хранить в защищенных хранилищах, где они защищены от любого вмешательства.
Часть усилий по поддержанию целостности кода включает обеспечение доступа к исходному коду только авторизованным разработчикам. Выбранный вами репозиторий кода должен иметь функции, обеспечивающие это, а также дополнительные функции для защиты процесса входа и отслеживания любых изменений, которые могут быть внесены в ваш код. Вы можете еще больше повысить целостность кода, используя автоматизацию для мониторинга данных доступа и проведения периодического анализа кода.
-
Предустановленное вредоносное ПО
Одним из распространенных способов атак на цепочку поставок программного обеспечения является сокрытие уязвимостей безопасности в предустановленном вредоносном ПО. Это может быть вирус, программа-вымогатель, троян или шпионское ПО, которое может нанести ущерб вашему программному обеспечению. Вредоносное ПО может быть предустановлено на устройствах или в доверенном программном обеспечении, которое вы используете в процессе сборки программного обеспечения, или даже в системе стороннего поставщика. Это вредоносное ПО может оставаться скрытым в течение длительного времени, пока законный процесс с цифровой подписью не позволит ему распространиться по вашей системе. Обеспечение безопасности разработки программного обеспечения включает в себя отслеживание предустановленных вредоносных программ и принятие мер по их выявлению и удалению.
-
Тестирование кода, обзор и контрольные списки
Традиционный подход к разработке программного обеспечения обычно оставляет тестирование кода до конца жизненного цикла разработки программного обеспечения. Однако такой реактивный подход к обнаружению уязвимостей программного обеспечения не очень эффективен. Более эффективный подход — настроить автоматическое тестирование, чтобы постоянно выявлять ошибки в коде по мере его создания. Разработчикам также следует просматривать и проверять свой код вручную, чтобы не разочаровываться в случае последующего обнаружения ошибок.
Поскольку необходимо отслеживать множество деталей и компонентов, имеет смысл составлять контрольные списки во время сборки. Это поможет вашей команде по разработке и мониторингу программного обеспечения обеспечить надлежащее соблюдение всех действий, изложенных в политиках SSDF.
-
Устранение уязвимостей
Несмотря на соответствие SSDF и другим стандартам безопасности, уязвимости при разработке программного обеспечения практически неизбежны. Самое главное — быть готовым смягчить эти уязвимости, когда они все же возникнут. Это будет означать наличие команды с четко сформулированными планами и стратегиями для реагирования на инциденты безопасности, как только они происходят.
То, насколько быстро ваша организация сможет реагировать на уязвимости безопасности, будет иметь огромное значение для снижения негативных последствий таких атак. Когда недостатки программного обеспечения обнаруживаются и быстро устраняются, у злоумышленников будет меньше времени на их использование. Таким образом, снижение уязвимостей является важным аспектом разработки безопасного программного обеспечения, на который должна обращать внимание каждая организация.
-
Безопасные настройки по умолчанию
Ваше новое программное обеспечение должно иметь настройки безопасности по умолчанию, которые помогут защитить пользователей от уязвимостей программного обеспечения даже без дополнительных знаний. Вы также можете реализовать меры, которые информируют пользователей об этих настройках по умолчанию, чтобы обеспечить их защиту даже на ранних этапах внедрения вашего программного обеспечения.
Заключение
Secure Software Development Framework (SSDF) — это набор передовых методов, которые следует интегрировать в жизненный цикл разработки программного обеспечения каждой организации. Следуя практикам, изложенным в этой структуре, на ранних этапах процесса разработки, вы можете уменьшить недостатки безопасности в версии вашего программного обеспечения, которую вы в конечном итоге выпустите. SSDF также помогает обнаруживать угрозы безопасности и снижает потенциальное влияние необнаруженных уязвимостей, которые попадают в финальную версию. Эта структура является ключом к предотвращению повторения подобных проблем безопасности в будущем.