Получить консультацию по Solar appScreener

Многие веб-приложения содержат уязвимости, которые могут стать точками входа для киберпреступников, желающих завладеть доступом к конфиденциальной информации или нарушить работу ПО. Одна из самых распространенных уязвимостей позволяет внедрять в продукт вредоносный код, выполнение которого приводит к тому, что хакеры получают возможность совершать несанкционированные действия в базах данных SQL (БД). Атаки такого рода называются SQL-инъекциями и реализуются благодаря тому, что подавляющее количество баз данных строится на языке программирования Structured Query Language (далее — SQL). В статье подробно разберем механизм атаки, меры профилактики и защиты.

Что надо знать об атаках на основе SQL-инъекции

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

Чтобы выполнить какую-либо манипуляцию, например передать атрибуты учетных записей через форму входа на сайт или в приложение, в БД направляется SQL-запрос. Пользователь заполняет форму входа, вводя в нее определенную информацию, например идентификатор и пароль, которая сверяется с имеющейся в базе. Если все в порядке, пользователь получает доступ к запрашиваемому ресурсу, если есть отклонения — система выдает отказ. Но опасность в том, что многие формы ввода не оснащаются механизмами, которые запрещают внесение дополнительных сведений, чем и пользуются злоумышленники. Они внедряют в форму запроса (а иногда непосредственно в URL‐адрес) собственный SQL‐запрос, который называется инъекцией. Он исполняется на сервере и позволяет совершать различные действия в базе данных, например просматривать конфиденциальную информацию или даже удалять БД.

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

  • Появление рекламных блоков, которые перенаправляют пользователей на сайты, не вызывающие доверия.
  • Всплывающие окна с уведомлениями об ошибках отправки запросов.
  • Нетипичный отклик от формы обратной связи ресурса, например поток писем на электронную почту.

Все эти признаки могут сигнализировать и о других атаках, но в любом случае их не следует игнорировать.

атаки на основе sql-инъекций

Типы атак на основе SQL-инъекции

Существует несколько типов SQL-инъекций. Рассмотрим наиболее распространенные:

  • Union-based инъекции — атаки через оператора Union, подразумевающие объединение нескольких запросов. В результате злоумышленники легко получают доступ к защищенным разделам БД, могут просматривать любые хранимые сведения и похищать атрибуты для входа в пользовательские аккаунты.
  • Error-based — злонамеренная активность, которая может привести к тому, что БД приложения или веб-ресурса будет выдавать уведомления об ошибках. Хакеры анализируют эти сообщения и пытаются воссоздать особенности инфраструктуры базы данных.
  • Time-based инъекции, или «слепые» атаки — добавление подзапросов, которые при соблюдении определенных условий замедляют работу базы данных. Атакующие сравнивают время ответа на реальные и фальшивые запросы, таким образом постепенно восстанавливая содержимое БД.
  • Boolean — еще одна разновидность атаки «слепого» типа. Хакеры отправляют SQL-запрос к базе данных с намерением получить от БД отрицательный или положительный ответ.

Если у злоумышленников не получается собрать информацию через определенный канал связи или наблюдаются сбои в работе сервера, хакеры прибегают к нападениям типа Out-of-band — отправляют данные на контролируемый сервис путем использования пакетов UTL_HTTP, DNS-запросов.

Опасность SQL-инъекций

К основным угрозам, связанным с SQL-инъекциями, можно отнести:

  • Несанкционированный доступ к чувствительной информации, например персональным данным пользователей приложения, атрибутам банковских карт.
  • Нарушение целостности и работоспособности атакуемых веб-ресурсов и приложений.
  • Вероятность утечки чувствительных данных, которые хранятся на SQL-сервере.
  • Искажение и уничтожение хранимой информации. Например, киберпреступники могут модифицировать данные, полностью или частично их удалить.
  • Получение общих или административных привилегий для выполнения действий в системе. Это может произойти, если проверка логинов и паролей осуществляется с помощью простых SQL-запросов. В этом случае хакеры смогут добраться до чувствительных сведений из БД даже при отсутствии атрибутов учетных записей, с помощью которых пользователи авторизуются на ресурсе.

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

Для примера — несколько реальных кейсов атак с использованием SQL-инъекций, которые привели к серьезным инцидентам:

  • В игре Fortnite, где зарегистрировано более 300 млн пользователей, нашли точку входа для SQL-инъекции. Она была применена, в результате чего хакерам удалось получить доступ к аккаунтам пользователей.
  • Уязвимость, связанную с SQL-инъекцией обнаружили в Cisco. Пробел в безопасности обеспечил хакерам возможность управлять диспетчером лицензий.
  • Атаке подвергся сайт Tesla, в результате чего взломщики похитили персональные данные пользователей и использовали административные полномочия для управления веб-ресурсом.
последствия атаки на основе sql-инъекций

Профилактика SQL-инъекций

Что делать, чтобы минимизировать риски SQL-инъекций? Ниже приводим краткие рекомендации:

  • Контролировать ввод информации, которая нужна для входа на сайты и в приложения, например проверять ее по допустимым словам и словосочетаниям. Также следует назначить всем учетным записям, привязанным к базам данным SQL, минимальные полномочия.
  • Всегда удалять входные данные, поскольку сохранять их в форме для авторизации небезопасно даже при подтверждении с помощью аутентификации.
  • Исключать любые элементы, вызывающие сомнения, поскольку они могут быть частью вредоносного кода.
  • Осуществлять параметризацию запросов, в ходе которой формируются запросы на основе меток с прикрепленными параметрами ввода входных данных.
  • Проверять используемое программное обеспечение на безопасность. Это можно делать с помощью специальных автоматических анализаторов, способных обнаружить закладки в ПО и уязвимости. Для профилактики SQL-инъекций и других угроз эту меру необходимо внедрить еще на этапе разработки продуктов, но регулярные проверки в ходе эксплуатации программного обеспечения также важны.
  • Как можно чаще обновлять программное обеспечение, т. к. эксплуатация устаревших версий значительно повышает вероятность атак на приложения.

Как защититься от атак на основе SQL-инъекций

Основной метод борьбы с уязвимостями в коде — контроль безопасности приложений для своевременного выявления слабых мест и недекларированных возможностей, которые могут эксплуатировать злоумышленники.

Методы обнаружения уязвимостей:

  • Static Application Security Testing (сокращенно — SAST) — анализ исходного кода приложения, выполняемый без запуска программного обеспечения.
  • Software Composition Analysis (сокращенно — SCA) — сканирование программного обеспечения с целью обнаружения фрагментов, содержащих открытый исходный код. С помощью этой проверки можно обнаружить слабые места и проблемы с лицензированием сторонних компонентов, устаревшие элементы.
  • Dynamic Application Security Testing (сокращенно — DAST) — исследование приложений на наличие слабых мест путем имитации реальных атак, в том числе с использованием SQL-инъекций.

Для повышения уровня защищенности приложений и профилактики атак важно применять эти инструменты в комплексе. Они позволяют обнаруживать слабые стороны ПО еще на этапе разработки.

Solar appScreener против SQL-инъекций

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

Покажем на примере, как Solar appScreener с помощью модуля статического анализа (SAST) может обнаружить SQL-инъекцию.

  • Для начала сканирования достаточно загрузить в Solar appScreener файл с исходным кодом. Также можно вставить ссылку на приложение в магазине приложений или путь к репозиторию.
запуск сканирования в solar appscreener
  • При необходимости перед запуском анализа можно отрегулировать настройки сканирования — например, выбрать необходимые языки программирования (хотя это не обязательно — Solar appScreener умеет определять их автоматически).
настройки сканирования в solar appscreener
  • После того как Solar appScreener просканировал код, необходимо зайти в раздел «Подробные результаты». Там представлены все обнаруженные уязвимости с уровнем их критичности.
внедрение в sql-запрос

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

обнаруженная sql-инъекция в solar appscreener

Помимо этого, решение дает рекомендации, как устранить найденную уязвимость.

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

Защитите ваши приложения от SQL-инъекций с Solar appScreener

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

Выводы

SQL-инъекция считается одной из самых серьезных угроз безопасности программного обеспечения. Эффективно противодействовать им помогает отслеживание состояния используемых приложений и сканирование ПО на наличие слабых мест.

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

Протестируйте возможности Solar appScreener бесплатно! Оставьте заявку на сайте, и наши менеджеры свяжутся с вами, чтобы открыть пробный доступ к продукту.

ДРУГИЕ СТАТЬИ ПРОДУКТА

Еще больше о наших возможностях

Zero Day уязвимость: что такое уязвимость нулевого дня

Zero Day уязвимость: что такое уязвимость нулевого дня

Узнать больше
White Box-тестирование: что это такое, и когда применяется

White Box-тестирование: что это такое, и когда применяется

Узнать больше
Cross Site Scripting: что такое XSS-атаки и как от них защититься

Cross Site Scripting: что такое XSS-атаки и как от них защититься

Узнать больше