В течение почти двух десятилетий кибер-злоумышленники получали прибыль от организаций, используя уязвимое программное обеспечение через Интернет. Как следствие организации пытались защитить своё уязвимое программное обеспечение множеством различных технологий, которые подпадают под категорию зонт «безопасности программного обеспечения». Антивирусные решения, DDoS защитные устройства, брандмауэры нового поколения, DMZ и системы предотвращения вторжений, брандмауэрам веб-приложений (WAF), решениям по управлению ботами, самозащита приложений во время выполнения (RASP), балансировщики нагрузки и множество других технологий, ни одна из которых на самом деле не решает корень проблемы, причина почти каждой успешной кибератаки — уязвимое программное обеспечение.
Продукты, упомянутые выше, пытаются управлять и контролировать кибератаки, но ни одно из них не может найти и исправить множество эксплуатируемых уязвимости в программном обеспечении. Попытка защитить уязвимое программное обеспечение, используя внешние приложения просто терпят неудачу. Eсть лучший способ защиты программного обеспечения, путем тестирования, поиска,
и устранение уязвимостей, что приводит к созданию более безопасных программное обеспечение. В следующем разделе описывается, как это можно сделать сегодня.
Категории уязвимости ПО
Хотя наиболее распространенные недостатки программного обеспечения (или ошибки программного обеспечения) перечислены в OWASP Top 10 и SANS Top 25, все эти списки можно разбить на три основные категории уязвимостей,:
- Нескомпилированный код
- Запуск кода
- Компоненты с открытым исходным кодом
Для организаций, которые хотят производить более безопасное программное обеспечение, обязательно использование нескольких решений AST в DevOps для устранить уязвимости, которые, вероятно, существуют в организации с проприетарным программным обеспечением. Давайте углубимся в то, почему это так.
Разные AST решения находят разные Уязвимости программного обеспечения
Решения статического тестирования безопасности приложений Static Application Security Testing (SAST) используются для
постепенно сканировать (тестирования) некомпилированного кода на наличие уязвимостей во время всего процесса разработки программного обеспечения в Dev. Когда код все еще в своем некомпилированном состоянии, статическое тестирование предназначено для поиска недостатков, таких как SQL-инъекция. SAST решения хороши, они предоставляют информацию на уровне кода относительно того, где и как исправить уязвимости в исходном коде. SAST хорошо вписывается в интегрированные среды разработки (IDE), имеет трекеры и инструменты для поддержки рабочих процессов CI / CD. SAST хорошо подходит для DevOps, так как он не вносит значительных задержек в выпуск ПО.
Решения для интерактивного тестирования безопасности приложений Interactive Application Security Testing (IAST) помогает обнаружить недостатки конфигурации во время деплоя приложения, выявленные во время функционального тестирования. Не обоснована предполагать, что приложения не содержат уязвимостей после фазы разработки, и код не нуждается в проверке. IAST понимает, как все части приложения работают вместе и работают во время выполнения, поэтому может обнаружить уязвимости в запущенных приложениях, которые могут использовать злоумышленники. IAST хорошо вписывается в DevOps, поскольку он не имеет значительных задержек, для проведения функционального тестирования.
Решения для анализа программного обеспечения Software Composition Analysis (SCA) расширяют возможности для группы разработки, безопасности и эксплуатации, определения рисков, связанных с открытым исходным кодом в программном обеспечение, которое они пишут, деплоят и поддерживают. Анализ и управление компонентами с открытым исходным кодом гарантирует, что уязвимые компоненты будут удалены или заменены прежде чем они станут проблемой. SCA хорошо вписывается в DevOps, так как не вносит значительных задержек.
Средства динамического тестирования безопасности приложений Dynamic Application Security Testing (DAST) обнаруживают
уязвимости в работающем приложений от внешних атак. DAST ограничено отражающими типами уязвимости, поскольку решения DAST по сути слепы, к тому что происходит внутри приложения. В результатах теста DAST, нет указаний на уровне кода, относительно того, где расположены уязвимости программного обеспечения, что затрудняет разработчикам легко исправить выявленные уязвимости. Инструменты DAST не могут обеспечить быстрые сроки выполнения работ. DAST плохо вписывается в DevOps так как это часто приводит к длительным задержкам.