По статистике 90% инцидентов безопасности возникают в результате использования злоумышленниками известных программных ошибок. Естественно, что устранение уязвимостей на этапе разработки ПО значительно снижает риски информационной безопасности. Для этого в помощь разработчикам был создан целый ряд технологий, позволяющих выявлять недостатки безопасности на ранних этапах, избавляясь от них до релиза продукта. К таким технологиям можно отнести: SAST (Static Application Security Testing) — тестирование «белого ящика», существует уже более десяти лет. Позволяет разработчикам находить уязвимости безопасности в исходном коде приложения на ранних этапах жизненного цикла разработки ПО. SAST также обеспечивает соответствие руководствам и стандартам кодирования без фактического выполнения базового кода. DAST (Dynamic Application Security Testing) — тестирование «черного ящика», может обнаруживать уязвимости и слабые места в работающем приложении, обычно веб-приложениях. Это достигается за счет использования методов внедрения ошибок в приложении, таких как передача вредоносных данных в программное обеспечение, для выявления распространенных уязвимостей безопасности, например, SQL-инъекций и межсайтовых сценариев. DAST также может пролить свет на проблемы времени выполнения, такие как: Обнаружить это с помощью статистического анализа нельзя. SAST хорошо работает, когда дело доходит до обнаружения ошибки в строке кода, например, слабой генерации случайных чисел, но обычно не очень эффективен при обнаружении недостатков потока данных. Кроме того, решения SAST известны большим количеством ложноположительных или ложноотрицательных результатов. Некоторый успех в уменьшении или полном исключении ложных срабатываний был достигнут с помощью так называемой абстрактной интерпретации. Однако для получения наилучших результатов алгоритмы абстрактной интерпретации должны быть адаптированы к:  Несмотря на все недостатки SAST, он и по сей день остается фаворитом среди команд разработчиков. Основной критерий выбора – возможность сканировать проект на уровне кода. Это позволяет находить недостатки на ранних этапах разработки продукта, что способствует снижению затрат на их устранение. Более того, SAST можно автоматизировать и прозрачно интегрировать в рабочий процесс проекта. Это устраняет некоторые проблемы, обычно связанные с тестированием приложений на безопасность. Данная особенность сильно контрастирует с DAST, где для крупных проектов придется создавать отдельную инфраструктуру, выполнять специальные тесты и запускать несколько экземпляров приложения параллельно с различными входными данными. Зато DAST понимает аргументы и вызовы функций, чего не скажешь о SAST.  IAST (Interactive Application Security Testing) — интерактивное тестирование безопасности приложений. SAST и DAST являются относительно старыми технологиями, поэтому бытует мнение, что они не лучший выбор для тестирования современных: Например, SAST плохо работает с: А все это присутствует практически в каждом современном приложении.  Статические инструменты видят только исходный код приложения, которому они могут следовать. Более того, библиотеки и сторонние компоненты часто приводят к зависанию статических инструментов, создавая сообщения: Аналогично и с фреймворками. Статический инструмент не обнаружит ничего неправильного в: Все потому, что он не может понять их структуру. IAST разработан для устранения недостатков SAST и DAST путем объединения элементов обоих подходов. IAST выполняет весь анализ в режиме реального времени: Поскольку IAST работает внутри приложения, он может анализировать: По сравнению с SAST или DAST доступ ко всей этой информации позволяет механизму IAST: RASP (Run-time Application Security Protection) — защита безопасности приложений во время выполнения. Как и IAST работает внутри приложения, но это скорее инструмент безопасности, а не тестирования. Он подключается к приложению или его среде выполнения и может контролировать выполнение приложения. Это позволяет RASP защитить приложение, даже если защита периметра сети нарушена, а приложения содержат уязвимости безопасности. RASP позволяет приложению проводить непрерывные проверки безопасности и отвечать на атаки в реальном времени, завершая сеанс злоумышленника и предупреждая защитников об атаке. Главная проблема RASP заключается в том, что он может создать у команды разработчиков ощущение ложной безопасности. Некоторые меры безопасности могут игнорироваться по причине, — «Если мы что-то упустим, RASP это исправит». Еще к недостаткам технологии RASP можно отнести ухудшение производительности приложений. Такой же минус есть и у IAST. Несмотря на то, что с ускорителями технологий можно свести снижение производительности к минимуму, неприятный осадок все равно остается. У всех вышеперечисленных технологий есть свои достоинства и недостатки, поэтому их комбинация друг с другом обеспечит более высокий уровень безопасности. Однако использование даже одной технологии на ранних этапах разработки позволяет создать более безопасное ПО, а главное сделать это быстрее и с меньшими затратами, чем привязывать все тесты уже столкнувшись с проблемой на поздних этапах.