Проверка приложения на соответствие установленным политикам и стандартам в отношении шифрования и других конфигураций безопасности является очень важным и легко автоматизируемым тестированием.
Первое, что мы рассмотрим в этом разделе, – шифрование. Несколько бесплатных и платных инструментов анализируют настройки шифрования для платформ, на которых работают приложения, и передачу данных по сети. Сюда входят используемые протоколы и алгоритмы, длина ключей, сложность шифров и многое другое. При использовании публичного облака вряд ли возникнут серьезные проблемы, однако следует обратить внимание на применяемую в нем политику: чем она строже, тем выше степень защиты. Некоторые результаты сканирования системы, находящейся в традиционном центре обработки данных, скорее всего, крайне удивят проверяющего.
Второй вид анализа, представленный здесь, – проверка заголовков безопасности и настроек cookie. Как уже говорилось ранее, эти настройки подобны ремням безопасности для программного обеспечения: в экстренной ситуации они могут спасти, обеспечив еще один уровень защиты (однако чаще всего они не используются). Нужно всегда добавлять все применимые заголовки безопасности и проверять, правильно ли они установлены.
Иногда эти два вида тестов совмещаются внутри других инструментов. При выборе набора инструментов для тестирования следует ориентироваться на то, чтобы один или несколько из них проверяли шифрование, заголовки безопасности и настройки cookie.
Существует несколько способов проведения данных тестов.
• Посещение одного из бесплатных сайтов, который занимается таким тестированием, введение URL-адреса вручную, сохранение отчетов и отслеживание результатов. Такая задача будет хорошим летним проектом для студента, недавнего выпускника или младшего сотрудника и принесет отличные результаты. Можно воспользоваться такими высококачественными и бесплатными сайтами, как securityheaders.com, hardenize.io и SSL labs.
• Добавление тестов, проверяющих шифрование, заголовки безопасности и настройки cookie, в конвейеры CI/CD. Несколько бесплатных и платных продуктов могут помочь сделать это. Тесты проводятся быстро, а их результаты обладают высокой точностью.
• Использование инструмента SAST в базе кода для проверки настроек файлов cookies и заголовков безопасности.
• Проведение оценки уязвимости в инфраструктуре для проверки настроек протокола защиты транспортного уровня (англ. Transport Layer Security, TLS), обеспечивающего шифрование информации при передаче.
• Ручной обзор кода для проверки cookie и заголовков безопасности.
• Использование веб-прокси или инструмента DAST для проверки заголовков безопасности и cookie: большинство из них имеют соответствующие функции.
Заголовки безопасности, настройки безопасности cookie и использование передового опыта в шифровании – вот ваши козыри в решении вопросов, связанных с безопасностью.
ОПАСНОЕ ТЕСТИРОВАНИЕ
Тестирование на отказ в обслуживании (англ. Denial-of-service, DoS) редко проводится в естественных условиях. Как правило, вы либо приобретаете защиту от DoS, либо нет. Такое тестирование может быть довольно опасным, а его результаты, как правило, оказываются негативными. Если продвинутый злоумышленник (например, целое государство) захочет провести распределенную DoS-атаку (англ. a distributed DoS, DDoS), то с большой вероятностью она окажется успешной, независимо от того, кто будет защитником. Тем не менее лишь немногие DoS-атаки осуществляются такими мощными группами, как государство, и поэтому защита против подобных атак принесет большую пользу. Ключевыми моментами здесь являются успешное сопротивление злоумышленникам среднего уровня и наличие плана на случай необходимости отражения продвинутой атаки.
С помощью стресс-тестирования определяется, какую нагрузку (количество пользователей, трафик и т. д.) может выдержать приложение и при этом работать корректно. Оно позволяет определить, соответствуют ли верхние пределы системы требованиям (в соответствии с проектом и потребностями компании). Полезно знать, что система сможет выдержать ожидаемую максимальную нагрузку и даже больше.
Тестирование производительности – это измерение отзывчивости, надежности и качества работы приложения при определенной рабочей нагрузке. Например, если ожидается, что в вебинаре одновременно будут участвовать 20 000 сотрудников, необходимо протестировать устройство при нагрузке, немного превышающей это значение, и подтвердить, что в таких условиях оно работает на приемлемом уровне.
Некоторые компании предлагают тестирование на отказ в обслуживании, которое представляет собой смесь тестирования производительности и стресс-тестирования. Они гарантируют, что выведут систему из строя и покажут результаты такой атаки.
При наличии соответствующих инструментов вполне возможно провести стресс-тестирование и тестирование производительности своими силами. Однако необходимо проявлять крайнюю осторожность и использовать предварительную среду, а не эксплуатируемую, поскольку эти тесты могут привести к поломке других систем.
Если вспомнить наше предписание по защите конфиденциальности, целостности и доступности (триады CIA) систем и данных, то становится ясно, что эти тесты проверяют доступность систем.
Очень важно проводить стресс-тестирование или тестирование производительности любой системы, находящейся в общем доступе, в том числе и API.