security testing - polazhenko sergey

72
ТЕСТИРОВАНИЕ БЕЗОПАСНОСТИ Полаженко Сергей, ООО «Лаборатория тестирования» [email protected]

Upload: qa-club-minsk

Post on 22-Nov-2014

3.324 views

Category:

Documents


0 download

DESCRIPTION

Встреча QA Club Minsk, посвященная тестированию безопасности и защищённости.

TRANSCRIPT

Page 1: Security Testing - Polazhenko Sergey

ТЕСТИРОВАНИЕ БЕЗОПАСНОСТИ

Полаженко Сергей, ООО «Лаборатория тестирования»

[email protected]

Page 2: Security Testing - Polazhenko Sergey

ЧТО ТАКОЕ БЕЗОПАСНОСТЬПРОГРАММНОГО ПРОДУКТА (ПП)?

Безопасность ПП -

(safety) – способность ПП достигать приемлемого уровня риска для здоровья людей, их бизнеса, ПО, имущества или окружающей среды при данном способе (контексте) применения.

ISO/IEC 9126 «Software engineering – Product quality»

Page 3: Security Testing - Polazhenko Sergey

ЧТО ТАКОЕ ЗАЩИЩЁННОСТЬ ПП?

Защищённость ПП - (security) –

способность ПП защищать информацию и данные так, чтобы неавторизованные субъекты или процессы не смогли читать или модифицировать (удалять) их, а авторизованным пользователям и процессам не было отказано в доступе к ним. Требование также относится и к данным, которые находятся в процессе пересылки.

ISO/IEC 9126 «Software engineering – Product quality»

Page 4: Security Testing - Polazhenko Sergey

ЧТО ТАКОЕ ТЕСТИРОВАНИЕ БЕЗОПАСНОСТИ И ЗАЩИЩЁННОСТИ (ТБЗ) ПП?

Метод оценки КАЧЕСТВА и ПОЛНОТЫ реализации требований по БЕЗОПАСНОСТИ и ЗАЩИЩЁННОСТИ ПП

Page 5: Security Testing - Polazhenko Sergey

СТРУКТУРА КАЧЕСТВА ПП

• Внешние атрибуты качества ПО

• Внутренние атрибуты качества ПО

• Качество в использовании

ISO/IEC 9126 «Software engineering – Product quality»

ISO/ IEC 14598 «Software engineering — Product evaluation»

Page 6: Security Testing - Polazhenko Sergey

СТРУКТУРА КАЧЕСТВА ПП

ISO/IEC 9126 «Software engineering – Product quality»

ISO/ IEC 14598 «Software engineering — Product evaluation»

Page 7: Security Testing - Polazhenko Sergey

СТРУКТУРА КАЧЕСТВА ПП

ISO/IEC 9126 «Software engineering – Product quality»

ISO/ IEC 14598 «Software engineering — Product evaluation»

Защищённость – характеристика функциональной пригодности (внутреннее и внешнее качество)

Безопасность– характеристика качества в использовании

Page 8: Security Testing - Polazhenko Sergey

ОТЛИЧИЕ ФУНКЦИОНАЛЬНОГО ТЕСТИРОВАНИЯ ОТ ТБЗ

Доступ к страницам сайта должен осуществляться

ТОЛЬКО авторизованными пользователями сайт

НЕ ДОЛЖНА существовать возможность получить

доступ к страницам сайта НЕ АВТОРИЗОВАННЫМИ пользователями сайт

Page 9: Security Testing - Polazhenko Sergey

СХОДСТВО ТБЗ И НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

Качественная характеристика

Интегральный характер

НО!

Нагрузочное касается основного функционала

ТБЗ более системно!

ТБЗ часто имеет неявные требования

Page 10: Security Testing - Polazhenko Sergey

ПРИМЕР НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

Сервис должен выдерживать ответ за 10 и менее секунд при нагрузке до 1000 одновременно работающих пользователей.

Пользователи работают в рамках определённого WORKFLOW!

Page 11: Security Testing - Polazhenko Sergey

ПРИМЕР ТБЗ

Пользователь можно атаковать:1. Через страницы сайта2. Через адресную строку браузера

(sql, xss injections, …)3. Перехватывать и

модифицировать трафик между клиентом и сервером

4. Подменять внешние сервисы, на которые ссылается наш сайт

5. …

Page 12: Security Testing - Polazhenko Sergey

ОСНОВНАЯ ПРОБЛЕМА БЕЗОПАСНОСТИ

Page 13: Security Testing - Polazhenko Sergey

ЗАИНТЕРЕСОВАННЫЕ ЛИЦА

Кто приобретает или теряет деньги?

Page 14: Security Testing - Polazhenko Sergey

АКТИВЫ

Что и сколько стоит денег?

Page 15: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) - NOTEPAD

Page 16: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) - NOTEPAD

Данные пользователя

Page 17: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – MS WORD

Page 18: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – MS WORD

1. Данные пользователя2. Активация продукта3. Репутация производителя4. Исходные тексты ПП5. Интеллектуальная

собственность (алгоритмы, дизайн и т.п.)

Page 19: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – GMAIL.COM

Page 20: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – GMAIL.COM

1. Логины пользователя(ей)2. Переписка и др. данные

пользователя(ей)3. Доступность сервиса4. Аутентичность сервиса5. Платные функции6. Репутация производителя7. Исходные тексты ПП8. Интеллектуальная собственность

(алгоритмы, дизайн и т.п.)

Page 21: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – KM.RU, ENCARTA

Page 22: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – KM.RU, ENCARTA

1. Доступность сервиса2. Репутация

производителя3. Аутентичность статей4. Интеллектуальная

собственность (графика, тексты статей)

Page 23: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – WIKIPEDIA

Page 24: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – WIKIPEDIA

1. Доступность сервиса2. Аутентичность

статей3. Аутентичность

сервиса

Page 25: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – ONLINE POKER (HTML5)

Page 26: Security Testing - Polazhenko Sergey

АКТИВЫ (ПЗ) – ONLINE POKER (HTML5)

1. Логины пользователя(ей)2. Данные пользователей3. Доступность сервиса4. Аутентичность сервиса5. Платные функции6. Репутация производителя7. Исходные тексты ПП8. Интеллектуальная

собственность (алгоритмы, дизайн и т.п.)

Page 27: Security Testing - Polazhenko Sergey

УЩЕРБ

Материальные и нематериальные потери в свези с действиями злоумышленника

Page 28: Security Testing - Polazhenko Sergey

УЯЗВИМОСТЬ

Недостаток системы защиты, могущий привести к тому или иному ущербу

Открытое окно

Page 29: Security Testing - Polazhenko Sergey

РИСК

Вариант реализации уязвимости

Злоумышленник влезет в «открытое окно»

Page 30: Security Testing - Polazhenko Sergey

БЕЗОПАСНОСТЬ ДАННЫХ И СЕРВИСОВ!

ЦелостностьДоступностьКонфиденциальность(Аутентичность)

Page 31: Security Testing - Polazhenko Sergey

УГРОЗА

потенциальная причина нежелательного инцидента, который может приводить к нанесению вреда системе или организации.

Кража данных (нарушение конфиденциальность данных)

ГОСТ Р 51897–2002 «Менеджмент риска. Термины и определения»

Page 32: Security Testing - Polazhenko Sergey

УРОВНИ БЕЗОПАСНОСТИ

1. Нормативно-правовой2. Организационный3. Технический4. Физический

Page 33: Security Testing - Polazhenko Sergey

АБСОЛЮТНАЯ ЗАЩИЩЁННОСТЬ

1. Не возможна

2. Безопасность программных систем не может быть обеспечена программными средствами

Page 34: Security Testing - Polazhenko Sergey

МОДЕЛЬ ЗЛОУМЫШЛЕННИКА

1. Внешний пользователь2. Внутренний пользователь3. Сотрудники компании-

разработчика

Page 35: Security Testing - Polazhenko Sergey

КАТЕГОРИИ СЕКРЕТНОСТИ ДАННЫХ

1. Публичная информация2. Служебная информация3. Служебная тайна4. Государственная тайна

Page 36: Security Testing - Polazhenko Sergey

УРОВНИ ТЕСТИРОВАНИЯ

EAL1 … EAL7

EAL1 (функциональное тестирование)…EAL7 (формальная верификация проекта и тестирование)

ISO/IEC 15408 “Common criteria”

Page 37: Security Testing - Polazhenko Sergey

МОДЕЛЬ ЗЛОУМЫШЛЕННИКА (ВНЕШНИЕ ПОЛЬЗОВАТЕЛИ)

1. Неквалифицированный пользователь

2. Квалифицированный пользователь

3. Высококвалифицированный хакер

4. Преступная группировка5. Спецслужбы

Page 38: Security Testing - Polazhenko Sergey

ТЕСТИРОВАНИЕ1. Теоретическая задача -

протестировать весь функционал (все классы эквивалентности)

2. Практическая (экономическая) задача – в заданные сроки, при имеющихся ресурсах обеспечить должное качество

Page 39: Security Testing - Polazhenko Sergey

USABILITY & SECURITY TESTING

Высокий уровень безопасности ~ низкое usability

Аппаратный ключВысокие требования к качеству пароля

Автологин & ввод пароляWebmoney & Яндекс.Деньги

Page 40: Security Testing - Polazhenko Sergey

MARKETING & SECURITY

Page 41: Security Testing - Polazhenko Sergey

MARKETING & SECURITY

Microsoft выпускает на массовом рынке:• Альфа-версии продуктов• Бета-версии продуктов• Релизы

Сначала захват рынка, а потом усиление безопасности

Page 42: Security Testing - Polazhenko Sergey

MARKETING & SECURITY

MS Office 2010:• Стоимость разработки 10М$• Стоимость единицы 10$• Число продаж 1M• Число инсталляций 5М

Page 43: Security Testing - Polazhenko Sergey

MARKETING & SECURITYMS Office 2012а:• Стоимость защиты 100К• Стоимость единицы 15$• Стоимость upgrade 5$• 60% старых пользователей• +20% новых• Инсталляций в мире: 7М

• 3М + 15М = 18М

Page 44: Security Testing - Polazhenko Sergey

MARKETING & SECURITYMS Office 2012b + аппаратные ключи:• Стоимость защиты 1М• Стоимость единицы 15$• Стоимость upgrade 5$• 50% старых пользователей• +20% новых• Инсталляций в мире – 5,5М

• 2,5М + 15М = 17,5М

Page 45: Security Testing - Polazhenko Sergey

MARKETING & SECURITYMS Office 2012с:• Стоимость защиты 10К• Стоимость единицы 15$• Стоимость upgrade 5$• 60% старых пользователей• +30% новых• Инсталляций в мире – 8М

• 3М + 30М = 33М

Page 46: Security Testing - Polazhenko Sergey

MARKETING & SECURITYMS Office 360:• Стоимость разработки 50М• Стоимость единицы 15$• Стоимость upgrade 5$• 60% старых пользователей• +60% новых• Инсталляций в мире – 1,2М

• 3М + 60М = 63М

Page 47: Security Testing - Polazhenko Sergey

КАК БОРОТЬСЯ?

Page 48: Security Testing - Polazhenko Sergey

ЭТАПЫ ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ

ЖИЗНЕННЫЙ ЦИКЛ ТБЗ

Page 49: Security Testing - Polazhenko Sergey

ОЦЕНКА РИСКОВ (COBIT, RISKWATCH…)

Risk = Probability * Cost

R = (D1^2 + R^2 + E^2 + A^2 + D2^2) / 1024

DREAD

• Damage potential (потенциальный ущерб). • Reproducibility (повторяемость). • Exploitability (простота организации атаки). • Affected users (затронутые пользователи). • Discoverability (простота обнаружения).

D,R,E,A,D = [1-10]

Page 50: Security Testing - Polazhenko Sergey

ОЦЕНКА РИСКОВ (DREAD)

R = (D1^2 + R^2 + E^2 + A^2 + D2^2) / 1024

• Damage potential (потенциальный ущерб). • Reproducibility (повторяемость). • Exploitability (простота организации атаки). • Affected users (затронутые пользователи). • Discoverability (простота обнаружения).

D,R,E,A,D = [1-10]

Page 51: Security Testing - Polazhenko Sergey

ДЕРЕВЬЯ АТАК

Page 52: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

Профилактика• Обучение• Дизайн приложения• Code review• Input validation• Continues integration checks

Тестирование• Черным ящиком• Белым ящиком• Серым ящиком• Fuzzy• Автоматизированные инструменты

Page 53: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 54: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: ОБУЧЕНИЕ

Page 55: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 56: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: ДИЗАЙН ПРИЛОЖЕНИЯ

• Guidelines• Check lists• Best practices

Page 57: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: ДИЗАЙН ПРИЛОЖЕНИЯ

не хранить секреты в открытом виде

принцип минимальных привилегий

использовать параметрезированные запросы

использовать хранимые процедуры

сообщения об ошибках не должны содержать служебной информации

Page 58: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 59: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: CODE REVIEW

Экспертиза исходных текстов, как метод тестирования безопасности и защищённости программных продуктов

http://software-testing.ru/library/testing/security/109

http://securitywiki.ru/PraktikaJekspertizaIsxodnyxTekstov?v=oqu

Page 60: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: CODE REVIEW

Patterns && Practices: Code Review

http://msdn.microsoft.com/en-us/library/ff648637.aspx

Page 61: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: CODE REVIEW

Java EE – использовать PreparedStatement() .NET – использовать параметризованные запросы при помощи SqlCommand() or OleDbCommand() PHP – использовать PDO с строго типизированными парамтризованными запросами (использование bindParam()) SQLite – использовать sqlite3_prepare() и т.п.

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Page 62: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 63: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: INPUT VALIDATION

ПрофилактикаОбучение

Дизайн приложенияCode review

Input validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящиком

FuzzyАвтоматизированные инструментыПроверяйте входные

параметры

Page 64: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ: INPUT VALIDATION

ПрофилактикаОбучение

Дизайн приложенияCode review

Input validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящиком

FuzzyАвтоматизированные инструменты

Портрет типичного пользователя

Dr. User Evil

Page 65: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 66: Security Testing - Polazhenko Sergey

Способы борьбы: Continues integration checks

Microsoft FxCop"CA2100: Review SQL queries for security vulnerabilities“

Microsoft Source Code Analyzer for SQL InjectionMicrosoft Code Analysis Tool for .Net (CAT.NET)

Page 67: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 68: Security Testing - Polazhenko Sergey

ТЕСТИРОВАНИЕ: МЕТОД «ЧЕРНОГО ЯЩИКА»

Page 69: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 70: Security Testing - Polazhenko Sergey

СПОСОБЫ БОРЬБЫ

ПрофилактикаОбучениеДизайн приложенияCode reviewInput validationContinues integration checks

ТестированиеЧерным ящикомБелым ящикомСерым ящикомFuzzyАвтоматизированные инструменты

Page 72: Security Testing - Polazhenko Sergey

КОНТАКТЫ

[email protected]

www.securitywiki.ru Polazhenko.moikrug.ru