bezopasnost-okhrana-truda-ekologiya-strakhovanie-opasnykh-obektov (дата обращения: 11.05.2012).
3. Правила безопасности в нефтяной и газовой промышленности, утверждены Госгортехнадзором России «14» декабря 1992 г.
ФАЗЗИНГ - СОВРЕМЕННАЯ ТЕХНОЛОГИЯ ПОИСКА УЯЗВИМОСТЕЙ В ВЕБ-ПРИЛОЖЕНИЯХ
© Полухин П.В.*
Воронежский государственный университет, г. Воронеж
В статье представлены результаты научного исследования сущности технологии фаззинга, проанализированы существующие этапы жизненного цикла, а также проведена оценка уязвимостей современных приложений, которые можно обнаруживать с помощью данной технологии.
В настоящее время все больше и больше компаний переключаются на разработку и поставку программ веб-сервисов, которые в отличие от традиционных программных продуктов устанавливаются на локальный компьютер. Веб-приложения работают непосредственно на компьютере владельца или у так называемой третьей стороны. Если в дело вовлечена третья сторона, то такую модель часто называют моделью ASP (application service provider - провайдер сервисов и приложений).
Веб-приложения обеспечивают преимущества и разработчикам программ, и конечным пользователям. Поставщики имеют возможность моментального обновления приложения, в том числе устранение проблем, связанных с безопасностью. У конечных пользователей нет необходимости скачивать и применять патчи и обновления, поскольку приложение находится на централизованном сервере. С точки зрения конечного пользователя, это означает также снижения количества проблем, связанных с поддержкой работоспособности самого приложения, всем этим занимается ASP. Исходя из вышеперечисленного ASP должен обеспечивать требуемый уровень безопасности.
Языки программирования и среды разработки, используемые для создания веб-приложений становятся более удобными для дальнейшего развития. В результате этого многие компании сейчас создают собственные веб-приложения для внутреннего использования, содействия бизнеса и делового общения с потенциальными покупателями [4]. Почти любая компания, независимо от ее размера и территориальной принадлежности может рассматриваться как разработчик программного обеспечения. Однако, несмотря на
* Аспирант кафедры Математических методов исследования операций.
то, что создать веб-приложение относительно просто, разработать безопасное веб-приложение довольно сложно. И если разработкой занималась компания, которая не в полной мере уделяет внимание вопросам безопасности, скорее всего приложение не подвергалось серьезному тестированию перед выпуском. В связи с этим возникает необходимость применения новых способов и методов поиска возможных уязвимостей, одни из таких методов является фаззинг.
Анализ теоретических и практических материалов [2, 3] показывает, что фаззинг веб-приложений может выявить уязвимости, как в самих приложениях, так и в любом из компонентов их инфраструктуры, включая веб-сервер и сервер баз данных, в которые встроено приложение. Веб-приложения могут относиться к разным типам приложений, но их можно подразделить на общие категории, которые обычно и распространяются через веб.
Рассмотрим эти категории и примеры уязвимостей в конкретных приложениях, которые могут быть обнаружены с помощью технологии фаззин-га [1]: веб почта (Microsoft Outlook Web Access Cross-Site Scripting Vulnerability); дискуссионные форумы (phpBB Group phpBB Arbitrary File Disclosure Vulnerability); вики (Tikiwikitiki-user_preferences Command Injection Vulnerability); блоги (WordPress Cookie cache_lastpostdate Valnerability Arbitrary PHP Code Execution); планирование ресурсов компании ERP (SAP Web Application Server sap - exit url Header HTTP Response Splitting); мониторинг сети (IpSwitchWhatsUp Professional 2005 (SP1) SQL Injection Vulnerability).
Подробное описание жизненного цикла развития фаззинга веб-приложения представлено нами на рис. 1. Раскроем сущность этапов жизненного цикла.
Рис. 1. Жизненный цикл Фаззинга веб-приложения
Первый этап - интерфейсы взаимодействия (Identifying interfaces). Дают представление об интерфейсах ввода / вывода приложения. Таким интерфейсом может быть сетевые сокеты состоящие из протоколов (TCP, UDP). Другой вариант - специально отформатированный файл, который зачитыва-
ется системой. Для реализации покрытия кода, данные интерфейсы должны быть идентифицированы до начала самого процесса фаззинга. Иногда некоторые интерфейсы могут быть неочевидными и их трудно определить. Например, большинство веб-браузеров кроме протокола HTTP, поддерживают FTP, RTSP, также как и большинство форматов изображений.
Второй этап - генерация входных данных (Input Generation). Является основным этапом фаззинга, поскольку именно от генерации входных данных зависят полученные фаззером результаты. Существует несколько методов генерации входных данных. Основной и самый простой способ - генерация случайных данных и отправка их через интерфейс в исследуемое приложение, однако реализация данного способа вряд ли принесет много существенных результатов. Другой метод основан на мутации входных данных -сначала генерируются валидные входные данные, а затем в них добавляться аномалии. Множество современных фаззеров позволяют автоматически анализировать входные и выходные данные за счет совпадения структуры. Данное поколение фаззеров не нуждаются в генерации валидных тестовых данных, в место того они уже сами понимают протокол обмена или формат входных данных, в следствии чего они сами могут генерировать тесты, основанные на собственным знаниях.
Третий этап - отправка входных данных в исследуемое приложение (Sending Inputs to the Target). После того как сами данные сформированы, их необходимо отправить в интерфейс, обеспечивающий взаимодействие с исследуемым приложением. Многие фаззеры оставляют данный шаг за пользователем, однако касается протоколов, фаззеры могут многократно подключаться к исследуемому серверу или прослушивать порт в ожидании подключение клиентской стороны.
Четвертый этап - мониторинг исследуемого приложения (Target Monitoring). После запуска фаззера необходимо постоянно осуществлять мониторинг исследуемого приложения на предмет его падения или возникновения исключительных ситуаций. Данный этап позволяет обнаружить именно то место или фрагмент кода который вызвал исключительную ситуацию. Большинство фаззеров ведут логи, в которых отслеживается каждый результат срабатывания тестов, а самые передовые устанавливаются на виртуальных машинах и позволяют сделать снимок того состояния системы при котором произошла данная ошибка или исключение.
Пятый этап - анализ исключений (Exception Analysis). Основывается на результатах, полученных в результате мониторинга, однако необходимо детально рассматривать каждую ошибку, по возможности группировать их или наоборот выделять уникальную уязвимость.
Шестой этап - составление отчета (Reporting). Он является заключительным этапом жизненного цикла фаззинга. Здесь накапливается вся полученная информация, включая фрагменты уязвимого кода, составляется биб-
лиотеки найденных уязвимостей, что необходимо для дальнейших исследований и поиска однотипных ошибок в приложения.
На рис. 2 нами рассмотрен один из механизмов реализации процесса фаззинга веб - приложения.
Г- 1 ЛТ F WTT/1.1 {чМт ¿г Ac-rrj-t-Етгтяэ: ГТТ: qup. 4*£1.аЛс iKWfe-UuiWi СОНКСCiCfl: M4p-Jkiitf* J
ВАЛИДНЫЙ запрос j
7Г7 ш/л*лАм?лМШя1лЗ*ШАОМилШ unp/i-i :+y. IUф/<{4 , itagt/itMi. •(• JUroaf^-EECodln]'! arjp- daELaba Oametlleni fSc*p-Aii« ■(♦H ВАЛИДНЫЙ ответ
АНОМАЛЬНЫЙ запрос j
su7
ra/i.i не ск
ant: WhJ_ CJ 1КН !йт
£*mr: KjAfBfaCacvni'S.l ILlan-i
Lut -ifcd!.; L*d i Vr-i. Б7 Иск ЗЫТ «t 44 116 j
atdUM'UDathi IM
CIEUKT J on i 1 r.-ct" iWHrTil -1>iIri UMt/bUd;
зп пштпикпппт vnvn.i
Ice^C: 1г.гн-''T!l • scw^rx-afcitBip,
№П|)(>Шй11ПГ1 Mfif. Зв£ LA'.-C Ac-nrp: - ¡Jtfiguw i rr.'uo
ОШИБОЧНЫЙ (
JccDpfc . ir.-Hjr 'T" - 1иач «icf. ■ t'a.-wJl l»J I JjHp.
•tomtit ten- S«p-ASl»t-
НЕПРАВИЛЬНЫЕ данные
НЕПРАВИЛЬНЫЙ!
НЕПРАВИЛЬНЫЕ данные
ПАДЕНИЕ
сгзр/1.1 «4 Mat гт-п-а
Ык? м, " ЖТ
Server: ttjwfcittvtr/i-i ILlf.i«j CesiairtLenftbi iM
ЁМММ: ТИ»: CBrt/ri»l: •ihasas-i-Los -1149-1
КПГП..1 1« Int-acmL S«n
Bam* Tw, CL 1W И-M-LVcr: il ftetmt-Length: -I
СММетЮТ: ClOM
-
-J
Рис. 2. Раскрытие сущности механизма фаззинга веб-приложения
Существуют следующие уязвимости веб-приложений доступные для выявления с помощью технологии фаззинга:
- отказ в обслуживании (Denial-of-service, DoS). DoS не дает нападающему прав доступа к объекту, но отсутствие доступа к самому ресурсу является серьезной угрозой;
- межсайтовый скриптинг (Cross-site scripting, XSS).Уязвимости, связанные с XSS, позволяют хакеру контролировать действия клиентов в веб-браузере;
- SQL инъекция. Среди уязвимостей веб-приложений SQL инъекция -это не только одна из преобладающих, но также одна из самых серьезных и прогрессивный реляционных СУБД. SQL инъекция может привести к полному контролю доступа над серверной системой;
- слабый контроль доступа. Возникает при наличии открытых файлов и каталогов на сервере, содержащих служебную информацию и которые не должны быть доступны пользователю;
- слабости в системе аутентификации. Возникает из-за слабого пароля в системе, а передача учетной записи или логина в открытом виде упрощает механизм реализации данной уязвимости;
- плохое управление сессиями. Если уникальные права доступа к для сессии передаются через cookie, то они должны быть достаточно случайны и такого размера, который сделал бы атаку методом грубой силы неэффективной. К тому же время действия cookie должно довольно быстро заканчиваться, чтобы обеспечить защиту от взлома путем замещения;
- переполнение буфера. Хотя такие атаки реже встречаются в веб приложениях, но целью фаззинга также являются веб-сервера, которые, как правило, написаны на языках программирования, подверженных к переполнению буфера;
- неверно примененные методы HTTP. В общем случае веб приложения поддерживают методы GET и POST. Неверное применение данных методов позволяет хакеру работать с данными на веб сервере или получать необходимую для последующих атак информацию;
- исполнение удаленных команд. Веб-серверы могут просто передавать введенные пользователем данные другим приложениям или самой операционной системе. Если это информация не фильтруется, то благодаря этому нападающий может получить доступ к командной строке;
- инъекция удаленного кода. Этот тип уязвимости опаснее всего для PHP - приложений. Плохое кодирование, позволяет внедриться в PHP как удаленно, так и локально;
- расщепление HTTP-запроса. Такая атака возможна в том случае, если пользователь может ввести последовательность CRLF в заголовки ответа, что позволяет завладеть ответом от сервера и может привести к большому числу атак, в том числе на прокси;
- подделка HTTP-запросов (Cross-Site Request Forgery, CSRF). От CSRF трудно защититься. При открытой сессии атакующий может заставить жертву перейти по какой либо ссылке. Например выполнить трансфер в интернет банке может только владелец счета, однако, если этот человек уже вошел и по неведению направляется по ссылке, которая ведет на туже форму на сайте банка, трансфер может пройти и без его ведома.
Все эти возможности технологии фаззинга по обнаружению современных уязвимостей еще раз доказывают ее значимость и приоритет в использовании. Компания Microsoft делает ставку на фаззинг, как на главное сред-
ство тестирования своих приложений на всем этапе разработки и жизненного цикла. Мы считаем, что основное развитие фаззинга веб-приложений в полной мере касается улучшения механизма обработки ошибок, повышения качества генерации мутированных входных данных. Это позволит повысить качество обнаружения уязвимостей, охватывая современные направления при сохранении общего подхода, который трактует сама технология фаззинга.
Список литературы:
1. Godefroid P. Automating Software Testing Using Program Analysis / P. Go-defroid, P. Halleux // IEEE SOFTWARE. - 2008. - № 3. - Р. 30-37.
2. Godefroid P. Automated whitebox fuzz testing / P. Godefroid, M. Levin // NDSS. - 2008. - 250 p.
3. Oehlert P. Violating Assumotions with Fuzzing / P. Oehlert // IEEE Security &Privace. - 2005. - № 2. - Р. 58-67.
4. Zalewski M. The Tangled Web. A Guide to Securing Modern Web Applications / M. Zalewski. - No starch Press, 2012. -200 p.
АНАЛИЗ ИНФОРМАЦИОННОЙ СИСТЕМЫ: «ЭЛЕКТРОННАЯ РЕГИСТРАТУРА»
© Полякова О.С.*
Институт космических и информационных технологий Сибирского федерального университета, г. Красноярск
Современные медучреждения обслуживают большое количество жителей. Многое зависит от работы не только врачей, но и технических подразделений медучреждения. Одним из таких важных участков в любом из них является регистратура. Она является примером оптимизации механизма оказания помощи населению.
Длинные очереди, направления от одного врача к другому, отсутствие информации - к сожалению, именно такие ассоциации вызывает у многих граждан слово «поликлиника». Сегодня, благодаря информационным технологиям и политике по переводу государственных услуг в электронный вид, появилась возможность изменить ситуацию.
Очередным примером успешного решения проблемы очередей стала модернизация системы здравоохранения, в ходе которой, в нынешнее время появилась «электронная регистратура» - возможность записи на прием к врачу через Интернет, доступная любому пользователю, зарегистрировав-
* Студент.