View
1.146
Download
3
Category
Preview:
DESCRIPTION
Citation preview
Fuzzing: ключевая концепция обеспечения безопасности
проекта.
Комлев Александр, Rambler QA
Тематический блог - fuzzing.ru
Что такое Fuzzing?• Определение термина
Fuzzing (Фаззинг) – методология обнаружения ошибок в программном обеспечении путем передачи непредвиденных входных данных и мониторинга исключительных ситуаций их обработки.
• Происхождение терминаПервое упоминание – исследовательские проекты Университета Висконсина (University of Wisconsin-Madison).Математический термин (теория граничных значений) адаптированный для описания методологии тестирования.
Краткая история• Первые разработки
Бартон Миллер (Barton Miller) – «отец» фаззинга. Простейшие фаззинг-тесты
UNIX-приложений - 1989 г.
• Второе рождениеPROTOS test suite – Университет Оулу (Финляндия) – 1999 г.
• ВосхождениеК проекту PROTOS в 2002 году присоединяется Microsoft, в 2003 члены команды проекта основали Codenomicon.Появляются первые универсальные и специфические модули (FileFuzz, SPIKE, COMRaider и т.п.)Процесс постепенно встает на коммерческие рельсы.
Типы предметной области.• Сетевые протоколы• Переменные окружения• Аргументы командной строки• Манипуляции с файлами и форматами файлов• Web-браузеры• Web-приложения и web-сервера.• Операции с памятью
Категории моделей.• Мутация
Изменение существующих образцов данных (корректных) для создания тестовых случаев.
• Генерация Создание случайных данных на основе целевой модели, по разработанным критериям.
Классификация проблем.• 6 групп уязвимостей• 26 типов уязвимостей
По данным Web Application Security Consortium. Данная классификация считается нормой, но она далека от идеала и вопрос классификации не закрывает.
Как охватить все?
• Необходимо выявить источники угрозы.
• Необходимо логически разделить источники.
Объекты угрозы.• Серверное ПО и системное обеспечение
- Web-cервера- Настройки ОС- Настройки серверного комплекса
• ПО реализующее функциональность- Поддерживаемые HTTP-методы- Web-формы (GET, POST)- HTTP-заголовки- Cookies (является частью предыдущего, но требует отдельного выделения)
Как подойти к процессу?• Анализ и определение ожидаемых типов
Многие типы уязвимостей являются зависимыми от используемых технологий и модулей.
• Сбор и анализ источников входных данных проектаНеобходимо выделить источники входных данных, которые могут реально повлиять на безопасность проекта.
• Творческий поиск (только он дает результат)
• Чтение логов (надо пользоваться преимуществами)
• Автоматизация базовых проверок.Прекрасно помогает при контроле ПО > 500 серверов, проверки настроек ОС и web-серверов легко и эффективно автоматизируются.
Кто?• QA!
Задачи, которые встают перед нами, обязаны решать сотрудники QA (по крайней мере при текущем положении дел), но в рамках данного подразделения требуется выделить отдельную группу, которая будет обладать соответствующими полномочиями.
• Где взять специалистов? Кому поручить?Специалистов в России фактически нет! Их надо искать и воспитывать. Кадровые агентства не помогут.
Recommended