Upload
sergey-polazhenko
View
987
Download
2
Embed Size (px)
DESCRIPTION
доклад с SQA Days 9 (Kazan)
Citation preview
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