Американское агентство по безопасности кибербезопасности и инфраструктуры (CISA) и ФБР (Федеральное бюро расследований) внедрили безопасность по проектированию в среду тревога«Устранить уязвимости переполнения буфера», как часть их совместной серии «Secure Bony Design», постоянная серия, направленная на продвижение лучших практик в масштабе отрасли, чтобы устранить целые классы из уязвимостей во время дизайна и развития жизненного цикла продукта. фазы. Агентства признают уязвимости переполнения буфера в качестве дефекта дизайна программного обеспечения для памяти, который регулярно приводит к компромиссу системы. Они призывают производителей принять немедленные меры для предотвращения введения этих уязвимостей в продукты.
Оповещение описывает проверенные методы предотвращения или облегчения уязвимостей переполнения буфера благодаря принципам и лучшим практикам, защищенными по дизайну. Эти уязвимости переполнения тампона являются широко распространенным дефектом в разработке программного обеспечения для памяти, что может привести к компромиссу систем. Эти уязвимости имеют серьезные риски безопасности, так как они могут вызвать повреждение данных, чувствительную к данным, к данным, сбоям программы и несанкционированному выполнению кода. Актеры угроз часто используют эти уязвимости для получения первоначального доступа к организации организации, а затем перемещаются в боковое направление в более широкую сеть.
Агентства определили, что уязвимости переполнения тампона возникают, когда актеры угроз получают доступ или записывают информацию в неверной части памяти компьютера (то есть вне марки памяти). Эти уязвимости могут возникнуть в двух основных областях памяти, в которых управляются буферы: переполнены на основе батареи (выделенной на кучу памяти) и переполнены на основе кучи (выделенной на куче памяти).
CISA и ФБР отметили, что производители могут предотвратить уязвимости переполнения тампона, используя безопасные практики, руководители старшего программного обеспечения и лидеры бизнеса должны запросить дефект. Кроме того, агентства рекомендуют, чтобы клиенты программного обеспечения гарантировали, что производители демонстрируют соответствие безопасным методам разработки программного обеспечения в оповещении, попросив производителей предоставить счет программного материала (SBOM) и защитный сертификат разработки программного обеспечения.
Чтобы избежать уязвимостей переполнения буфера, некоторые из технических лидеров компонентов должны реализовать при использовании безопасных языков памяти при разработке программного обеспечения для перемещения управления разработкой разработчика в функциональные возможности интегрированных языков программирования. Они признают, что можно деактивировать или заменить гарантии безопасности памяти определенных безопасных языков памяти; Разработчики должны избегать этого, чтобы избежать уязвимостей переполнения буфера. Кроме того, использование безопасного языка для памяти для части программного пакета не исправляет необычный код в других библиотеках.
Агентства создания признают, что существуют важные усилия, необходимые для переписывания кодовых баз на языках памяти. Поэтому они рекомендуют производителям разрабатывать и внедрить прогрессивный план перехода для увеличения использования защищенного языка. В идеале, этот план должен включать использование языков, защищенных памятью для разработки нового кода, и, с течением времени и, когда это возможно, переходите наиболее привилегированный / презентационный код своего программного обеспечения на языки, защищенные памятью. Кроме того, в то время как переход к языкам памяти, производители должны рассмотреть возможность использования преимуществ технологий для ограничения уязвимостей безопасности памяти в существующих базах кода, разрешить индикаторы компиляторов, которые реализуют выполнение времени и времени защиты по сравнению с переполнением буферов и реализуют канарейки, которые предупреждают, если Поиск переполнения.
Кроме того, технические лидеры должны выполнять модульные тесты с инструментальной цепочкой инструментов, такой как AddressAnitizer и Memorysanitizer, которая осуществляет исходный код с проверками выполнения для переполнения буфера и других проблем безопасности памяти. В кодовой базе со значительным охватом модульных тестов эти инструменты могут обнаружить многие проблемы (но не все), связанные с безопасностью памяти, прежде чем стать уязвимостью.
Они также должны выполнять агрессивные противоречивые продукты, включая статический анализ, нечеткий и ручные журналы (при необходимости), чтобы обеспечить качество и безопасность кода на протяжении всего жизненного цикла разработки; И опубликовать дорожную карту безопасности памяти, описывающую, как производитель планирует разработать новые продукты с безопасными языками памяти и перенести код, чтобы обеспечить память памяти приоритетным образом.
Предупреждение также назначило анализ коренных причин, проводящих прошлых уязвимостей, включая переполнения буфера, для определения тенденций и моделей. Насколько это возможно, примите меры по устранению целых классов уязвимостей между продуктами, а не поверхностными причинами.
Оповещение CISA и FBI заявило, что продукты, обеспеченные дизайном, разумно защищают от вредоносных кибер-актеров, использующих наиболее распространенные и опасные классы дефектов продуктов. Интеграция безопасности в начале жизненного цикла разработки программного обеспечения (от этапа проектирования и продолжения разработки, выпуска и обновления) снижает бремя клиентов и рисков для общественности. Несмотря на это наблюдение, уязвимости переполнения тампона остаются широко распространенным классом по умолчанию.
Кроме того, если это возможно, производители должны работать над устранением уязвимостей переполнения буфера путем разработки нового программного обеспечения с использованием безопасных языков в памяти и лучших практик, описанных в этом предупреждении. Устранение уязвимостей переполнения буфера может помочь уменьшить распространенность других проблем безопасности памяти, таких как цепочка формата, уязвимости вне одного и без использования.
Производителям рекомендуется принять три принципа дизайна, обеспеченные 17 глобальными агентствами кибербезопасности для повышения безопасности программного обеспечения. Они должны соответствовать результатам безопасности клиентов, приближаясь к уязвимостям, таким как переполнение буфера, в течение жизненного цикла разработки программного обеспечения. Это включает в себя использование безопасных строительных блоков, автоматических гарантий, инструментов статического анализа и строгих журналов кода, чтобы избежать дефектов перед развертыванием, а не полагаться на исправления пост-либерации.
Производители также должны прозрачно раскрывать уязвимости благодаря таким программам, как уязвимости и общие выставки (CVE), и использовать общий список слабости (CWE), чтобы следовать классам дефектов. Они должны создать надежные программы раскрытия уязвимости (VDP) и группы вмешательства по безопасности продукции (PSIRT) для решения глубоких причин и устранения проблем безопасности памяти.
Наконец, они должны создать организационную структуру и лидерство для достижения этих целей. Менеджеры должны обрабатывать безопасность программного обеспечения как стратегические инвестиции, признавая свои долгосрочные экономии затрат и более широкое влияние на клиентов, экономику и национальную безопасность. Примеры включают в себя принятие языков программирования, защищенных памятью (например, команда Android of Google) и устранение этих классов уязвимости. Менеджеры должны выделять ресурсы, следить за прогрессом и интегрировать безопасность в качестве основного коммерческого приоритета.
Агентства рекомендовали, чтобы производители программного обеспечения планировали взять на себя обязательство по обеспечению проектирования, чтобы продемонстрировать свою приверженность созданию своих продуктов, чтобы быть безопасными по проектированию. Обязательство представляет семь ключевых целей, которые подписали подписавшие, чтобы продемонстрировать измеримый прогресс, чтобы обеспечить их продукцию в области проектирования, в частности, сокращение системных классов уязвимости, таких как буферы.
Клиенты должны требовать, чтобы программное обеспечение было обеспечено по дизайну. Организации, которые стремятся получить программное обеспечение Secure Design, должны ссылаться на агентства, обеспеченные консультациями по спросу и интегрировать соображения безопасности продукта в жизненный цикл закупок. Перед поставкой они должны задавать вопросы, чтобы понять, как каждый производитель программного обеспечения обеспечивает безопасность продукта; Во время покупок интегрируйте требования к безопасности продуктов организации на языке контракта; И после поставок они должны постоянно оценивать безопасность продуктов и результатов безопасности.