security tesint: sql injection
Embed Size (px)
DESCRIPTION
доклад с SQA Days 9 (Kazan)TRANSCRIPT

Security Testing: SQL Injection
Сергей Полаженко, SQALab

Тестирование безопасности

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

Уровни тестирования безопасности
• Нормативно-правовой• Организационный• Технический• Физический

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

Что такое SQL Injection

Что такое SQL Injection? (1/2)

Что такое SQL Injection? (2/2)

Почему SQL Injection (1/3)
Positive Technologies, 2009
SQL

Почему SQL Injection (2/3)
Positive Technologies, 2009
SQL

Почему SQL Injection (3/3)

Не обязательно web!

Как бороться?

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: обучение

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: дизайн приложения
• не хранить секреты в открытом виде
• принцип минимальных привилегий
• использовать параметрезированные запросы
• использовать хранимые процедуры
• сообщения об ошибках не должны содержать служебной информации

Способы борьбы: Фильтры данных

Способы борьбы: Application Firewall

Способы борьбы: Application Firewall
•

Способы борьбы: Application Firewall
• www.owasp.org/index.php/Web_Application_Firewall
• Open Source:
– AQTronix - WebKnight – Trustwave SpiderLabs - ModSecurity

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: code review
• Экспертиза исходных текстов, как метод тестирования безопасности и защищённости программных продуктов
• http://software-testing.ru/library/testing/security/109
• http://securitywiki.ru/PraktikaJekspertizaIsxodnyxTekstov?v=oqu

Способы борьбы: code review
• Patterns && Practices: Code Review
• http://msdn.microsoft.com/en-us/library/ff648637.aspx

Способы борьбы: code review
• Проверка входных данных• Не использовать динамический sql (использовать
хранимые процедуры и параметризированные запросы)
• Минимальные привилегии• Секретные данные (поток данных)

Способы борьбы: 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

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: input validation
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты
Проверяйте входные параметры

Способы борьбы: input validation
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты
Портрет типичного пользователя
Dr. User Evil

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы: Continues integration checks
• Microsoft FxCop• "CA2100: Review SQL queries for security
vulnerabilities“
• Microsoft Source Code Analyzer for SQL Injection
• Microsoft Code Analysis Tool for .Net (CAT.NET)

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Тестирование: метод «черного ящика»

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы
• Профилактика– Обучение– Дизайн приложения– Code review– Input validation– Continues integration checks
• Тестирование– Черным ящиком– Белым ящиком– Серым ящиком– Fuzzy– Автоматизированные инструменты

Способы борьбы
• http://sqlmap.sourceforge.net/• http://
www.owasp.org/index.php/Category:OWASP_SQLiX_Project
• Scrawlr (HP)• absinthe

Чтиво
• http://www.ptsecurity.ru/download/PT-devteev-Advanced-SQL-Injection.pdf
• https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
• http://msdn.microsoft.com/en-us/library/ff648637.aspx

Контакты
• www.securitywiki.ru • Polazhenko.moikrug.ru