В последние годы крупные организации все активнее используют разнообразные веб-приложения — официальные сайты компаний и системы управления ресурсами предприятий (ERP), электронные торговые площадки, системы дистанционного банковского обслуживания, порталы государственных услуг. Корпоративные приложения на основе специализированного клиентского ПО все чаще заменяются веб-версиями и облачными сервисами. Поэтому неудивительно, что именно уязвимости веб-приложений становятся одним из основных векторов атак на корпоративные информационные системы. В данной статье представлена статистика по наиболее распространенным уязвимостям, собранная экспертами Positive Technologies в процессе работ по анализу защищенности веб-приложений в 2014 году.
Источники и методика
В общей сложности за год наши специалисты проанализировали порядка 300 веб-приложений. Из них выделено 40 систем, для которых проводился углубленный анализ с наиболее полным покрытием проверок. В статистику вошли только данные о внешних веб-приложениях, доступных из глобальной сети Интернет. Оценка защищенности проводилась методами черного, серого и белого ящика с использованием вспомогательных автоматизированных средств. Обнаруженные уязвимости классифицировались согласно соответствующим угрозам по системе WASC TC v. 2, степень риска уязвимостей оценивалась по CVSS v. 2. В статистику вошли только уязвимости, связанные с ошибками в коде и конфигурации веб-приложений.
Исследуемые веб-приложения принадлежали компаниям, представляющим различные отрасли: электронная коммерция (30%), финансы и банки (22%), промышленность (17%), информационные технологии (15%) и телекоммуникации (13%); также в исследовании участвовало одно государственное учреждение.
Большинство веб-приложений, вошедших в выборку, разработаны на базе PHP (58%) и ASP.NET (25%). Наиболее распространенным веб-сервером в исследовании этого года стал Nginx (37% веб-приложений), за ним идут Apache (26%) и Microsoft IIS (24%). Большинство ресурсов представляли собой продуктивные системы (85%), однако исследовались также и тестовые площадки, находящиеся в процессе разработки или приемки в эксплуатацию.
Общие результаты
Все 40 исследованных веб-приложений содержат те или иные уязвимости, общим числом 1194. При этом 68% систем содержат уязвимости высокой степени риска. Данный показатель выше прошлогоднего (62%). Кроме того, в 2013 году в среднем на каждое веб-приложение приходилось 15,6 уязвимостей, а в 2014 году это число возросло почти в два раза — до 29,9. Большинство выявленных уязвимостей (89%) вызваны ошибками в программном коде, и лишь 11% недостатков связаны с некорректной конфигурацией веб-приложений.
Доли уязвимых сайтов в зависимости от степени риска уязвимостей
В 2014 году наибольшее распространение (73% систем) получила уязвимость низкого уровня риска «Идентификация программного обеспечения» (Fingerprinting). Второе место (70%) занимает наиболее распространенная в 2013 году уязвимость «Межсайтовое выполнение сценариев» (Cross-Site Scripting, XSS). В результате эксплуатации данной ошибки в коде злоумышленник может организовать атаку на пользователей веб-приложения, например, с целью получения доступа в личный кабинет.
Более половины веб-сайтов содержат уязвимости, связанные с использованием предсказуемых значений идентификаторов пользователей и сессий (Credential/Session Prediction). Критически опасная уязвимость «Внедрение операторов SQL» (SQL Injection) поднялась с 6-го места на 4-е, теперь она выявляется почти в половине веб-приложений (48%). Эксплуатация этой уязвимости может привести к получению несанкционированного доступа к важной информации, хранящейся в базах данных приложений; кроме того, зачастую возможно развитие атаки вплоть до получения полного контроля над сервером.
Уязвимости по средствам разработки
Как и в прошлом году, наиболее уязвимыми оказались приложения на PHP: 81% систем, написанных на этом языке, содержат критически опасные уязвимости (в прошлом году было 76%). Зато для ресурсов на основе ASP.NET этот показатель уменьшился с 55 до 44%. Каждое веб-приложение на PHP в среднем содержит 11 критически опасных уязвимостей. Для ASP.NET данный показатель составил 8,4, но в данном случае на статистику сильно повлияла одна система, содержавшая 60 уязвимостей высокой степени риска: в остальных приложениях на основе ASP.NET среднее число уязвимостей составило лишь 2.
Также можно отметить, что доля ресурсов на PHP, подверженных уязвимости «Межсайтовое выполнение сценариев», значительно выше (95%), чем соответствующая доля ресурсов на ASP.NET (44%). Это может быть связано с тем, что в ASP.NET существуют встроенные базовые механизмы защиты от атак данного типа (Request Validation).
Наиболее распространенные уязвимости (по средствам разработки)
Уязвимости по серверам
86% исследованных веб-приложений под управлением сервера Nginx содержат уязвимости высокого уровня риска. Доля уязвимых ресурсов на базе Microsoft IIS значительно снизилась по сравнению с 2013 годом и составила 44% вместо 71%. Число уязвимых сайтов под Apache возросло на 10% и составило 70%.
Самой распространенной ошибкой администрирования веб-серверов является «Идентификация программного обеспечения» (Fingerprinting). В частности, данная уязвимость встречается на 8 из 10 веб-ресурсов под управлением Apache. Это связано с тем, что стандартная конфигурация исследуемых серверов предполагает раскрытие информации о версии веб-сервера в сообщениях об ошибке (например, при обращении к несуществующему ресурсу).
Уязвимости по отраслям
Лидером по количеству систем с уязвимостями высокого уровня риска оказалась банковская отрасль (89%). Это может быть связано с тем, что большинство исследованных ресурсов не являлись системами ДБО или другими системами, где обрабатываются данные о финансовых транзакциях, поэтому банки уделяли меньшее внимание обеспечению защиты данных приложений. Также высокий процент веб-приложений, подверженных критически опасными уязвимостям, отмечается для телекоммуникационной отрасли (80%). Далее следуют промышленность (71%) и информационные технологии (67%). В электронной коммерции доля систем с уязвимостями высокого уровня риска тоже довольно высока — 42%.
По среднему количеству уязвимостей на одну систему наименее защищенными оказались сайты промышленных предприятий, где на одно приложение приходится 18 критически опасных уязвимостей. Стоит отметить, что упомянутое ранее приложение, в котором было выявлено 60 критически опасных уязвимостей, относилось к промышленному сектору. Без его учета соответствующий показатель по данному сектору экономики составляет 13,1 уязвимости высокой степени риска на систему, что совпадает с показателем для банковской отрасли.
В 2014 году уязвимости высокого уровня риска «Внедрение операторов SQL», «Внедрение сущностей XML» и «Выход за пределы назначенного каталога» встречались чаще, чем другие недостатки. Как и в 2013 году, критически опасная уязвимость «Внедрение операторов SQL» была обнаружена в веб-приложениях всех исследуемых отраслей экономики.
Доли уязвимых сайтов из различных отраслей экономики
Уязвимости на продуктивных и тестовых сайтах
В 71% продуктивных веб-ресурсов были обнаружены критически опасные уязвимости, для тестовых площадок данный показатель составляет 50%. Среднее количество уязвимостей высокой степени риска, выявленных в тестовых системах (12,8), почти в два раза выше по сравнению с продуктивными, где выявлено в среднем по 7 критически опасных уязвимостей. Однако при этом в продуктивных системах в среднем выявлено больше уязвимостей среднего уровня риска (20,6 против 14,3 для тестовых).
Подобная ситуация c защищенностью систем, уже находящихся в эксплуатации, наглядно свидетельствует о необходимости внедрения процессов обеспечения безопасности на всех стадиях жизненного цикла приложений (SSDLC).
Сравнение методов тестирования
В ходе исследований защищенности специалисты Positive Technologies сравнили результаты тестирования методом белого ящика (с использованием внутренних данных о системе, включая анализ исходных кодов) с результатами тестирования методами черного и серого ящика (когда анализ производится с привилегиями, идентичными привилегиям потенциального злоумышленника). Доля сайтов, содержащих уязвимости высокого и среднего уровня риска, оказалась примерно одинакова для этих методов тестирования. Можно сделать вывод, что отсутствие у атакующего доступа к исходным кодам не делает веб-приложения защищенными.
С другой стороны, анализ исходных кодов в дополнение к анализу методами черного и серого ящика позволяет выявить больше уязвимостей для каждого приложения. В частности, тестирование методом белого ящика в среднем находит в 3,5 раза больше уязвимостей средней степени риска по сравнению с методами черного и серого ящика. Другой яркий пример: в каждом ресурсе, исследованном методами черного и серого ящика, в среднем было обнаружено по 4 уязвимости типа «Межсайтовое выполнение сценариев» — зато метод белого ящика позволил выявить в среднем по 29 уязвимостей данного типа.
Среднее количество выявленных уязвимостей определенного типа на одну систему (по методу тестирования)
В целом, на сегодняшний день уровень защищенности веб-приложений остается крайне низким — и даже хуже, чем в прошлом году. Несмотря на это, системы обнаружения и предотвращения вторжений уровня приложений (web application firewalls) почти не используются: такой механизм применялся для защиты лишь одного из всех сайтов, рассмотренных в данном исследовании.
Полную версию этого исследования, а также сборник Positive Research’ 2015 со всеми исследованиями уязвимостей прошлого года (SCADA, ДБО, телекомы и др.), можно найти на сайте www.ptsecurity.ru/lab/analytics
А если вас интересуют современные методы исследования безопасности веб-приложений, приглашаем послушать бесплатный вебинар Владимира Кочеткова, руководителя отдела разработки анализаторов исходных кодов Positive Technologies.
Вебинар состоится 12 ноября в 14:00, предварительная регистрация здесь: www.ptsecurity.ru/lab/webinars/#42235
Комментарии (10)
zim32
14.10.2015 11:58+1Да это все цветочки. Я когда узнал про атаку методом оракула при включенном gzip шифровании на сервере, понял что такое паранойя
madkite
14.10.2015 18:30-1А можно расписать для чайников, какие уязвимости в веб-приложениях попадают под категорию «Fingerprinting»? Если в заголовках ответа есть «Server: nginx» или там jquery.js подключается прям с таким именем и там реально внутри jquery, то это считается уязвимостью и участвует в статистике?
vajadhava
15.10.2015 11:23+1Каждое веб-приложение на PHP в среднем содержит 11 критически опасных уязвимостей.
Пожалуй сделаю из этого стикер :)
Nostr
16.10.2015 00:55Может быть мой монитор не очень передает контраст, но на последней картинке синий-темнее и синий-светлее сложноразличимы.
printercu
Да уж. Ладно еще может не все понимают, как XSS работает. Но про SQLI уже все слышали, знают чем опасно, и ничего сложного-то в защите нет. Все равно продолжают писать с уязвимостями.
OnYourLips
Тоже не могу поверить в это.
Все остальные типы ошибок из этого списка можно допустить при невнимательности, но ведь допустить SQL-injection с использованием современных фреймворков и библиотек можно только преднамеренно.
ptsecurity
К сожалению, огромное количество приложений были написаны ещё до появления современных фреймворков.
Кроме того, часто код пишется в спешке, и даже при использовании современных фреймворков не редки ситуации использования конкатенации запросов в неожиданных местах (при том, что в целом код написан грамотно).
BeLove
Да ладно, XSS это уже не просто когда в гет параметр подставили ""
Есть большое множество сложных кейсов, посмотрите врайтапы XSS уязвимостей на том же гугле, например.
На вскидку — blog.bentkowski.info/2015/04/xss-via-host-header-cse.html
Или другие из блога.
А сколько сложных кейсов с DOM XSS.