![]() |
![]()
SQL-инъекции по-прежнему опасныВ 2007 году компания Hewlett-Packard приобрела фирму SPI Dynamics, специализировавшуюся на безопасности Web-приложений. Сооснователь SPI Dynamics Калеб Сима, уже тогда имевший репутацию эксперта в этой области, занял должность вице-президента HP и директора по технологиям отдела безопасности приложений HP Application Security Center. ![]()
Всего три месяца назад был пойман взломщик, совершивший крупнейшее в истории хищение персональных данных - 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 и целый ряд других технологий. К сожалению, далеко не все ошибки могут быть выявлены автоматически. Но, по крайней мере, поиск фрагментов, содержащих операторы ввода, которые затем могут быть просмотрены программистом, легко автоматизируется.
|
![]() |
![]() |
![]() |
![]() 16 октября 200915 октября 200914 октября 2009 13 октября 2009 12 октября 20099 октября 20098 октября 20097 октября 20096 октября 20095 октября 20092 октября 2009
![]() ![]() |