Уязвимости веб-приложений

Веб-приложения — это клиент-серверные приложения, основанные на протоколе HTTP, которые обычно управляют данными содержимого HTML, JavaScript, JSON и XML. В нынешних реалиях развития информационных сетей и услуг web-приложения стали одним из основных элементов информационной инфраструктуры любой крупной компании.

В то же время, в связи с развитием средств автоматизации проектирования и разработки программного обеспечения все меньше и меньше внимания уделяется вопросам безопасности и качества программного кода разрабатываемого программного обеспечения. В результате чего подавляющее большинство веб-приложений содержит уязвимости различной степени критичности, определить которые поможет проведение пентеста.

В настоящее время одним из самых достоверных источников об обнаруживаемых уязвимостях веб-приложений и связанных с ними угрозах информационной безопасности является проект Open Web Application Security Project

На аналитические и справочные документы (например, OWASP Top 10) часто ссылаются различные эксперты в области информационной безопасности при упоминании наиболее распространенных недостатков безопасности веб-приложений. 

В этих документах описываются наиболее распространенные уязвимости и угрозы веб-приложений, и предлагаемые методики и средства для их устранения.

В основе нашей работы в компании tSpace лежит многолетний опыт в разработке защищенного программного обеспечения с опорой на международный опыт работы специалистов в области информационной безопасности, а также на требования основных международных и отечественных регуляторов по обеспечению защиты информации.

Анализ защищенности веб приложений

Анализ руководящих документов ФСТЭК, аналитических отчетов крупнейших фирм разработчиков программного обеспечения, а также полученный в рамках внедрения многоуровневых систем защиты информации показывают, что наиболее частыми и опасными с точки зрения защиты информации в 2022 году являются следующие уязвимости веб-приложений.

1. Уязвимости, связанные с различными типами инъекций в исполняемый код. В качестве инъекций подразумевают уязвимости, возникающие вследствие передачи не проверенных данных, которые пользователь ввёл интерпретатору в целях выполнения. Наиболее распространёнными типами инъекций считаются LDAP, XXE, OS и SQL.

2. Уязвимости авторизации и аутентификации. В большом количестве современных веб-приложений процесс проверки достоверности идентификации пользователя и управления сессиями пользователей реализовываются неправильно, что даёт злоумышленникам возможность доступа к учётным данным пользователя или конфиденциальной информации.

3. XSS-уязвимости («межсайтовый скриптинг») – уязвимости веб-приложений заключающиеся во внедрении в вредоносного кода который будет выполнен на компьютере сотрудника при открытии им этой страницы и взаимодействии этого кода с веб-сервером злоумышленника.

4. Уязвимости контроля доступа. Наиболее распространенные уязвимости контроля доступа включают:

  • нарушение принципа наименьших привилегий или отказа по умолчанию, когда доступ должен предоставляться только для определенных возможностей, ролей или пользователей, но доступен любому;
  • обход проверок контроля доступа путем изменения URL-адреса, состояния внутреннего приложения или HTML-страницы или с помощью средства атаки, изменяющего запросы API;
  • разрешение просмотра или редактирования чужой учетной записи путем предоставления ее уникального идентификатора (небезопасные прямые ссылки на объекты);
  • повышение привилегий, при котором злоумышленник может действовать как пользователь без входа в систему или действовать как администратор при входе в систему как пользователь;
  • доступ к метаданным, таким как воспроизведение или изменение маркера контроля доступа JSON Web Token (JWT), или файла cookie или скрытого поля, используемого для повышения привилегий.

5. Небезопасные прямые ссылки на объекты (Insecure Direct Object References). Данный вид уязвимости является следствием недостаточной проверки пользовательских данных, что приводит к передаче в открытом виде в адресной строке браузера закрытых пользовательских данных.

6. Неправильная конфигурация приложения. Данный вид уязвимостей предполагает, что веб-приложение может быть уязвимым, если:

  • отсутствует надлежащее усиление безопасности в любой части стека приложений или неправильно настроены разрешения для облачных служб;
  • включены или установлены ненужные функции (например, ненужные порты, службы, страницы, учетные записи или привилегии).
  • учетные записи по умолчанию и их пароли по-прежнему включены или не изменены.
  • в обновленных системах функции безопасности отключены или настроены некорректно.
  • параметры безопасности на серверах приложений, платформах приложений, библиотеки, базы данных и т.д. не настроены на безопасные значения.
  • сервер не отправляет заголовки или директивы безопасности, или они не настроены на безопасные значения.
  • используемое программное обеспечение устарело или уязвимо.

7. Недостаточная защита от атак. Большая часть API и приложений не располагают базовыми возможностями по выявлению, предотвращению и реакцией на автоматические и ручные атаки.

8. Уязвимости CSRF (Cross-Site Request Forgery) уязвимость, которая позволяет злоумышленнику через браузер жертвы осуществить отправку в уязвимое приложение определённого HTTP запроса, включая файлы сеанса, куки и другую информацию, включаемую в автоматическом режиме.

9. Применение элементов с уязвимостями. Такие элементы, как фреймворки, библиотеки и прочие программные модули функционируют с такими же полномочиями, как и приложение. Когда в одном из элементов имеется уязвимость, то вследствие атаки на неё у злоумышленника появляется возможность кражи важных данных или даже получения управления над сервером. API и приложения, применяющие элементы с уязвимостями могут ослабить защиту веб-приложений и сделать потенциальными различные атаки. Могут быть различные типы уязвимостей веб-сайтов, которые могут открывать доступ к всевозможным данным.

10. Незащищенные API. Большая часть современных приложений зачастую содержат в себе веб-приложения клиентов, а также богатые API интерфейсы, которые доступны из мобильных приложений и через JavaScript в браузере. Они работают по протоколам GWT, RPC, REST/JSON, SOAP/XML и др. Такие API очень часто являются не защищёнными и также содержат большое количество ошибок, приводящих к уязвимостям.

Самые распространенные уязвимости

Проведенный анализ ежегодных отчетов по безопасности показал, что 25% веб-приложений подвергаются как минимум 8-ми уязвимостям из представленного перечня.

Кроме перечисленных выше, в число самых распространённых уязвимостей вошли:

  • отсутствие функций контроля доступа (33%);
  • небезопасная конфигурация (37%);
  • недочёты системы аутентификации и сохранения сессий (41% веб-приложений).

Также специалистами в области ИБ обнаружено, что все веб-приложения имеют как минимум одну уязвимость (на одно веб-приложение приходится в среднем 45 ошибок).

Помимо того, проведённый в 2022 году, сравнительный анализ веб-приложений, которые разработаны по технологиям .NET и Java показал, что Java-приложения в основном могут подвергаться уязвимостям, основанные на внедрении SQL-кода и CSRF-уязвимостям (соответственно 38% и 69% решений) и в меньшей степени проблемам, которые относятся к небезопасной конфигурации (14%) в сравнении с .NET-приложениями.

Анализ угроз

Проведённый специалистами по информационной безопасности анализ актуальных угроз, позволили выделить пять основных направлений угроз которыми интересуются злоумышленники:

  • атаки на клиентов;
  • утечка важных данных;
  • несанкционированный доступ к функциональности или контенту;
  • несанкционированный доступ к приложению;
  • раскрытие конфигурационной информации.

Как показал проведённый специалистами анализ, угрозы связанные с утечкой данных являются наиболее актуальными, т.к. в 47% случаев под угрозу попали персональные данные, а в 31% — учетные данные пользователей.

Самые опасные угрозы

Согласно статистике приведенной компанией Positive Technologies наиболее опасными угрозами при использовании веб-приложений являются:

  • угрозы связанные с несанкционированным доступом к приложению (в 16% веб-приложений можно получить полный контроль над приложением в 8% веб-приложений возможны атаки на ресурсы ЛВС);
  • несанкционированный доступ к функциональности или контенту (в 16% веб-приложений были найдены критически опасные уязвимости, позволяющие получить контроль не только над приложением, но и над ОС сервера).

ТОП-10 сервисов для поиска уязвимостей веб-приложений

Руководящие документы и акты в области информационной безопасности РФ (приказы ФСТЭК России № 17, № 21, № 239, № 31, постановление Правительства РФ № 79 и т. д.) предписывают заказчикам обязательно иметь сканер уязвимостей, а сам продукт должен обладать сертификатом по требованиям безопасности ФСТЭК России. Некоторые сканеры уязвимостей позволяют проводить проверки на соответствие требованиям PCI DSS и других зарубежных нормативных актов. 

Наиболее популярными на российском рынке сканеров являются следующие продукты: 

  • MaxPatrol 8 (Positive Technologies). 
  • RedCheck («АЛТЭКС-СОФТ»). 
  • ScanOVAL (ФСТЭК России).
  • XSpider (Positive Technologies). 
  • «Ревизор сети» («ЦБИ-сервис»). 
  • «Сканер-ВС» (НПО «Эшелон»).

Согласно аналитическому отчёту Gartner «Market Guide for Vulnerability Assessment», тремя лидирующими разработчикам сканеров безопасности являются Tenable, Qualys и Rapid7. На этих игроков приходится большая часть прибыли в отрасли. Кроме них в перечень наиболее функциональных и широко распространённых сканеров уязвимостей являются:

  • Nessus (Tenable). 
  • Qualys Vulnerability Management (Qualys). 
  • F-Secure Radar (F-Secure). 
  • Rapid7 Nexpose (Rapid7). 

Все перечисленные сканеры выполняют следующий обобщенный список зада по обеспечению и организации ИБ:

  • обнаружение узлов сети и сканирование на предмет уязвимостей операционных систем, общесистемного и прикладного ПО; 
  • выявление уязвимостей и слабых конфигураций в серверах приложений и веб-серверах. 
  • контроль конфигураций и оценка соответствия политикам и стандартам безопасности. 
  • сканирование в режиме «Pentest», сетевые проверки и сканирование портов.
  • проведение аудита парольной политики и подбор паролей.
  • аудит защищённости СУБД (Microsoft SQL Server, Oracle Database, MySQL, PostgreSQL). 
  • выявление уязвимостей в средствах виртуализации Microsoft Hyper-V, VMware ESXi / vCenter, VMware NSX. 
  • инвентаризация сети для получения детальной информации об аппаратных и программных средствах. 
  • контроль целостности с выбором алгоритма контрольного суммирования.
  • контроль изменений в системе. 
  • управление обновлениями для общесистемного ПО. 
  • аудит SCADA-систем. 

Как защитить веб приложение

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

В перечень задач такого специалиста обычно входят: 

  • использование специализированных сканеров безопасности инструменты для анализа защищенности информационной системы;
  • настройка и внедрение криптопротоколов передачи данных по сети компании;
  • настройка и внедрение парольной политики;
  • настройка механизмов разграничения доступа пользователей к ресурсам и приложениям.

Заключительный абзац

В данной статье описаны основные виды уязвимостей встречающихся при разработке веб-приложений. Описаны основные угрозы реализуемые через использование таких уязвимостей как СSRF, XSS или SQL инъекции, а также существующие специализированные программные средства отвечающие за анализ функционирования и настройку механизмов защиты информации в информационной сети организации. Также консультацию по информационной безопасности можете получить обратившишь к нашим специалистам.