Уязвимости ПО. Часть 2: Самые распространённые угрозы

Продолжаем раскрывать основы компьютерной безопасности для тестировщиков и всех, кто занимается программным обеспечением. Почему возникают уязвимости и как их обнаружить, читайте в нашей предыдущей статье. А сегодня расскажем о самых распространённых уязвимостях ПО.

1. Межсайтовый скриптинг

XSS (Cross-Site Scripting) с английского языка термин переводится как межсайтовый скриптинг. Эта атака на веб-систему строится по такому принципу: злоумышленники внедряют вредоносный код на определенную страницу сайта. При открытии этой страницы на компьютере пользователя запускается вредоносный скрипт, а данные передаются на удалённый сервер злоумышленников.

Существуют разные способы заставить пользователя воспользоваться вредоносными ссылками. Самый простой – отправить электронное письмо с призывом перейти по ссылке или нажать на определенную кнопку.  Без этого действия со стороны пользователя вирус останется не активированным.

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

Как обезопасить свой сайт от XSS-атаки:

  1. Для дополнительной защиты, обработка данных в коде должна выполняться не только на вашем веб-сервере, но и на стороне пользователя (клиента).
  2. Используйте популярные проверенные CMS. Например, WordPress, Bitrix  и прочие. Не забывайте регулярно обновлять версии движка, всех установленных модулей и плагинов. Эти системы управления сайтов надёжно защищены от XSS.

2. SQL, NoSQL, SSI и LDAP-инъекции

Инъекции – одни из самых распространённых приёмов, к которым прибегают злоумышленники. Хакеры подделывают пользовательские запросы: вводят вредоносный код, который позволяет получить доступ к конфиденциальной информации. Уязвимости такого типа возникают, если приложение недостаточно проверяет вводимые пользователем данные и сразу применяет их для построения запроса.

  • SQL-инъекция — это атака через входящий запрос на базу данных SQL. При её успешном завершении злоумышленники могут украсть или изменить записи в базе данных SQL
  • NoSQL‑инъекция. Аналогичная атака на базы noSQL. Они тоже работают с пользовательскими запросами и остаются уязвимы для хакерских атак, выполняемых через встраивание кода.
  • SSI-инъекция – это атака на веб-приложение, при которой злоумышленник внедряет конструкции кода для получения доступа к операционной системе сервера. Например, так хакер может подменить сообщения, которые получает пользователь, вмешаться в его взаимодействие с приложением и выманить конфиденциальную информацию.
  • LDAP-инъекция – этот метод используют, чтобы модифицировать LDAP-запрос и получить доступ к хранилищу приложения. Хакеры оправляют подготовленные данные, которые содержат части LDAP-запроса. В результате злоумышленник может отправлять хранилищу абсолютно любые запросы, чтобы в результате незаконно получить или даже изменить важную информацию в LDAP-хранилище.

Как защититься от инъекций злоумышленников?

Общие правила для различных типов инъекций одинаковые:

  1.  Самое главное – необходимо проверять и фильтровать все поступающие данные. А также обязательно отслеживать источник всех запросов.
  2. Вместо прямого ввода строки использовать параметрические запросы.
  3. Изучить практические детали по работе с каждой конкретной базой данных, хранилищем и сервером – они прописаны в руководстве по безопасности.

3. Атака на внешние XML‑сущности

Инъекция внешних сущностей XML (также известная как XXE) — это веб-уязвимость, которая позволяет злоумышленнику вмешиваться в обработку XML-данных приложением.  Большинство угроз этого типа возникает из-за того, что библиотека синтаксического анализа поддерживает потенциально опасные функции XML.

Так что самое простое решение обезопасить систему от XXE- атак — отключить разрешение внешних сущностей и поддержку XInclude. Это можно сделать с помощью параметров конфигурации или перенастройке программного поведения по умолчанию.

4. Брутфорс 

Брутфорс (от англ. bruteforce «грубая сила»)  классический способ взлома учётных записей через подбор паролей. Программа автоматически перебирает все возможные комбинации символов и рано или поздно находит единственно верную. Так взламывают личные кабинеты онлайн-банков, электронную почту, аккаунты в социальных сетях.

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

5. Инъекция шаблона на стороне сервера 

Server-Side Template Injection или SSTI это вид атаки на веб-приложения, когда хакер внедряет собственный синтаксис в шаблон, который выполняется на стороне сервера. Так злоумышленники могут захватить полный контроль над сервером, что делает эту атаку опаснее, чем внедрение шаблона на стороне пользователя. Иногда сама SSTI не несёт критичной опасности, но сигнализирует о подготовке злоумышленников к более опасные атакам. Поскольку инъекция выполняется прямо на сервер, программы защиты, фильтрующие трафик со стороны пользователя, в этом случае не помогают.

Нужно прибегать к другим методам:

  1. Запретить пользователям вносить изменения в базовый шаблон. Это самый действенный способ обезопасить систему от SSTI-атак. Однако, во многих бизнес-приложениях установить такую защиту в принципе невозможно —  иначе они перестанут решать свои задачи.
  2. Можно установить особые механизмы шаблонизации. У каждого шаблонизатора есть собственные средства безопасности. А чтобы повысить их эффективность, не забывайте об экранировании пользовательских данных. 
  3. Предотвратить атаку на основную систему можно, если назначить выполнение пользовательского кода в ограниченной среде. Даже если злоумышленники смогут внедрить инъекцию, опасный код не уйдёт дальше такой «песочницы». Этот способ непрост в реализации, но оправдывает затраты высокой надёжностью.
  4. В качестве дополнительных инструментов безопасности можно использовать специальные защитные программы. К примеру, Web Application Firewall — она оперативно проверяет и блокирует атаки на веб-приложения.

6. Небезопасная прямая ссылка на объект

Insecure direct object references (IDOR)  одна из самых распространённых веб-уязвимостей, на которые охотятся хакеры. Воспользовавшись ею, можно узнать промокод на скидку в интернет-магазине, просмотреть скрытые фото в соцсети или узнать информацию, предназначенную для внутреннего пользования в компании. Уязвимость возникает, когда приложение использует идентификатор для прямого доступа к объекту в базе данных. Пользователь может найти прямую ссылку на объект или операцию, изменить параметры в этой ссылке и таким образом получить доступ к внутреннему объекту.

Как избежать этой уязвимости?
Предотвращать возникновение IDOR важно ещё на этапе разработки приложения. Главная задача тщательно валидировать приходящие запросы. Проверять, есть ли у пользователя права на указанную страницу или действие; формировать сложные идентификаторы, которые невозможно предугадать, а также использовать подпись идентификатора. 

7. Удаленное выполнение кода 

Remote Code Execution (RCE) одна из самых опасных компьютерных уязвимостей. Если злоумышленник получает возможность удалённого внедрения кода в сервисный скрипт, это практически всегда ведёт к взлому ресурса. В результате хакер может получить доступ не только ко всем данным веб-приложения, но и установить контроль над операционной системой и сервером, которые обеспечивают работу взломанного приложения.

Как сдержать атаку?
Если попытка взлома уже зафиксирована, в первую очередь нужно найти и устранить уязвимость в коде, позволяющую эксплуатировать RCE. Дальнейшие рекомендации по защите практически такие же, как и от других атак: это обязательные санитизация и фильтрация запросов, а также изолирование пользовательской среды от основной системы. 

А вы сталкивались с атаками хакеров? Напишите нам на почту hello@qualitica.ru – проведём все необходимые тесты и подскажем,как улучшить безопасность и работу вашего программного обеспечения 🙂 

Заказать тестирование
Правила обработки персональных данных

1. Персональные данные Посетителя обрабатываются в соответствии с ФЗ «О персональных данных» № 152-ФЗ.

2. При отправке формы обратной связи Посетитель предоставляет следующую информацию: имя, контактный номер телефона, адрес электронной почты.

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

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

5. Владелец сайта вправе использовать технологию «cookies». «Cookies» не содержат конфиденциальную информацию. Посетитель настоящим дает согласие на сбор, анализ и использование cookies, в том числе третьими лицами для целей формирования статистики и оптимизации рекламных сообщений.

6.Владелец сайта получает информацию об ip-адресе Посетителя. Данная информация не используется для установления личности посетителя.

7.Владелец сайта вправе осуществлять записи телефонных разговоров с Покупателем. При этом Владелец сайта обязуется: предотвращать попытки несанкционированного доступа к информации, полученной в ходе телефонных переговоров, и/или передачу ее третьим лицам, не имеющим непосредственного отношения к взаимодействию между Владельцем сайта и Посетителем, в соответствии с п. 4 ст. 16 Федерального закона «Об информации, информационных технологиях и о защите информации».

Письмо отправлено

Наш менеджер свяжется с вами в ближайшее время

Что-то пошло не так

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