![Анализ безопасности мобильных приложений](/upload/cssinliner_webp/iblock/398/65hxs7kct9ora3qar69mp5enngxv98ab/analiz_bezopasnosti_mobilnyh_prilozhenij.webp)
Анализ безопасности мобильных приложений
Узнать больше08.10.2021
Эксплуатация уязвимостей в исходном коде ПО, в зависимости от их типа, позволяет злоумышленникам получить контроль над уязвимыми системами, что в итоге может привести к разным негативным последствиям: от кражи важных для компании данных до «отказа в обслуживании» какой-либо корпоративной информационной системы (далее – ИС).
Минимизировать вероятность появления уязвимостей в программном обеспечении позволит своевременная проверка. Она может проводиться на разных этапах, как в процессе разработки, так и при эксплуатации ПО.
Проверить код приложения можно вручную или с помощью автоматизированных средств.
Ручной поиск
Для реализации этого метода требуется высокий уровень квалификации разработчиков, умение анализировать код (в том числе дизассемблированный), находить в нем изъяны и писать код для тестирования.
Довольно подробно алгоритм ручного поиска уязвимостей описывают Грег Хогланд и Гар Мак-Гроу в своей книге «Взлом программного обеспечения».
Ручной поиск и проверка безопасности исходных кодов основаны на том, что в коде есть ключевые места, вероятность присутствия уязвимостей в которых предельно высокая. Наличие ключевого места определяется двумя условиями:
В фрагменте имеется потенциально опасный вызов функции.
Обнаружение проблем в исходных кодах с помощью ручного поиска – очень трудоемкий и занимающий немало времени процесс. Однако его все-таки используют некоторые разработчики. Ведь далеко не все уязвимости являются шаблонными и их можно выявить по какому-то алгоритму. Конечно, одним ручным поиском и анализом обойтись вряд ли получится – его целесообразно использовать совместно со средствами автоматизации проверки кода приложений. И тем не менее он все-таки работает. Хакеры во многих случаях ищут проблемные места в ПО именно таким способом: тратя уйму времени на ручной анализ исходного кода. Однако зачастую их трудозатраты окупаются с лихвой.
Динамическое тестирование (DAST)
DAST также называют методом черного ящика. При его использовании для анализа безопасности приложения и поиска уязвимых мест требуется выполнение программы. Уязвимости в исходном коде выявляются за счет имитации атак, воссоздания различных условий, в которых могут проявляться угрозы, и анализа реакции программного обеспечения на них.
DAST-сканеры помогают отследить уязвимости в коде приложений перед выводом в релиз. Также они подходят для проверки уже эксплуатируемого ПО. При имитации атак используются те же алгоритмы и подходы, которые практикуют злоумышленники. Поэтому, если сканер в состоянии обнаружить проблему, то можно говорить, что и хакеры с большой вероятностью также могли бы ее выявить и реализовать угрозу.
Есть у этого метода и слабые стороны. Один из главных его минусов – необходимость развертывания отдельной копии ПО для проведения тестирования. Это требует дополнительных ресурсов, которые есть не у всех. К тому же с помощью DAST не удается покрыть 100% кода. Плюс проблемы с поддержкой отдельных технологий. Некоторые динамические сканеры не сильны при работе с jQuery, REST, SOAP, XSRF/CSRF-токенами, ошибками использования криптографии, слабыми механизмами генерации cookie или session ID.
Тем не менее метод DAST пользуется популярностью среди разработчиков ПО. При наличии команды квалифицированных специалистов и необходимых вычислительных мощностей с его помощью организуется эффективное, результативное тестирование, поиск закладок программного обеспечения, а также других проблем и уязвимых мест. Конечному пользователю может быть сложно реализовать этот метод у себя. При желании самостоятельно проверять ПО на наличие уязвимостей есть смысл посмотреть в сторону SAST.
Статическое тестирование (SAST)
SAST, или статическое тестирование исходных кодов, еще называют методом белого ящика. Поиск проблемных мест происходит без их фактического исполнения. Благодаря этому проводить проверки можно на любых этапах жизненного цикла программы, в том числе и в процессе эксплуатации.
Из плюсов этого подхода можно выделить:
Высокую скорость тестирования. Современные анализаторы могут сканировать по несколько миллионов строк в секунду. А, например, при использовании DAST часто не удается завершить проверку ПО, уложившись в выделенное окно тестирования.
Высокая точность. Но здесь многое зависит от алгоритмов и шаблонов, заложенных разработчиками решения.
Однозначно сказать, что какой-то из рассмотренных способов поиска уязвимых мест в программном обеспечении лучше, нельзя. У каждого есть свои особенности и нюансы. Кому-то проще, быстрее и дешевле пользоваться ручным поиском (если исходный код не совсем громоздкий), у кого-то есть возможность и время использовать DAST, а кому-то удобнее SAST. Многие комбинируют методы проверки ПО на безопасность. И это работает: недостатки одного перекрываются преимуществами другого.
Самые важные новости кибербезопасности у вас в почте
Выберите темы, на которые бы вам было интересно получать новости.
Для получения бесплатной консультации заполните форму ниже и отправьте заявку. Наш менеджер свяжется с вами в ближайшее время.