Содержание
Введение
Атаки на веб-приложения — один из наиболее популярных методов кибератак. По данным нашего исследования, 17% от общего числа атак пришлось на эксплуатацию уязвимостей и недостатков защиты веб-приложений. Злоумышленники могут использовать скомпрометированные сайты в различных целях: для распространения вредоносного ПО, кражи конфиденциальных данных, несанкционированного внедрения информации, для мошенничества или проникновения во внутреннюю инфраструктуру компании. Все вышеперечисленное — прямая угроза для функционирования и репутации организаций, поэтому веб-приложения нужно защищать и не оставлять слабых мест при их разработке. Мы постарались выделить основные уязвимости веб-приложений и угрозы, используя многочисленные результаты работ по анализу защищенности. О методике исследования можно прочитать в конце отчета.
Резюме
Про угрозы:
- В абсолютном большинстве веб-приложений (98%) злоумышленники имеют возможность проводить атаки на пользователей. Подобные атаки могут привести к распространению вредоносного ПО, перенаправлению на сайты злоумышленников или краже данных с использованием методов социальной инженерии.
- Утечки важных данных имели место в 91% веб-приложений. Чаще всего раскрывались идентификаторы пользователей (в 84% случаев). Две трети приложений оказались подвержены раскрытию персональных данных, а около половины — утечкам учетных данных пользователей.
- Возможность несанкционированного доступа была отмечена в 84% веб-приложений. При этом полный контроль над сайтом удалось получить в 5% случаев.
Про уязвимости:
- Наиболее опасными уязвимостями веб-приложений стали недостатки механизмов авторизации и аутентификации пользователей. Эти уязвимости позволяют получить несанкционированный доступ к конфиденциальной информации и функциям приложения.
- Недостатки авторизации также были связаны с уязвимостями протокола oAuth. Уязвимости реализации авторизации с помощью oAuth могут быть использованы злоумышленниками для перехвата сессионных и учетных данных пользователей, а после привести к несанкционированному доступу к приложению.
- Среднее количество уязвимостей на одно веб-приложение сократилось более чем на треть по сравнению с 2019 годом. В среднем на один сайт приходится 15 уязвимостей, две из которых — высокой степени риска.
- 15% — доля уязвимостей высокой степени риска от общего числа выявленных уязвимостей. Две трети сайтов содержат такие уязвимости.
- 72% уязвимостей были связаны с ошибками в коде веб-приложений.
В 2020–2021 гг. 48% веб-приложений имели низкий или крайне низкий уровень защищенности, и этот показатель по сравнению с 2019 годом не улучшился.
Уязвимости веб-приложений
Доля веб-приложений, содержащих уязвимости высокой степени риска, составила 66% в 2020 году, а в 2021 году — 62%, что значительно больше показателя 2019 года.
За последние два года среди общего числа уязвимостей наблюдается незначительное уменьшение доли уязвимостей высокой степени риска, способных привести к крайне негативным последствиям. При этом доля уязвимостей средней степени риска уменьшилась на 23 п. п., а доля уязвимостей низкой степени риска увеличилась более чем в два раза. Кроме того, уменьшилось в 1,7 и 2,5 раза среднее число уязвимостей высокого и среднего уровня риска соответственно на одно приложение по сравнению с 2019 годом, что может говорить о распространении подходов безопасной разработки.
Самые распространенные уязвимости
Уязвимости, связанные с нарушениями контроля доступа, стали наиболее актуальными за прошедшие два года — их прирост составил 63 п. п. по сравнению с 2019 годом. Более подробно об этих уязвимостях вы можете прочитать ниже.
Результаты анализа защищенности веб-приложений показали, что 83% из них имеют уязвимости, связанные с неправильной конфигурацией механизмов защиты (security misconfiguration). В 48% исследованных приложений было обнаружено отсутствие заголовка Strict-Transport-Security (CWE-523), который обязывает браузер пользователя использовать протокол HTTPS для безопасной передачи данных. Наличие настроенного заголовка обеспечивает защищенную передачу данных, в том числе конфиденциальных, что, в свою очередь, позволяет избежать атак типа man in the middle. В 34% приложений неправильно сконфигурирован заголовок X-Content-Type-Options (CWE-16), что делает их уязвимыми для атак с подменой контента, например для межсайтового выполнения сценариев.
Недостатки механизма авторизации
Во всех веб-приложениях, исследованных в 2020–2021 г., были выявлены уязвимости, относящиеся к классу нарушения контроля доступа (Broken Access Control). Наличие подобных уязвимостей в веб-приложении может стать причиной несанкционированного доступа к конфиденциальной информации, модификации или удаления данных, а также несанкционированного доступа к личному кабинету или функциональности приложения. Учитывая возможные последствия эксплуатации уязвимостей, связанных с недостатками контроля доступа, такие уязвимости требуют оперативных действий по устранению.
В одном из проектов по анализу защищенности некорректно реализованная проверка прав доступа авторизованного пользователя (CWE-285) позволяла просматривать данные других пользователей, например имя, номер телефона и адрес электронной почты, перебирая уникальные значения ИНН компании в запросе к уязвимому сценарию.
Говоря о недостатках авторизации, нужно сказать о протоколе авторизации oAuth 2.0, который использовался в некоторых исследованных проектах. Этот протокол получил широкое распространение благодаря своему удобству, по сравнению с традиционными методами авторизации с помощью логина и пароля. oAuth использует данные одной учетной записи и является вполне безопасным. Пользователю не нужно предоставлять свои учетные данные стороннему приложению напрямую, а разработчикам веб-приложений не приходится заботиться о сохранности учетных данных, так как логин и пароль не используются.
Однако неправильная настройка протокола oAuth может стать причиной кражи личной информации пользователей и перехвата сессионных данных, например во время передачи уникальных токенов доступа, которые связаны с сеансами пользователей. В нескольких проектах специалисты обнаружили возможность атаковать пользователей путем перенаправления на небезопасный сайт (CWE-601). Злоумышленник может отправить пользователю специально сформированную ссылку, при переходе по которой тот будет перенаправлен на подконтрольный злоумышленнику ресурс, а в URL передастся сессионный токен пользователя на уязвимом сайте. Таким образом злоумышленник сможет получить токен и использовать его для доступа к личному кабинету пользователя.
Среди уязвимостей высокого уровня риска первое и второе места занимают некорректная авторизация пользователей и обход авторизации с использованием ключа пользователя; замыкает тройку некорректная аутентификация.
Распространенные уязвимости, не вошедшие в OWASP Top 10
Среди уязвимостей, не входящих в OWASP Top 10 — 2021 Open Web Application Security Project (OWASP) Top 10 — открытый документ, в котором описаны основные проблемы безопасности веб-приложений. , наибольшее распространение получила уязвимость неконтролируемого использования вычислительных ресурсов (CWE-400), позволяющая злоумышленникам проводить DoS-атаки на приложение. В процессе анализа одного из приложений специалистам удалось эксплуатировать такую уязвимость, отправляя запросы на формирование большого количества объемных отчетов в формате PDF. Это, в свою очередь, вызвало увеличение количества потребляемых ресурсов и задержки в доступе к приложению.
Вторую позицию занимает уязвимость некорректной проверки наличия нестандартных условий (CWE-754), когда веб-приложение принимает параметры, значения которых не являются для него стандартными. В одном из исследованных приложений эта уязвимость привела к продлению пробного периода пользования. Для этого был сформирован запрос к сценарию активации пробного периода с измененным тарифом — подобные действия позволили продлить бесплатный период еще на один месяц. Эта же уязвимость могла быть использована для массовой рассылки электронных писем с вредоносным вложением от имени службы поддержки приложения: в шаблоне HTTP-запроса значение поля полезной нагрузки было заменено на файл с расширением .pdf и были указаны адреса электронной почты.
Уязвимость раскрытия конфиденциальной информации в отладочном коде приложения (CWE-215) вошла в тройку наиболее часто встречающихся уязвимостей не из списка OWASP Top 10. Раскрытие информации в отладочном коде может предоставить злоумышленнику больше сведений о системе, которые могут быть использованы для подбора методов и инструментария планируемых атак.
Уровень защищенности веб-приложений
В нашу выборку вошли 16 веб-приложений, которые используются в организациях промышленного сектора. Среди них 13 приложений являлись продуктивными и работали в штатном режиме, а оставшиеся были тестовыми и находились на этапе разработки и отладки. Во всех тестовых приложениях были выявлены уязвимости высокого уровня риска. Среди продуктивных приложений 46% обладали низким или крайне низким уровнем защищенности. В 19% веб-приложений промышленного сектора злоумышленник может совершить атаку на ЛВС и проникнуть в инфраструктуру через веб-приложение, а в 31% — выполнить команды ОС на сервере. Для веб-приложений промышленных компаний были характерны уязвимости, связанные с внедрением кода, а также уязвимости, вызванные использованием небезопасных и устаревших компонентов, — такие уязвимости были обнаружены в 81% и 44% приложений соответственно. Состояние защищенности веб-приложений промышленных компаний в целом показывает положительную динамику: доля приложений, имеющих крайне низкий уровень защищенности, сократилась более чем в три раза по сравнению с 2019 годом.
Тестовые системы зачастую не могут похвастаться высоким уровнем защищенности. Чаще всего они не проработаны до мелочей, а различные изменения системы в процессе доработок могут стать причиной появления множества уязвимостей.
Анализ уровня защищенности был проведен в отношении 11 сайтов госучреждений, 6 из которых были продуктивными. Низкую оценку уровня защищенности получили от специалистов 67% продуктивных приложений госучреждений, что несильно отличается от показателей предыдущих лет. Чаще всего встречались уязвимости, связанные с недостатками контроля доступа, — они были выявлены во всех приложениях госучреждений. В 70% приложений подобные уязвимости могли привести к несанкционированному доступу к приложению, а также утечкам важной информации, причем чаще всего выявлялась возможность утечки персональных данных.
Уровень защищенности веб-приложения определяется специалистами по результатам анализа защищенности и напрямую зависит от степени опасности потенциально возможного воздействия на рассматриваемую систему с учетом циркулирующих в ней данных.
Состояние защищенности веб-приложений IT-отрасли показало отрицательную динамику по сравнению с 2019 годом: около половины исследованных продуктивных приложений имели низкий или крайне низкий уровень защищенности. Кроме того, большинство приложений оказались подвержены уязвимостям, связанным с внедрением кода. В 29% веб-приложений эти уязвимости могли привести к таким опасным последствиям, как атаки на ресурсы ЛВС. Сфера IT была представлена 15 приложениями IT-компаний — 11 продуктивными и 4 тестовыми.
Мы отмечаем повышение уровня защищенности сайтов онлайн-торговли: не было отмечено ни одного приложения с низким уровнем защищенности. Это результат более трепетного отношения к защите веб-приложений со стороны разработчиков и роста популярности торговли в интернете. Наиболее характерными угрозами приложений онлайн-торговли стали атаки на клиентов, обусловленные неправильной настройкой защитных средств, в том числе некорректная реализация протокола oAuth и утечка конфиденциальных данных. В каждом приложении удалось получить доступ к идентификаторам пользователей, а в 44% приложений — к персональным данным. Онлайн-торговлю представляли девять веб-приложений; восемь из них являлись продуктивными.
Сфера финансовых организаций была представлена пятью веб-приложениями — четырьмя продуктивными и одним тестовым. Характерной особенностью всех исследованных приложений было наличие уязвимостей, связанных с небезопасным проектированием, в частности ошибок в бизнес-логике. В связи с этим удалось продемонстрировать несанкционированный доступ к функциональности и контенту во всех приложениях. Основываясь на таком количестве веб-приложений, невозможно дать объективную оценку уровня защищенности всей отрасли. Но исследования имеющихся веб-приложений показали, что в целом уровень защищенности приложений финансовых организаций остается достаточно высоким и соответствует показателям предыдущих лет.
Угрозы веб-приложений
В 84% исследованных приложений были выявлены угрозы несанкционированного доступа к личным кабинетам пользователей, в том числе администраторов. В 72% веб-приложений злоумышленник может получить доступ к функциональности или контенту, которые не должны быть для него доступны, например просматривать личные кабинеты других пользователей или изменять длительность пробного периода подписки.
Наиболее опасны атаки на локальные вычислительные сети организации и выполнение команд операционной системы на сервере. Такие действия злоумышленников могут привести к разглашению важных данных, получению доступа к исходным кодам приложения, и самое главное — к получению доступа к ресурсам локальной сети и развитию атаки на другие узлы инфраструктуры.
Самые опасные угрозы
В 17% веб-приложений оказались возможными атаки на ресурсы ЛВС. Столько же приложений содержали уязвимости, которые могли привести к выполнению команд ОС на сервере.
Атаки на пользователей
С 2017 года проблема атак на пользователей возглавляет топ актуальных угроз веб-приложений. Каждая вторая атака на пользователей веб-приложений могла быть проведена с помощью межсайтового выполнения сценариев (cross-site scripting, XSS; CWE-79) — вида атак, в процессе которых в браузере пользователей может быть исполнен подготовленный злоумышленником произвольный код. Выполняя XSS, злоумышленники могут перенаправлять клиентов веб-приложений на фишинговые сайты, загружать вредоносное ПО на пользовательские устройства, а также выдавать себя за других пользователей.
Межсайтовый скриптинг может быть трех видов:
- Хранимый XSS (Stored) — вредоносный код заранее внедрен на страницу приложения.
- Отраженный XSS (Reflected) — для успешного проведения атаки злоумышленник должен побудить пользователя перейти по специально сформированной ссылке.
- DOM-based XSS — в случае, когда код страницы веб-приложения обрабатывает отправляемые данные и пытается исполнить полученный набор данных как команды языка.
Кроме того, причиной атак на пользователей стала неправильная настройка заголовка X-Frame-Options или его отсутствие (CWE-16). Данный заголовок отвечает за разрешение или запрет отображения страницы, если та находится во фрейме. Отсутствие или неправильная настройка этого заголовка позволяет нарушителям проводить атаки типа clickjacking. Их принцип основан на том, что уязвимое приложение загружается во фрейме, после чего маскируется под кнопку или какой-либо другой элемент либо не отображается пользователю (прозрачный iframe). При клике по данному элементу пользователь выполняет задуманное злоумышленником действие в контексте уязвимого сайта.
Для защиты от подобного рода атак мы рекомендуем проводить предварительную обработку всех данных, поступающих со стороны пользователя и затем отображающихся в браузере. Символы, которые могут потенциально использоваться для форматирования HTML-страницы, должны быть заменены на аналоги, не являющиеся символами форматирования. Также мы рекомендуем более ответственно относиться к настройке HTTP-заголовков и использовать межсетевые экраны уровня приложения для защиты от межсайтового выполнения сценариев.
Утечка важных данных
Утечки важных данных являются второй по актуальности угрозой безопасности исследованных веб-приложений. Результаты анализа защищенности показали, что более чем три четверти веб-приложений оказались подвержены раскрытию идентификаторов пользователей. В 60% приложений были раскрыты персональные данные, а в 47% — учетные данные пользователей, что на 13 и 16 п. п. больше, чем в 2019 году. Персональные и учетные данные — желанные цели для злоумышленников, что подтверждают данные итоговой аналитики актуальных киберугроз 2021 года.
Угроза разглашения конфиденциальной информации зачастую связана с уязвимостями недостаточной авторизации и недостаточной аутентификации.
Исследуя один из сайтов, специалисты получили доступ к конфиденциальной информации о пользователях веб-приложения (CWE-359). Это стало возможным из-за уязвимой формы вывода списка пользователей приложения. С помощью определенного HTTP-запроса были получены имена, адреса электронной почты, идентификаторы и хеш-суммы паролей всех пользователей. Из полученной информации удалось восстановить пароли почти 400 пользователей. Эти сведения могли использоваться злоумышленниками для авторизации в приложении с соответствующими привилегиями.
Несанкционированный доступ к приложению
Несанкционированный доступ к приложению был выявлен в 84% веб-приложений. Несанкционированное получение доступа к приложению становится возможным из-за уязвимостей аутентификации, неограниченного времени жизни сессии, утечек или отсутствия защиты от подбора учетных данных — в одном из приложений специалисты обнаружили, что приложение позволяет пользователям устанавливать простые пароли, неустойчивые к перебору. В результате перебора учетных данных специалистам удалось получить доступ к приложению с привилегиями соответствующего пользователя, а также произвести перебор промокодов и получить промокоды, принадлежащие другим пользователям.
В настоящее время использование одного пароля зачастую недостаточно для обеспечения необходимого уровня безопасности. Мы рекомендуем организациям использовать многофакторную или двухэтапную аутентификацию для защиты веб-сервисов от кибератак. Однако и эти процессы подвержены уязвимостям, поэтому стоит внимательно отнестись к их реализации. Исследуя защищенность одного из веб-приложений, эксперты выявили недостаточно эффективную реализацию двухфакторной аутентификации (CWE-287), перехватив HTTP-запрос отправки кода подтверждения на сервер. На основе перехваченного запроса был создан шаблон для формирования HTTP-запросов с различными значениями кодов. Далее эти запросы за несколько секунд были отправлены серверу приложения. Все неверные запросы были отсеяны сервером, но после ввода верного кода подтверждения все остальные неверные коды были восприняты приложением как правильные. После обновления страницы форма запроса кода двухфакторной аутентификации пропадала и открывался доступ к личному кабинету пользователя.
Несанкционированный доступ к приложению может повлечь за собой утечку конфиденциальной информации, модификацию или удаление данных, атаки на пользователей, а также проникновение в инфраструктуру организации.
Сравнение результатов анализа методами черного и белого ящика
В 2020–2021 г. большей популярностью среди клиентов пользовались исследования методом черного или серого ящика — такими методами были проанализированы 79% веб-приложений. Исследования методом черного ящика заключаются в проведении работ по анализу и оценке защищенности веб-приложения без каких-либо исходных данных, кроме его адреса. Метод серого ящика по своей сути похож на метод черного ящика за исключением того, что исследователи располагают информацией о точках входа в систему и имеют учетную запись авторизованного пользователя с типовым набором привилегий.
Опыт экспертизы показывает, что многие уязвимости сайтов связаны с ошибками в их коде: за прошедшие два года 72% обнаруженных уязвимостей были связаны с уязвимым кодом веб-приложений, например внедрение SQL-команд, XSS, некорректные проверки условий и исключений. Оставшаяся часть уязвимостей была связана с неправильным администрированием, и они могут быть исправлены настройками приложения. Для того чтобы не допускать возникновения уязвимостей, связанных с кодом, мы настоятельно рекомендуем организациям внедрять процесс безопасной разработки в жизненный цикл веб-приложений и использовать анализатор кода. Для более тщательного выявления уязвимостей приложений используется метод белого ящика.
Исследование методом белого ящика предполагает предоставление заказчиком всех имеющихся данных о приложении, включая исходный код, для последующего анализа.
Веб-приложения, исследуемые методом белого ящика, анализируются сразу несколькими специалистами; помимо автоматизированного анализа защищенности проводится ручная проверка кода, которая, хоть и занимает больше времени, обеспечивает исключение ложных срабатываний и гарантирует актуальность выявленных уязвимостей. Все это позволяет досконально изучить приложение и не упустить ни одной строки кода и ни одного скрытого недостатка. В ходе исследования было выявлено, что методом белого ящика обнаружено в два раза больше уязвимостей высокой степени риска, чем при исследовании методом черного или серого ящика.
Заключение
Подводя итоги прошедших двух лет, можно сказать, что уровень безопасности веб-приложений все еще оставляет желать лучшего, однако мы наблюдаем положительную тенденцию снижения среднего числа уязвимостей высокого и среднего уровня риска на одно приложение, что может свидетельствовать о распространении подхода безопасной разработки и более серьезным отношением к защите веб-приложений. Мы надеемся, что в ближайшем будущем уровень защищенности сайтов будет расти, а количество выявленных уязвимостей и успешных атак уменьшится.
Достичь высокого уровня защищенности сложно, и поддерживать этот уровень — не менее трудоемкий процесс. Тщательное и безопасное проектирование веб-приложения, разработка с использованием инструментов анализа исходного кода, быстрое исправление обнаруженных уязвимостей и автоматизация большинства процессов — это те правила, которые, по нашему мнению, позволят обеспечить высокий уровень безопасности веб-приложения.
Кроме того, при анализе защищенности мы рекомендуем использовать продуктивные копии веб-приложения. Тестовые системы обычно не до конца проработаны и не содержат в себе полную функциональность, а различные изменения системы могут стать причиной появления новых уязвимостей.
Помимо анализа защищенности, организациям необходимо применять превентивный подход к защите и использовать (web application firewall, WAF): это позволит снизить риски из-за постоянного внедрения новых функций приложений, которые могут содержать потенциальные уязвимости. При этом WAF, помимо обнаружения и предотвращения известных атак, должен выявлять эксплуатацию уязвимостей нулевого дня, предотвращать атаки на пользователей, анализировать и сопоставлять множества событий для выявления цепочек атак, а также блокировать вредоносное ПО.
Портрет участников
В исследование включено 58 веб-приложений, проанализированных за последние два года.
74% исследованных веб-приложений являлись продуктивными, а 26% находились на этапе тестирования.
Методика исследования
В этом отчете содержатся результаты исследования 58 веб-приложений, для которых в 2020–2021 г. проводились работы по углубленному анализу защищенности с полным спектром проверок. В исследование не входят результаты по анализу защищенности мобильных приложений, систем ДБО, тестированию на проникновение и инструментальному сканированию (информацию о таких исследованиях вы можете найти на нашем сайте). В выборку вошли результаты анализа защищенности тех веб-приложений, владельцы которых дали свое согласие на использование данных в исследовательских целях.
Оценка защищенности проводилась вручную методами черного, серого и белого ящика с использованием вспомогательных автоматизированных средств.
Обнаруженные уязвимости классифицированы по системе Common Weakness Enumeration (CWE). В целях удобства выделены уязвимости из OWASP Top 10 — 2021, поскольку классификация уязвимостей достаточно подробная, и показано, как часто эти уязвимости встречаются в исследованных нами веб-приложениях.
В рассматриваемом отчете приведены только уязвимости, связанные с ошибками в коде и конфигурации веб-приложений. Другие распространенные проблемы информационной безопасности (к примеру, недостатки управления обновлениями ПО или безопасной разработки) не рассматривались. Степень риска уязвимостей оценивалась согласно системе Common Vulnerability Scoring System (CVSS) версии 3.1; на основе этой оценки выделялись качественные оценки высокого, среднего и низкого уровней риска.