Цепочка убийств NextGen: защита облака
С экспоненциальным ростом числа кибератак, о которых мы все знаем, в сочетании с переходом на Интернет вещей (IoT) и облачные технологии, поверхности и векторы атак одновременно расширились до почти неконтролируемого состояния.
Одним из наиболее широко используемых инструментов в тестировании на проникновение являются фаззеры. Я предлагаю изучить фаззеры и их эволюцию как инструментов, а также применимость к современным облачным средам и средам IoT, а также изучить актуальность фаззеров и других инструментов тестирования на проникновение в этих сложных средах.
Согласно определению Open Web Application Security Project (OWASP), или — это метод тестирования программного обеспечения «черный ящик», который в основном заключается в поиске ошибок реализации с использованием искаженного / полуискаженного ввода данных в автоматическом режиме.
Для тех из вас, кто может быть не знаком с фаззингом, OWASP предлагает следующий тривиальный пример: Давайте рассмотрим целое число в программе, в которой хранится результат выбора пользователем одного из трех вопросов. Когда пользователь выбирает один, выбор будет 0, 1 или 2. Это три практических случая. Но что, если мы передадим 3 или 255? Можем, потому что целые числа хранятся в переменной статического размера. Если случай переключателя по умолчанию не был реализован безопасным образом, программа может аварийно завершить работу и привести к «классическим» проблемам безопасности: (не)эксплуатируемое переполнение буфера, DoS и тому подобное.
Таким образом, в простом определении фаззинг — это искусство автоматического поиска ошибок, и его роль заключается в поиске ошибок реализации программного обеспечения и их выявлении, если это возможно. Существует две формы программ фаззинга, основанные на мутациях и на основе поколений, которые можно использовать как тестирование белого, серого или черного ящика. Форматы файлов и сетевые протоколы являются наиболее распространенными объектами тестирования, но любой тип входных данных программы может быть подвергнут фаззингу. Интересные входные данные включают переменные среды, события клавиатуры и мыши и последовательности вызовов API. Даже элементы, обычно не считающиеся «входными», могут быть обработаны фаззингом, например, содержимое баз данных, разделяемая память или точное чередование потоков.
Фаззер — это программа, которая автоматически вводит полуслучайные данные в программу/стек и обнаруживает ошибки.
Часть генерации данных состоит из генераторов, а идентификация уязвимостей зависит от инструментов отладки. Генераторы обычно используют комбинации статических векторов фаззинга (известных как опасные значения) или полностью случайных данных. Фаззеры нового поколения используют генетические алгоритмы для связывания введенных данных и наблюдаемого воздействия. Такие инструменты, как правило, еще не получили широкого коммерческого использования, и я расскажу об этих инструментах позже.
Пример фаззера
Простым примером того, как работает фаззер, может быть тестирование на переполнение буфера (BFO).
Атака с переполнением буфера или повреждением памяти — это условие программирования, которое допускает переполнение допустимых данных за пределы предварительно установленного предела хранения в памяти.
Обратите внимание, что попытка загрузить такой файл определения в приложении Fuzzer потенциально может привести к сбою приложения.
Модель зрелости
Фазз-тестирование — это стандартный для отрасли метод обнаружения неизвестных уязвимостей в программном обеспечении. Нечеткое тестирование является обязательной частью многих современных безопасных жизненных циклов разработки программного обеспечения (SDLC), таких как те, которые используются в Adobe, Cisco Systems и Microsoft. Модель зрелости для нечеткого тестирования, не получившая широкого распространения, существует и была разработана codenomicon. Он сопоставляет показатели и процедуры эффективного нечеткого тестирования с уровнями зрелости. Модель зрелости действительно предоставляет методологию фаззинга, позволяя различным организациям эффективно обмениваться информацией о фаззинге, не привязываясь к конкретным инструментам.
В таблице ниже показаны требования для каждого уровня модели зрелости. Столбцы и сокращения полностью объясняются в последующих разделах. Показанные здесь требования применяются для каждого вектора атаки на цель.
Является ли фаззинг эффективным инструментом для защиты данных в Интернете вещей и в облаке?
Сообразительный механизм тестовых сценариев создает искаженные входные данные или тестовые сценарии, которые будут использоваться для проверки цели. Поскольку фаззинг — это проблема бесконечного пространства, механизм тестовых сценариев должен уметь создавать тестовые сценарии, которые могут вызвать сбои в целевом программном обеспечении. Опыт имеет значение — разработчики, создающие механизм тестирования, в идеале должны тестировать и взламывать программное обеспечение в течение многих лет.
- Недостаточно создать качественные тест-кейсы; фаззер также должен включать в себя автоматизацию доставки тестовых случаев к цели. В зависимости от сложности тестируемого протокола или формата файла фаззер поколения может легко создать сотни тысяч и даже миллионы тестовых случаев.
- По мере того, как тестовые случаи доставляются к цели, фаззер использует инструменты для мониторинга и обнаружения сбоев. Это один из основных механизмов фаззинга.
- Когда у цели происходит явный сбой или необычное поведение, понимание того, что произошло, имеет решающее значение. Хороший фаззер ведет подробные записи своих взаимодействий с целью.
- Идея воспроизводимости идет рука об руку с тщательным ведением записей. Если ваш фаззер доставляет тестовый пример, который вызывает сбой, доставка того же тестового примера для воспроизведения того же сбоя должна быть простой. Это ключ к эффективному исправлению: когда тестировщики обнаруживают уязвимость с помощью фаззера, разработчики должны быть в состоянии воспроизвести ту же уязвимость, что делает определение основной причины и исправление ошибки относительно простым.
- Фаззер должен быть прост в использовании. Если кривая обучения слишком крутая, никто не захочет ее использовать, и она просто покроется пылью.
Но, в конце концов, будут ли теперь эти инструменты иметь значение, насколько хорошо они работают в облаке?
Как отмечает VooDoo Security, многим организациям, перемещающим ресурсы в облако, требуются оценки уязвимостей и тесты на проникновение критически важных активов, чтобы определить, присутствуют ли уязвимости и какие риски они представляют. Во многих случаях требования соответствия также могут вызывать потребность в пен-тестах. Однако выполнение сканирования и тестов на проникновение в облаке сильно отличается и сложнее, чем в обычной сети или приложении.
Тип облака будет определять, возможно ли перо-тестирование. По большей части облака «Платформа как услуга» (PaaS) и «Инфраструктура как услуга» (IaaS) допускают тестирование на проникновение. Тем не менее, поставщики программного обеспечения как услуги (SaaS) вряд ли позволят клиентам проводить пентестирование своих приложений и инфраструктуры, за исключением третьих лиц, выполняющих собственные пентесты облачных провайдеров на соответствие требованиям или лучшие практики безопасности. Предполагая, что тестирование на проникновение разрешено, следующим шагом будет согласование с поставщиком облачных услуг (CSP) двумя способами. Во-первых, с помощью договорной формулировки, в которой говорится, что тестирование с помощью пера разрешено, какое тестирование и как часто. Если в договоре с клиентом или в соответствии с опубликованными политиками CSP (например, на его веб-сайте) язык не указан, то тестирование необходимо будет согласовать, если это возможно.
Суть в том, что если вы не можете работать со своим поставщиком облачных услуг, хорошего ответа нет.
Как недавно заявила Infoblox, проводя атаки «белой шляпы» для выявления потенциальных точек входа во внешние части ИТ-сети организации, такие как ее брандмауэры, почтовые серверы или веб-серверы, ручное тестирование может выявить любые существующие недостатки безопасности. Однако число этих потенциально уязвимых внешних аспектов быстро увеличивается.
Такие явления, как BYOD, облачные и теневые ИТ, привели к тому, что к инфраструктуре организации добавилось все больше и больше различных устройств, каждое из которых использует все большее количество приложений как для деловых, так и для личных целей. Этот рост привел к расширению границ сети до такой степени, что они почти растворились, оставив сети практически аморфными. И неизбежный взрыв устройств, которые будут представлены Интернетом вещей, только еще больше изменит форму сети.
Эта новая среда, вероятно, позволит процветать все более сложным и изощренным угрозам, поскольку миллиарды подключенных устройств продолжают изменяться и расширять сетевой периметр, увеличивая количество потенциальных точек входа для злоумышленников.
Проще говоря, чем больше миль ограждений, которые нужно патрулировать, с большим количеством потенциальных точек входа, тем сложнее будет удержать злоумышленников. Логически это предполагает, что тестирование пера сейчас важнее, чем когда-либо, но это не обязательно так.
Будущее ручного тестирования и безопасности
По данным InfoSec Institute, одной из отраслей, которая могла бы больше всего выиграть от внедрения искусственного интеллекта, является кибербезопасность. Интеллектуальные машины могут реализовать алгоритмы, предназначенные для выявления киберугроз в режиме реального времени и обеспечения мгновенного реагирования. Несмотря на то, что большинство охранных фирм уже работают над автоматизированными системами нового поколения, мы все еще далеки от создания действительно самосознательной организации.
Специалисты по безопасности осознают, что многие проблемы невозможно решить обычными методами, и поэтому используют алгоритмы машинного обучения. Фирмы безопасности работают над этим новым семейством алгоритмов, которые могут помочь системам, которые их внедряют, выявлять угрозы, которые были пропущены традиционными механизмами безопасности. Сообщество специалистов по безопасности способствует быстрому распространению интеллектуальных объектов, которым угрожает растущее число киберугроз, сложность которых возрастает.
К основным рискам, связанным с надежностью систем, реализующих алгоритмы искусственного интеллекта, относятся:
- Проверка: трудно доказать соответствие между формальными требованиями к дизайну из-за динамического развития таких решений. Во многих случаях система ИИ со временем развивается благодаря их опыту. Эта эволюция может привести к тому, что система больше не будет соответствовать первоначальным требованиям.
- Безопасность: крайне важно предотвратить злоумышленников, которые могут манипулировать системами ИИ и тем, как они работают.
- Валидность: убедитесь, что система ИИ поддерживает нормальное поведение, не противоречащее требованиям, определенным на этапе проектирования, даже если система работает в неблагоприятных условиях (например, во время кибератаки или при отказе одного из ее модулей).
- Управление: как обеспечить контроль человека над системой ИИ после того, как она начнет работать, например, для изменения требований.
- Надежность: надежность прогнозов, сделанных системами ИИ.
И не говоря об очевидном, но все, что создано с помощью ИИ, явно может быть взломано, что может привести к еще более серьезным последствиям.
Синхронизированный подход к обеспечению безопасности цепочки уничтожения в облаке
На самом деле, не так много людей действительно квалифицированы для работы тестировщиками на проникновение для фаззеров и других инструментов. Ну, по крайней мере, не самые лучшие. Ручное тестирование — это гораздо больше, чем просто использование классных хакерских инструментов и создание отчетов об уязвимостях. Отличные пен-тестеры обладают глубокими знаниями операционных систем, сетей, языков сценариев и многого другого. Они также стремятся изучать новые подходы и применять новый контент, который они изучают, на практике. Они сочетают ручную работу с автоматизированными инструментами и проводят итерации тестирования, просматривая промежуточные результаты тестирования для создания сложных атак, как это сделал бы киберпреступник.
Тем не менее, многие отдельные консультанты по безопасности и небольшие компании предлагают услуги по тестированию пера. Некоторые основывают свои услуги исключительно на использовании одного или нескольких хакерских инструментов и создают привлекательные отчеты с подробным описанием всех проблем, которые им удалось обнаружить. Как и в случае с моим старым студийным фотографом, здесь нет настоящего волшебства. Вместо этого их результаты основаны только на инструментах, которым они научились работать, а не на каких-либо специальных навыках, а это означает, что их клиенты могут реально автоматизировать тестирование и сэкономить время и деньги, выполняя его самостоятельно.
Я, конечно, не думаю, что облачные сервисы тестирования безопасности приложений сделают работу пен-тестеров ненужной, но я думаю, что они могут помочь прочистить сорняки и навести порядок в этой области. Я также считаю, что организации, полагающиеся на подход к безопасности приложений, основанный только на тестировании на проникновение, подвергают себя высокому риску потенциальной утечки данных. В целом, наилучший подход — проводить периодическое тестирование на проникновение и сочетать его с рутинным тестированием безопасности приложений, поскольку угрозы приложения могут быть выпущены быстро и развиваться очень внезапно.
Наконец, и я не могу не подчеркнуть этого в достаточной мере, какой бы тип тестирования ни проводила ваша организация, его необходимо сочетать с такими базовыми принципами, как обеспечение информационной безопасности в начале и на протяжении всего жизненного цикла разработки программного обеспечения, обучение пользователей и устранение угрозы номер один для каждого. предприятие: социальная инженерия.