Во второй части серии мы переходим к устранению причин ошибок безопасности, объединяя подходы к тестированию по всему ландшафту приложения. Вы найдете здесь инструменты и способы проверены в борьбе с Cossack Labs ‘Программные продукты безопасности жизненный цикл 🔐
Часть 2
SAST/SCA: Поиск ошибок в коде
Пузырь, чтобы выявить уязвимости
Обнаружение секретов
Сканирование зависимостей
Тестирование безопасности более крупных организаций и поведения высокого уровня
💡SAST/SCA: Поиск ошибок в коде
Изучение самого кода может сэкономить много времени и усилий.
Современные языки и платформы высокого уровня в основном защищают разработчиков от переполнений буфера и удаленного выполнения кода, которые являются одними из самых опасных и разрушительных проблем безопасности. Однако Библиотеки часто стоят на плечах гигантов и повторного использования на небезопасных языках низкого уровня.
Тем не менее, при статическом тестировании безопасности приложений (SAST) вы можете автоматизировать обнаружение проблем с памятью, неопределенное поведение и другие глюки, которые приводят к атакам при потоке выполнения. Большинство предупреждений, на которые можно посмотреть, — это утечки памяти, переполнения буферов и тому подобное. Приготовьте себя и остерегайтесь ложных срабатываний.
📎n Найти ошибки в коде, возьмите свои начальные точки: ⚙ OWASP LIST некоторых инструментов SAST, ⚙ Nist Список анализаторов безопасности исходного кода , ⚙ Этот хорошо сочетающийся и обновленный глоссарий новейшего Современные инструменты безопасности SCA SCA Анкет
💡 Обязательство по выявлению уязвимостей
«Никогда не доверяйте вашему вводу» — это одно из кардинальных правил компьютерного программирования.
Fuzzing — это автоматический процесс в тестировании программного обеспечения, который использует это правило, и ищет эксплуатируемые ошибки посредством питания случайных, недействительных и неожиданных входов в тестируемое программное обеспечение.
Пушивание особенно полезно для долгоживых и часто используемых кодовых модулей-таких как библиотеки, многократные модули, системные приложения, управления безопасности в ваших приложениях.
Допустим, вы написали модуль аутентификации и использовали его повсюду в ваших бэкэнд -приложениях: имеет смысл разбить его и исправить найденные проблемы.
Правило эмпирического правила: Чем чаще вы используете модуль или, тем более рискованные активы он защищает, тем лучше он становится для пузырьков.
Данные, предоставленные Fuzzer, просто «хорошо» для анализатора, чтобы не отвергать его, но в противном случае это мусор и может убрать программное обеспечение далеко от обычных путей кода, осуществляемых вашими тестовыми люксами и пользователями. Это помогает вспять уязвимости, которые были бы не обнаружены по -другому.
Другим преимуществом пузырька является то, что этот вид тестирования выполняет фактический код, и, следовательно, он почти полностью лишен ложных срабатываний (что довольно часто происходит со статическими анализаторами).
С точки зрения безопасности, Fuzzing-это как тестирование элементов управления безопасности, так и тестирование поведения памяти, как такие ошибки, как знаменитые Heartbleed (который сочетает в себе как плохую контроль безопасности, так и неожиданное поведение памяти) мог легко размыться Анкет
Для тестирования безопасности пузырь особенно полезен, когда дело доходит до подачи в приложение, такие псевдодовалидные входы, которые пересекают границу доверия. Нарушение границ доверия происходит, когда тестируемое приложение сделано для доверия к неисправным данным, подаваемым в него. Этот подход имитирует противника, пытающегося внести вредоносный контент в приложение в надежде достичь эскалации привилегий или простого неисправности, аварии и т. Д. (Например, проверьте Это Google Repo , где они разместили нечеткие словаря для популярных инструментов).
Испытания на пузырь должны быть хорошо продуманными, хорошо спланированными и хорошо написанными. На пузырь также влияют среда выполнения (эффект волны), конфигурация и возможности тестового набора.
Это не волшебная пуля для всех ваших автоматизированных тестирования безопасности, но это займет вас далеко — как вы готовы инвестировать время и усилия в подготовку.
Чтобы начать с Fuzzing, мы бы порекомендовали исследовать это Куративный список нечетких ресурсов Анкет Кроме того, в последней части серии вы можете найти подходы и инструменты, используемые для нечетки нашей криптографической библиотеки Themis Анкет
💡secrets обнаружение
Совсем недавно привлек внимание общих разработчиков, обнаружение секретов и их очистка до того, как код станет общедоступным, необходимо избежать конфиденциальной утечки данных. По сути, цель состоит в том, чтобы убедиться, что при вталкивании кода в общедоступный репозиторий не протекает никакие IP-адреса, токен, пароль или ключ.
Твратировать процесс и расширить свой CI с ним, рассмотрите такие инструменты, как: ⚙ Clouseau , ⚙ Gitguardian , ⚙ GitLeaks , ⚙ Обнаружение секретов Анкет
Scanning Сканирование зависимости
С растущей тенденцией не в том, чтобы на самом деле не изучать, какие зависимости вы используете, какие зависимости являются зависимостями ваших зависимостей, и что именно скрыто под 5 уровнями отношений зависимостей … убедившись, что у вас нет уязвимой зависимости где -то в пределах линии. существенный.
Хотя эти инструменты довольно новы и еще не раскрывают свою силу в полном объеме, они уже приносят душевное спокойствие для постоянно меняющихся экосистем, таких как iOS, Node.js, Python и Ruby.
Вы можете получить некоторую проверку зависимостей бесплатно через автоматизированную проверку зависимости GitHub или используя OWASP-зависимость-проверка Анкет Или вы можете попробовать Snyk и Whitesourcesoftware Анкет
💡 Обеспечение безопасности более крупных организаций и поведения высокого уровня
Помимо фактического тестирования кода, который вы пишете, может быть плодотворно проверять более крупные организации: целые услуги и инфраструктурные компоненты. Крайне важно, когда разработанный вами продукт состоит из многочисленных объектов высокого уровня, микро-сервисов и имеет различные автономные зависимости.
Некоторые сканеры уязвимости могут помочь в автоматизации тестирования безопасности путем сканирования ваших веб -сайтов и/или сети для огромного количества известных рисков. В результате такого тестирования вы можете получить список уязвимостей, обнаруженных в вашей инфраструктуре, и рекомендации о том, как их можно исправить или закрепить иное.
Другой способ исправления — подтолкнуть процесс к автоматическим сканерам уязвимости. Это специально актуально для программного обеспечения, которое составляется, а не сверху вниз, и состоит из многих сервисов, библиотек и кусков кода.
Некоторые из популярных сканеров уязвимости бесплатной сети для вашего рассмотрения включают Открытая система оценки уязвимости (OpenVAS) , Microsoft Baseline Analyzer , Nexpose Community Edition , Retina CS Community , SecureCheq .
Стоит отметить, что инфраструктуры должны быть проверены, когда они будут полными и функциональными (живыми или почтиживыми) для максимального воздействия и полезности осмотра.
☛ Узнайте больше об автоматическом тестировании безопасности программного обеспечения в более широком контексте производительности и надежности в следующей части серии.
Оригинал: «https://dev.to/cossacklabs/automated-software-security-testing-for-devs-part-2-47nm»