Цель OWASP состоит в том, чтобы помочь всему миру улучшить безопасность своего программного обеспечения. Одним из способов, как можно это сделать, является оказание постоянной поддержки разработчикам Open Source и совершенствование их программного обеспечения, которое они выпускают и которое используют многие компании.
Таким образом, следует сказать о следующих автоматизированных инструментах обнаружения уязвимостей, которые являются бесплатными для проектов Open Source. Они были собраны в данной статье для того, чтобы каждый смог познакомиться с уникальными возможностями этих инструментов.
Проектам Open Source рекомендуется использовать следующие утилиты для повышения уровня их безопасности и качества конечного продукта:
- Инструменты Interactive Application Security Testing (IAST) – для веб-приложений и веб-API.
- Постоянное обновление библиотек Open Source до актуальной версии (во избежание использования компонентов, об уязвимостях которых уже известно (топ-10 от OWASP был составлен еще в 2017 году).
- Инструменты Static Code Quality.
Дисклеймер: OWASP не сотрудничает ни с одной компанией, которая будет представлена ниже. Перечисленные инструменты будут полезны программистам, поскольку они являются бесплатными для использования в проектах Open Source. Множество усилий было потрачено на то, чтобы собрать этот богатый и ценный для читателя материал.
Бесплатные инструменты для Open Source
Ниже будут представлены бесплатные инструменты для проектов Open Source из каждой категории.
Инструменты SAST
OWASP уже содержит известные инструменты SAST: Source Code Analysis Tools, которые включают в себя бесплатные утилиты для Open Source. Любые из них, безусловно, могут быть использованы хакером или программистом. Одними из подобных облачных сервисов, которые выглядят достаточно многообещающе, являются:
- LGTM.com — бесплатный сервис статического анализа для Open Source, который автоматически отслеживает коммиты к общедоступному коду в: Bitbucket Cloud, GitHub или GitLab. Он поддерживает языки программирования C / C++, C#, COBOL (в бета-версии), Java, JavaScript/TypeScript, Python.
- Insider CLI — инструмент Static Application Security Testing для Open Source, написанный на GoLang для Java (Maven и Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# и Javascript (Node.в JS).
Кроме того, известно о следующих коммерческих инструментах SAST, которые также являются бесплатными для проектов Open Source:
- Coverity Scan Static Analysis – он может быть привязан к Travis-CI для автоматической работы с различными онлайн-ресурсами. Поддерживает более десятка языков программирования.
- reshift — инструмент CI / CD, который использует статический анализ кода для сканирования уязвимостей, а также применяет машинное обучение для прогнозирования ложных срабатываний. Поддерживает Java на данный момент и в будущем — NodeJS и JavaScript. Если перейти в раздел цен, то можно заметить, что он бесплатен для публичных репозиториев.
Инструменты DAST
Если проект содержит разработку и совершенствование веб-приложения, рекомендуется запустить автоматическое сканирование для поиска уязвимостей. OWASP поддерживает также известные инструменты DAST, и лицензия на данной странице показывает, какие из этих инструментов доступны бесплатно. Основная рекомендация заключается в том, чтобы использовать одну из данных утилит:
- OWASP ZAP – это полнофункциональный бесплатный инструмент DAST для Open Source, который включает в себя автоматическое сканирование уязвимостей и утилиты для помощи экспертам в ручном тестировании веб-приложений. Команда ZAP также упорно работает над тем, чтобы облегчить его интеграцию в CI/CD пайплайн. Перейдя по ссылке, хакер сможет узнать больше о том, как интегрировать ZAP в Jenkins.
- Arachni — это коммерчески поддерживаемый сканер, но он остается бесплатным в большинстве случаев его использования, что включает в себя сканирование проектов Open Source.
Это пока все, что известно о коммерческих инструментах для проектов Open Source из категории DAST.
Инструменты IAST
Инструменты IAST обычно предназначены для анализа веб-приложений и веб-API, но это зависит от конкретного поставщика. Возможно, существуют новые продукты, которые также могут выполнять анализ безопасности не только веб-приложений.
На данный момент известно об одном инструменте, который является бесплатным после регистрации:
- Contrast Community Edition (CE). Его полнофункциональная версия доступна для 1 приложения и максимум 5 пользователей (некоторые корпоративные функции отключены). Contrast CE поддерживает только Java и .NET.
Инструменты безопасности Open Source Software (OSS)
OSS относится к библиотекам или компонентам Open Source, которые разработчики приложений используют для быстрого создания новых приложений и добавления особых функций в существующие приложения. Gartner относит анализ безопасности этих компонентов к композиционному анализу программного обеспечения (SCA). Таким образом, анализ OSS и SCA — это, по сути, одно и то же.
OWASP имеет желание, чтобы все программные проекты поддерживали современные библиотеки для уменьшения вероятности использования компонентов с известными уязвимостями. Существует два подхода к решению этой проблемы:
Постоянная поддержка актуальной версии библиотек
Рекомендуется использовать последнюю версию каждой библиотеки, поскольку проблемы безопасности часто исправляются «молча» при обновлении. Под этим подразумевается тот факт, что отсутствует публикация CVE об изменениях.
- Плагин Maven Versions
Этот плагин может использоваться для создания отчетов для проектов Maven обо всех существующих уязвимостях и о том, когда для них будут выпущены обновления.
Служба доступная только на GitHub, которая создает pull-запросы, чтобы поддерживать систему и библиотеки в актуальном состоянии. Она автоматически генерирует их для получения обновлений, связанных с безопасностью. Поддерживает множество языков.
Рекомендована для всех проектов Open Source, доступных на GitHub.
Обнаружение известных уязвимых компонентов
В качестве альтернативы или в дополнение к поддержанию всех компонентов в актуальном состоянии, проект может специально отслеживать, есть ли какие-либо уязвимые части в системе.
Бесплатные инструменты такого типа включают в себя:
OWASP имеет свои собственные бесплатные инструменты с открытым исходным кодом:
GitHub: утилиты для борьбы с уязвимостями компонентов. Они предупреждают о проблемах, связанных с безопасностью в проектах GitHub и сообщают об известных уязвимостях системы. Поддерживают языки программирования такие, как Java, .NET, JavaScript, Ruby и Python. Всем проектам на GitHub автоматически доступны эти инструменты.
Коммерческие инструменты такого типа, которые также бесплатны для Open Source:
- Contrast Community Edition (CE). О нем уже говорилось ранее.
- Коммерческий инструмент, который идентифицирует уязвимые компоненты и интегрируется с многочисленными пайплайнами CI/CD. Он бесплатен для проектов Open Source: https://snyk.io/plans
- Если нет желания давать Snyk доступ к записи repo, вместо этого можно использовать интерфейс командной строки (CLI). Подробнее: https://snyk.io/docs/using-snyk. Для того чтобы это было доступно бесплатно, нужно настроить Snyk: https://support.snyk.io/snyk-cli/how-can-i-set-a-snyk-cli-project-as-open-source
- Еще одно преимущество использования Snyk CLI заключается в том, что он не будет автоматически создавать pull-запросы.
- Также подробная информация и рекомендации по устранению известных уязвимостей представлены на этой странице: https://snyk.io/vuln
- SourceClear. Теперь принадлежит компании Veracode. Поддерживает Java, Ruby, JavaScript, Python, Objective C, GO, PHP.
- Они делают свои данные об уязвимости компонентов свободными для поиска: https://www.sourceclear.com/vulnerability-database/search#_. Ссылка будет полезной для тех, кто изучает конкретную библиотеку.
- WhiteSource. Поддерживает более 200 языков. Доступны две версии:
- Версия GitHub: https://github.com/apps/whitesource-bolt-for-github. Подойдет для конкретной библиотеки.
Инструменты Code Quality
Качество значительно коррелирует с безопасностью. Поэтому проектам Open Source также рекомендуется рассмотреть возможность использования инструментов такого типа. Вот некоторые из них:
- SpotBugs – инструмент для Java. Это активный форк для FindBugs, поэтому, если пользователь применяет Findbugs, ему следует переключиться на него. Пользователи SpotBugs также должны добавить плагин FindSecBugs (http://find-sec-bugs.github.io/), так как он значительно улучшает базовую проверку безопасности.
- SonarQube. Это коммерческий, очень популярный, бесплатный инструмент. Он включает в себя большинство, если не все правила безопасности FindSecBugs плюс многое другое, не говоря уже о настройке CI для запуска его в проектах Open Source. SonarQube поддерживает множество языков: https://www.sonarqube.org/features/multi-languages/
- DeepScan. Поддерживает JavaScript, TypeScript. DeepScan — это инструмент статического анализа кода и сервис для проверки кода JavaScript. Он проверяет возможные ошибки во время выполнения и низкое качество кода с помощью анализа потока данных и предоставляет результаты в виде отчета. DeepScan является бесплатным инструментом для проектов Open Source на GitHub.
Инструменты безопасности, встроенные в среду DevOps/CI
- GitLab обеспечивает безопасность на своей платформе. Инструмент постоянно обновляется: https://about.gitlab.com/direction/secure/#security-paradigm
- Используются лучшие бесплатные инструменты для проектов Open Source. Они встроены в GitLab CI для того, чтобы облегчить их включение. Среди них утилиты:
- Code Quality
- Активные инструменты зависят от выбранного языка
- Они бесплатны для публичных проектов Open Source на GitLab.com
Коммерческие инструменты, как правило, лучше и проще в использовании, чем бесплатные. Не стоит скупиться и отказываться от любимого поставщика в пользу утилит, за которые не нужно платить. Для проектов Open Source – это прекрасный выбор!
Автор переведенной статьи: Dave Wichers