Как защитить приложения на Python Flask
Узнать большеБольшое количество приложений выпускается на рынок с уязвимостями, которые могут стать точкой входа для хакеров. Злоумышленники могут использовать уязвимости, чтобы похищать и удалять пользовательские данные, несанкционированно совершать платежные операции, вызывать сбои в работе программ и многое другое. Многие уязвимости появляются еще в процессе создания продуктов, и разработчики должны предпринимать меры, чтобы устранить их до релиза ПО. Среди способов борьбы с уязвимостями — проведение своевременного анализа кода SAST и DAST. Разберем особенности этих вариантов анализа, преимущества и недостатки, а также существующие на рынке инструменты.
Static Application Security Testing
SAST — статический анализ кода приложений по методу белого ящика. С ее помощью можно выявлять практически все уязвимости кода из мировых классификаций угроз, в том числе перечня OWASP TOP 10.
Проведение анализа требует доступа к исходному коду. Проверку можно выполнять вручную совместными усилиями тестировщиков и ИБ-специалистов, но надежнее автоматизировать процессы, используя специальный анализатор кода.
Если доступа к исходному коду нет, можно проанализировать бинарный код. Специальные алгоритмы с помощью реверс-инжиниринга восстановят исходник из исполняемых файлов, однако эта опция доступна только в решении Solar appScreener.
SAST, в отличие от DAST проводится без запуска программы, легко и быстро интегрируется в цикл безопасной разработки. Вот еще несколько сильных сторон статического анализа:
- Практически полный охват исходного кода, что позволяет обнаружить максимум существующих уязвимостей.
- Возможность проводить тестирование уже на первых фазах разработки ПО.
- Отсутствие необходимости разворачивать для тестирования специальные рабочие среды.
- Возможность регулярно проводить статический анализ и сравнивать результаты для отслеживания динамики устранения проблем.
Ключевой минус SAST — возможные ложноположительные срабатывания. Разработчикам приходится проверять каждое срабатывание, и на это уходит немало времени. Но преимущества тестирования перекрывают недостаток, поэтому статический анализ — один из самых популярных методов контроля безопасности ПО.
Dynamic Application Security Testing
DAST – это динамический анализ программного обеспечения, реализуемый путем имитации реальных атак на программу в процессе ее выполнения. Такое тестирование выполняется по методу черного ящика, то есть не требует погружения в состав приложения и доступа к коду ПО. Анализ проводится как бы от лица потенциального злоумышленника, действующего снаружи.
Цели DAST:
- Выявление проблем, которые не были обнаружены при статическом анализе, поскольку могли проявиться только в ходе эксплуатации приложения.
- Повышение общего уровня безопасности программного обеспечения. Комплекс SAST/DAST позволяет найти и устранить большинство уязвимостей еще в процессе создания ПО.
Динамическое тестирование реализуется с помощью автоматизированных сканеров, имитирующих пользовательские действия. Таким образом удается выявлять недоработки в части функциональности и уязвимости, которые могут быть проэксплуатированы злоумышленниками для реализации атак.
Схему работы DAST-анализатора вкратце можно описать так: определяется API сервиса, отправляются запросы с заведомо неверными данными, а затем анализируются ответы приложения. Происходит сравнение ответов на подставные и обычные пользовательские запросы. На основании результатов этого этапа теста можно предположить наличие уязвимостей. По окончании проверки анализатор выдает список обнаруженных проблем с рекомендациями по их устранению.
Чтобы сравнить SAST и DAST, необходимо изучить преимущества и минусы каждого вида анализа. Сильные стороны динамического тестирования:
- Возможность проведения анализа без доступа к исходному коду приложения.
- Проверка поведения программы в реальной среде, что важно не только с целью обнаружения уязвимостей, но и для исследования ее функциональности.
- Относительно небольшое количество ложных срабатываний, благодаря чему можно не тратить время на разбор нерелевантных срабатываний.
Самый значительный минус DAST — необходимость разворачивать отдельную среду, которая должна максимально имитировать реальную. Также придется создавать копию программы, чтобы при проверке не пострадало оригинальное приложение.
Различия между SAST и DAST
Кратко подытожим, в чем заключаются основные отличия между этими двумя видами анализа кода:
- Проведение статического анализа предполагает доступ к исходному коду. Динамические тесты нужно проводить без него, нужна только ссылка на приложение.
- Для реализации статической проверки не нужно запускать приложение. Динамическое тестирование осуществляется только в процессе работы программы.
- SAST не требует развертывания отдельных сред для тестирования, а для реализации DAST это необходимо.
- SAST позволяет выявлять ошибки и уязвимости в исходном коде, DAST — проблемы, которые проявляются в ходе эксплуатации приложения.
- Статический анализ гарантирует практически полное покрытие кода, динамический не дает таких результатов.
SAST и DAST не заменяют, а дополняют друг друга, поскольку применяются разные технологии и алгоритмы анализа.
Как выбрать между SAST и DAST
По возможности оба тестирования необходимо внедрить в цикл безопасной разработки программного обеспечения DevSecOps и регулярно проводить в процессе создания ПО, чтобы контролировать появление уязвимостей. Однако есть случаи, когда полезен именно конкретный вид анализа.
В каких ситуациях необходим SAST:
- Если программа разрабатывалась подрядчиком, и заказчику необходимо проверить исходный код перед запуском ПО в эксплуатацию.
- Если нужно периодически проверять компоненты приложения в процессе разработки. SAST проще реализуем, чем DAST, поскольку для него не нужно разворачивать отдельную среду.
- Если приходится иметь дело с наследованным ПО. Но в таком случае может не быть доступа к исходному коду, и придется анализировать бинарный.
Динамическое тестирование применяется, если приложение уже можно развернуть в рабочей среде. Также оно позволяет провести контрольную проверку на наличие ошибок перед релизом продукта.
Модули SAST, DAST в Solar appScreener
В комплексной платформе Solar appScreener реализованы модули для проведения статического и динамического анализа. Модуль статического анализа включает следующие алгоритмы: лексическая, синтаксическая и семантическая проверки, анализ taint, распространение констант и типов, исследование синонимов и графов потока управления. Также реализована уникальная технология Fuzzy Logic Engine, применение которой способствует значительному сокращению числа ложноположительных срабатываний.
Как работает модуль SAST:
- Происходит построение модели кода.
- Применяются технологии статического анализа.
- Согласно настроенным правилам происходит поиск уязвимостей в коде.
- Собранная информация оформляется в отчеты с рекомендациями.
Модуль DAST включает следующие виды сканеров: AJAX, традиционный, автоматический, пассивный, Fuzzer. Можно выбирать разные типы сканирования, например, стандартный без ограничений, агрессивный для исследования новых обнаруженных узлов и режим активной атаки, разрешающий имитировать злоумышленную активность на этапе сканирования. С помощью инструментов фаззинга можно проверять поведение программы при условии неожиданного входа. Сканер AJAX используется для обращения к серверам без перезагрузки страницы. Необходимые инструменты можно подключать, отталкиваясь от целей тестирования.
Применение Solar appScreener дает возможность получать коррелированные отчеты по итогам SAST и DAST, чтобы иметь полное представление обо всех проблемах ПО. Также корреляция позволяет убедиться, что недочеты, найденные в ходе статического анализа, действительно существуют, поскольку этот вид тестирования может выдавать ложноположительные результаты.