очир абушинов

Preview:

Citation preview

Очир Абушинов

Особенности тестирования

безопасности ПО

Содержание

Что такое тестирование безопасности и зачем оно нужно

Особенности

Стандарты

Типичные уязвимости

Методы

Сложности

Что такое тестирование безопасности?

Конфиденциальность

Целостность

Аутентификация

Авторизация

Доступность

Неотказуемость

Почему важно?

Информация и контроль доступа

Информация и контроль доступа

Стабильность системы

Информация и контроль доступа

Стабильность системы

Целостность системы

Информация и контроль доступа

Стабильность системы

Целостность системы

Экономическая эффективность

Где может быть нужно тестирование безопасности?

Веб-приложения

Приложения с важной коммерческой или персональной информацией

Платежные системы

Приложения, требующие целостности информации

Социальные приложения

Приложения с коммерческим лицензированием

Особенности тестирования безопасности ПО

Важность «негативного» тестирования

Думать как хакер

Качество тестирования безопасности ПО сложно измерить

Важность нефункциональных требований

Тестирование на основе рисков (Risk-based)

Уязвимости это такие же баги

Необходимость тестирования методом «белого» ящика

Стандарты для тестирования безопасности ПО

OSSTMM (http://www.isecom.org/osstmm/)

OSSTMM (http://www.isecom.org/osstmm/)ISACA (http://www.isaca.org)

OSSTMM (http://www.isecom.org/osstmm/)ISACA (http://www.isaca.org)

ISSAF (http://www.oissg.org/issaf)

OSSTMM (http://www.isecom.org/osstmm/)ISACA (http://www.isaca.org)

ISSAF (http://www.oissg.org/issaf)

NIST Guideline (http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf)

OSSTMM (http://www.isecom.org/osstmm/)ISACA (http://www.isaca.org)

ISSAF (http://www.oissg.org/issaf)

NIST Guideline (http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf)

OWASP Guide (http://www.owasp.org)

OSSTMM (http://www.isecom.org/osstmm/)ISACA (http://www.isaca.org)

ISSAF (http://www.oissg.org/issaf)

NIST Guideline (http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf)

OWASP Guide (http://www.owasp.org)

CHECK (http://cesg.gov.uk/find_a/check/index.cfm)

OSSTMM (http://www.isecom.org/osstmm/)ISACA (http://www.isaca.org)

ISSAF (http://www.oissg.org/issaf)

NIST Guideline (http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf)

OWASP Guide (http://www.owasp.org)

CHECK (http://cesg.gov.uk/find_a/check/index.cfm)

PROTOS (https://www.ee.oulu.fi/research/ouspg/Protos)

Типичные уязвимости

Неверная валидация входных данных

Неверная валидация входных данных

Внедрение параметров (XSS, CSRF)

Неверная валидация входных данных

Внедрение параметров (XSS, CSRF)

Переполнение буфера

Неверная валидация входных данных

Внедрение параметров (XSS, CSRF)

Переполнение буфера

Инъекции

Неверная валидация входных данных

Внедрение параметров (XSS, CSRF)

Переполнение буфера

Инъекции

Неверное завершение сессий

Неверная валидация входных данных

Внедрение параметров (XSS, CSRF)

Переполнение буфера

Инъекции

Неверное завершение сессий

Аутентификация или авторизация

Методы тестирования безопасности ПО

Анализ архитектуры и построение модели угроз и рисков

Угроза Вероятность (от 1 до 10)

Ущерб (от 1 до 10)

Подверженность (от 1 до 10)

Приоритет

Отказ в обслуживании (DDOS)

4 8 1 2

Вредоносный код

1 6 1 4

Инсайдеры 2 9 2 3

Физическое повреждение аппаратуры

1 9 1 5

Отказ БД 2 10 1 1

Потери при передаче данных

3 2 3 7

Сетевой взлом 1 9 1 6

Поиск уязвимостей в исходном коде

Ревью кода разработчиками

Анализ кода при помощи утилит статического и динамического анализа

Fuzz тестирование

Тестовые скрипты, генерирующие случайные данные

Open-source утилиты для фаззинга

Тестирование на проникновение

Веб-сканнеры(skipfish, wapiti, etc.)

Анализ сети, используя OpenVAS, nmap и другие утилиты

Ручное тестирование на проникновение

Тестирование, основанное на рисках (Risk-based)

Основано на матрице угроз и рисков

Тестирование «негативных» сценариев

Концентрация на том, что нельзя сделать

Думать, как злоумышленник

Нефункциональное тестирование

Нагрузочное тестирование

Стресс тестирование

Объемное тестирование

Тестирование масштабируемости

Юзабилити тестирование

Инструменты тестирования

Сканирование исходного кода (RATS, cppcheck, FindBugs)

Тестирование на проникновение (OpenVAS, Nmap, w3af)

Сканирование веб-сайтов (Nikto, Pixy, Acutenix)

Снифферы (NetCat, Wireshark)

Модифицированные нагрузочные тесты

Сложности в тестировании безопасности

Кроссплатформенное ПО

Приложение может вести себя по разному

Много конфигураций

Разное «железо»

Разные драйверы

Эмуляция аппатуры для защиты ПО

Уязвимости в используемом ПО

Требования к безопасности ПО

Приложение не должно взламываться

Приложение не должно «падать»

Доступ по сети должен быть безопасным

Как это протестировать?

Этапы тестирования безопасности

Анализ угроз

Анализ уявимостей

Матрица угроз и рисков

Определение критериев защищенности

Простые тесты

Анализ исходного кода

Сбор информации

Нагрузочные тесты

Тесты на проникновение

Внешняя экспертизаРешение проблем

Fuzz тестирование

Нефункциональное тестирование

Тестирование, основанное на рисках

Подготовка

Тестирование

Планирование Проектирование Разработка Внедрение

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Невозможно измерить качество тестирования безопасности

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Невозможно измерить качество тестирования безопасности

Не стоит думать, что функционального тестирования достаточно

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Невозможно измерить качество тестирования безопасности

Не стоит думать, что функционального тестирования достаточно

Можно и необходимо постоянно изучать новые технологии

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Невозможно измерить качество тестирования безопасности

Не стоит думать, что функционального тестирования достаточно

Можно и необходимо постоянно изучать новые технологии

Тестирование безопасности похоже на исследовательское

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Невозможно измерить качество тестирования безопасности

Не стоит думать, что функционального тестирования достаточно

Можно и необходимо постоянно изучать новые технологии

Тестирование безопасности похоже на исследовательское

Необходимо проводить экспертизу

Выводы

Тестирование безопасности - это необходимый этап для компаний,

которым важен безопасный “софт”

Невозможно измерить качество тестирования безопасности

Не стоит думать, что функционального тестирования достаточно

Можно и необходимо постоянно изучать новые технологии

Тестирование безопасности похоже на исследовательское

Необходимо проводить экспертизу

Особое внимание архитектуре и компонентам

Спасибо за вниманиеВопросы?

Очир Абушиновo.abushinov@wwpass.com

Recommended