SQL-инъекции по-прежнему опасны




Web-приложения, работающие годами, уязвимы к давно описанным угрозам

13:44 12.10.2009   |   1188 |  Александр Яковлев |



Калеб Сима напоминает о необходимости проверять входные данные В 2007 году компания Hewlett-Packard приобрела фирму SPI Dynamics, специализировавшуюся на безопасности Web-приложений. Сооснователь SPI Dynamics Калеб Сима, уже тогда имевший репутацию эксперта в этой области, занял должность вице-президента HP и директора по технологиям отдела безопасности приложений HP Application Security Center. Выступления энергичного и обаятельного Симы, в которых он как семечки раскалывает парольную защиту некоторых Web-сайтов, всегда пользуются большим успехом у аудитории, но достойно внимания, что за несколько лет некоторые предметы этих выступлений остаются неизменными. Механизм проверки сайта на уязвимость к SQL-инъекции, например, был подробно описан Симой в статье Locking the Door Behind You: Hacker Protection for Your Web Applications в 2005 году, однако и на форуме "Программные миры HP 2009" демонстрация подобного и других взломов вызвала живой интерес и аплодисменты (см. "Программные темы HP", Computerworld Россия, 2009, № 30). Означает ли это, что хорошо известная угроза остается по-прежнему актуальной, в частности потому, что многие компании продолжают использовать приложения, написанные несколько лет назад? Сима свидетельствует, что дело обстоит именно так. Впрочем, начать с SQL-инъекции в этот раз он решил в основном потому, что на этом примере очень легко показать людям, не являющимся экспертами в области безопасности, угрозы и риски Web-уязвимостей.

"Всего три месяца назад был пойман взломщик, совершивший крупнейшее в истории хищение персональных данных — 130 млн реквизитов кредитных карт, используя именно эту уязвимость, SQL-инъекцию", — подтвердил Сима сохраняющуюся актуальность угрозы в беседе с обозревателем Computerworld. "Это позор, что даже спустя столько времени обсуждений проблема продолжает существовать", — добавил он.

Опасность SQL-инъекции возникает тогда, когда параметр, отсылаемый серверному приложению в запросе GET протокола HTTP (куда он попадает из гиперссылки или строки браузера), напрямую передается в систему управления базой данных. Например, если к адресу www.site.com/script.php?text=1 после единицы добавить апостроф (признак начала и конца текстовой константы), а серверное приложение не проверяет корректность параметра, то при определенных настройках сервера пользователю может быть выдано сообщение СУБД об ошибке. В этом случае можно добавить более сложное выражение, включая разного рода функции преобразования типов. Сервер базы данных, отвечая на ввод, может выдавать названия таблиц, строк, выполнять разные команды, а полная информация о содержимом таблиц может быть получена с помощью запросов, предполагающих ответ "истина" или "ложь".

На форуме Сима продемонстрировал работу приложения, которое, используя описанную уязвимость, быстро выгружает с сервера содержимое всей базы данных. "Можно продавать этот инструмент как средство репликации базы данных", — пошутил он и заметил, что если взаимодействие с сайтом осуществляется по защищенному протоколу HTTPS, то это лишь затруднит обнаружение атаки.

Примечательно, что в описании протокола HTTP метод GET определен как "безопасный", так как предполагается, что он не должен изменять состояние сервера. Однако этим правилом сплошь и рядом пренебрегают: из-за простоты соблазн использования GET как универсального метода слишком велик. Но, даже если соблюдать это правило, вышеописанные опасности все равно остаются в силе.

Сима советует придерживаться очень простого принципа: "Говорите вашим разработчикам, чтобы они всегда выполняли надлежащую проверку входных данных. Если они будут следовать этому правилу, то без каких-либо инструментальных средств или технологий, без специальных знаний в области безопасности вам удастся избежать до 80% уязвимостей в Web-приложениях".

Указанные уязвимости инвариантны по отношению к языку, на котором написано приложение, хотя, как отметил Сима, в Microsoft, например, многое сделали, чтобы повысить защищенность приложений, разрабатываемых на .Net. Системы разработки на Java также имеют ряд библиотек со средствами защиты, однако анализ кода — исключительно сложная задача, подчеркнул вице-президент HP.

HP развивает целый набор полученных с покупкой SPI Dynamics инструментов для диагностики уязвимостей Web-приложений. Например, HP Assessment Management Platform позволяет распространить программу обеспечения безопасности Web-приложений на весь цикл их разработки и поставить ее под контроль руководителей, не являющихся экспертами в области безопасности. А программа HP WebInspect обеспечивает анализ сложных Web-приложений на целый ряд уязвимостей, включая SQL-инъекцию, переполнение буфера, передачу кода через формы и т. д., и поддерживает AJAX, Flash, SOAP и целый ряд других технологий. К сожалению, далеко не все ошибки могут быть выявлены автоматически. Но, по крайней мере, поиск фрагментов, содержащих операторы ввода, которые затем могут быть просмотрены программистом, легко автоматизируется.


Теги: