Главная > Uncategorized > Доклад на конференции РусКрипто’2011

Доклад на конференции РусКрипто’2011

В начале апреля, как и в прошлом году, буду участвовать в конференции РусКрипто. Опять с докладом на секции «Интернет и информационная безопасность». Тема — «Сравнение эффективности средств обнаружения уязвимостеи SQL injection«. Доклад является результатом совместной работы Александра Раздобарова, Карима Валиева и вашего покорного слуги.
Доклад посвящен задаче сравнения эффективности сканеров веб-приложений в части обнаружения уязвимостей класса SQL Injection. В докладе будет изложена методика построения тестового покрытия, описана процедура проведения тестирования и анализа результатов. Будут приведены результаты тестирования таких известных сканеров, как sqlMap, skipfish, wapiti и acunetix. Тезисы доклада следуют далее.

В последние годы появилось много открытых проектов сканеров веб-приложений, что явилось следствием повышенного внимания к веб-безопасности. Сканеры можно разделить на две категории –сканеры общего назначения и специализированные сканеры. К сканерам общего назначения относятся W3AF, Skipfish, Grendel-Scan, Arachni, Wapiti, Secubat. Специализированные сканеры предназначены для обнаружения уязвимостей определенного класса (или классов). Например, к сканерам, выявляющим уязвимости SQLi, можно отнести проекты sqlMap, hexjector, SQLiX. Закономерно, что у членов security-сообщества возникают логичные вопросы:

  1. правда ли, что специализированные средства эффективнее обнаруживают уязвимости своего класса, чем сканеры общего назначения?
  2. какова относительная эффективность открытых проектов в сравнении с коммерческими сканерами (IBM AppScan, Acunetix, HP WebInspect и т.п.)?
  3. есть ли недостатки (и какие) у самых эффективных автоматизированных средств?

В security-сообществе неоднократно [1-8] предпринимались попытки сравнительного анализа инструментальных средств. Почти все работы (за исключением [7]) были нацелены на сравнение сканеров общего назначения. Основной недостаток этих работ – отсутствие обоснования репрезентативности тестового набора, на котором проводится сравнение. Как следствие, лучший сканер по итогам одного исследования мог показать невысокие результаты в другом. К сожалению, перечисленные исследования не отвечают и на конкретные вопросы. Так, предлагаемые авторами методики не подходят для проведения тестов с целью определения лучшего сканера уязвимостей SQLi.
Целью нашей работы является разработка и обоснование методики сравнения эффективности сканеров в части обнаружения уязвимостей класса SQLi.
Примечание: межмодульные (second order) уязвимости в работе не рассматриваются.

Предлагаемое решение
Рассмотрим модель вычислений, которой следует типичное веб-приложение, работающее с СУБД. В работе такого приложения нас интересуют следующие шаги:

  1. получение пользовательских данных из запроса;
  2. обработка пользовательских данных на корректность;
  3. формирование SQL-запроса;
  4. получение результата SQL-запроса и/или обработка исключительных ситуаций;
  5. формирование HTTP-ответа.

Для каждого шага проводится классификация возможных способов его реализации в веб-приложении. Критерии классификации выбираются из соображений наличия специфики обнаружения уязвимости SQLi в образующихся классах. Например, логично, что уязвимость SQLi в запросе INSERT и в запросе SELECT обнаруживается пересекающимися, но не одинаковыми наборами тестовых сценариев. Таким образом, одним из критериев классификации для третьего шага будет тип используемого SQL-запроса.
Я не буду перечислить здесь все возможные классы для каждого шага, но приведу наиболее важные:

Примеры критериев классификации возможных реализаций шага «формирование SQL-запроса»
По версии СУБД: версии MySQL, версии MS SQL Server, версии PostgreSQL, версии Oracle и т.д. Конкретная версия СУБД попадает в новый класс, если используемый в ней диалект SQL позволяет применить специфические техники обнаружения уязвимости (например, вызывать временную задержку через встроенную функцию).
По типу запроса: SELECT, UPDATE, INSERT, DELETE и т.д.
По месту запроса, в котором используются пользовательские данные: строковое значение в логическом выражение в WHERE-клаузе; целое значение в логическом выражении в WHERE-клаузе; аргумент встроенной функции; значение в секции LIMIT и т.д. Классы определяются на основе документации к СУБД.

Примеры критериев классификации возможных реализаций шага «формирование HTTP-ответа»
По зависимости ответа от результата SQL-запроса: HTTP-ответ содержит данные, возвращаемые из СУБД; HTTP-ответ содержит признак успеха обращения к СУБД (можно наблюдать при реализации аутентификации); HTTP-ответ не зависит от результата запроса к СУБД (например, протоколирование заголовка User-Agent всех HTTP-запросов).
По детерминированности HTTP-ответа: полностью детерминированный (при одних и тех же входных данных возвращается одинаковые тела HTTP-ответов); детерминированная структура (при одних и тех же входных данных может возвращаться, например, различный текст внутри тегов); недетерминированная структура (такое может наблюдаться, например, при использовании рекламы).

Использование классификации
Результирующий тестовый набор состоит из всех возможных комбинаций вариантов реализации каждого шага. Прогон инструментального средства на таком тестовом наборе позволяет оценить его возможности в отношении всех комбинации условий, в которых уязвимости SQLi могут проявляться в веб-приложениях. Ложные срабатывания тестируемых средств проверяются с помощью тех тестов из тестового набора, которые были сгенерированы с безошибочным вариантом реализации второго шага (т.е. с полностью правильной фильтрацией входных данных).

Самое интересно — результаты прогона инструментальных средств и интерпретация результатов — в самом докладе на конференции. Встретимся там!

Кто едет?

Ссылки:
1. Andreas Wiegenstein, Frederik Weidemann, Dr. Markus Schumacher, Sebastian Schinzel. Web Application Vulnerability Scanners – a Benchmark. Октябрь 2006.
2. Larry Suto. Analyzing the Effectiveness and Coverage of Web Application Security Scanners. Октябрь 2007.
3. Anantasec. Web Application Scanners Comparison. Январь 2007.
4. Larry Suto. Analyzing the Accuracy and Time Costs of Web Application Security Scanners. Февраль 2010.
5. Jason Bau, Elie Bursztein, Divij Gupta, John Mitchell. State of the Art: Automated Black-Box Web Application Vulnerability Testing. Май 2010.
6. Adam Doupe, Marco Cova, and Giovanni Vigna. Why Johnny Can’t Pentest: An Analysis of Black-box Web Vulnerability Scanners. Июль 2010.
7. Shay Chen. Web Application Scanners Accuracy Assessment. Декабрь 2010.
8. OWASP SQLiBench Project.

Реклама
  1. 16.03.2011 в 23:06

    Было бы интересно посмотреть на результаты w3af, может ещё есть время его туда включить? Готов помочь в этом. И да, на конфе скорее всего буду =)

    • 17.03.2011 в 05:40

      >> Было бы интересно посмотреть на результаты w3af, может ещё есть время его туда включить?

      W3AF от нас никуда не денется :) Просто идея нашей среды — обеспечить автоматизированные прогоны и сбор статистики. А для этого для каждого средства нужно написать обертку, которая будет его запускать, отслеживать работы и потом обрабатывать результаты. Это мы не успеем до конфы, скорее всего.

      Вообще, наша итоговая цель — получить не цифирки в табличке, а предоставить разработчикам генератор тестов, на которых они смогут оценивать свои средства. Если хочешь попробовать нашу альфа-версию — пиши на почту, вышлю. Полученный тобой итоговый отчет могу по твоему желанию добавить в презентацию :)

      >> И да, на конфе скорее всего буду
      Это есть гуд!

  2. 17.03.2011 в 00:14

    Определенно поеду. Повезу доклад (http://artem.ufoctf.ru/?p=509). Про SQL-сканеры послушаю. Автор найдет время показать небольшой мастер-класс по работе с вышеописанными тулзами?

    • 17.03.2011 в 05:46

      >> Определенно поеду.

      Прекрасно! Поздравляю.

      >> Автор найдет время показать небольшой мастер-класс по работе с вышеописанными тулзами?

      Без проблем.

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: