Метод активной защиты от SQL-инъекций в веб-приложениях (тезисы)
Введение
На данный момент в среде Интернет ежедневно стартует множество новых веб-приложений. Веб-приложение подразумевает под собой клиент-серверное взаимодействие, в котором клиентом выступает браузер, а сервером — веб-сервер. Преимущество такого подхода в построении программных средств заключается в том, что клиенты не зависят от конкретной операционной системы пользователя. Основная логика и обработка информации происходит на сервере, клиенту предоставляется готовый результат, передаваемый по сети.
Современный рынок развития веб-приложений, скорость и качество их разработки показывает полное отсутствие единых стандартов построения безопасных веб-приложений, что неизбежно приводит к ошибкам в разработке программного обеспечения и влечет к появлению серьезных уязвимостей. По результатам исследования веб-приложений за 2008 г. международной экспертной организации Web Application Security Consortium были получены следующие данные. Наиболее распространенными уязвимостями в веб-приложениях признано межсайтовое выполнение сценариев и внедрение операндов SQL, а также различные виды утечки информации и расщепление HTTP-запроса. При использовании автоматических средств поиска уязвимостей в программных средствах была получена вероятность обнаружения критичной ошибки 49% в динамическом веб-приложении. При всестороннем экспертном анализе методом белого ящика полученная вероятность составляет 96%, что в среднем позволяет идентифицировать до 91 уязвимости высокой степени риска на одно веб-приложение, автоматизированное сканирование позволяет идентифицировать — только три уязвимости с высокой степенью риска. В статистику вошли данные по 12186 веб-приложений, в которых было обнаружено 97554 уязвимости различной степени критичности.
Метод анализа веб-приложений
В рамках этой статьи предлагается кратко рассмотреть метод предотвращения SQL-инъекций. Метод базируется на анализе исходных кодов защищаемого веб-приложения и построения профиля SQL запросов к базе данных в период клиент-серверного взаимодействия. Внедрение SQL-инъекции является одним из распространенных методов компрометирования программного обеспечения, работающего с базами данных. Большинство веб-приложений используют базу данных для структурирования и систематизирования данных с целью обеспечения их эффективного поиска и обработки. База данных является совокупностью взаимосвязанных данных совместно хранимых в одном или нескольких компьютерных файлах, предназначенных для удовлетворения информационных потребностей.
В предлагаемый метод предотвращения SQL-инъекций входит стадия анализа, сбора информации о защищаемом веб-приложении и механизм активной защиты приложения в режиме реального времени. Во время анализа веб-приложения исследуются исходные коды программного обеспечения, из которых выделяются все используемые SQL запросы к базе данных. Запросы классифицируются по трем категориям SELECT, INSERT, UPDATE и запоминаются программным средством защиты. Следующим этапом программное средство защиты обращается к базе данных с целью получения информации об используемых типах данных в полях таблиц. В результате всех действий программное средство защиты получает исходную информацию о всех используемых в веб-приложении SQL-запросах и типе данных, которые могут передаваться в этих запросах.

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

Таким образом, реализуется механизм фильтрации неблагонадежных данных и запросов к базе данных, запросов которые не присутствуют в оригинальном веб-приложении.
Заключение
В данной статье рассмотрен метод фильтрации поступающих в базу данных запросов. При использование этого метода защиты полностью исключается возможность появления SQL-инъекций в веб-приложениях.
На данном этапе разрабатывается программный модуль для подтверждения этого метода и анализа его эффективности использования в high-load веб-приложениях.

комментарии (29)