CWE-89 (SQL-инъекция)

Характеристика уязвимости CWE-89

Распространенность уязвимости Высокая Последствия Потеря данных, обход безопасности
Стоимость восстановления Низкая Простота обнаружения Просто
Частота атаки Часто Осведомлённость атакующего Высокая

 

В настоящее время складывается представление, что ПО может делать все с данными: заносить данных в базу, извлекать их из базы данных, преобразовывать в информацию и пересылать в другое место для развлечения или получения прибыли. Если злоумышленники смогут контролировать SQL, который используется для управления базой данных, тогда вся ваша прибыль и развлечения достанутся им. Если вы используете SQL запросы в элементах управления безопасностью, таких как аутентификация, злоумышленники могут изменить логику этих запросов, чтобы обойти систему безопасности. Они могут изменить запрос, чтобы украсть, исказить, или иным образом изменить ваши базовые данные. Они даже могут красть данные по одному байту, если придется, и у них есть терпение и знания для этого. В 2011 году SQL- инъекция была причиной заражения многих известных компаний, в том числе Sony Pictures, PBS, MySQL.com, HBGary Federal, и многих других.

Возможность возникновения ошибки:

  • При проектировании и разработке структуры ПО
  • При внедрении
  • При  выполнении

Используемые платформы:

Языки — все

Классы технологий: сервер баз данных

Условия возникновения: Эта уязвимость обычно возникает в приложениях с большим количеством данных, которые сохраняют входящие данные пользователей в базе данных

Общие последствия

Доступ к данным приложений: поскольку SQL базы данных обычно содержат критичную информацию, нарушение конфиденциальности – частая проблема, связанная с уязвимостью SQL-инъекции

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

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

Вероятность эксплуатации — очень высокая

Факторы, способствующие эксплуатации:

Приложение динамически генерирует запросы, содержащие входящие данные пользователей

 

Методы обнаружения

 

Автоматический статический анализ

Данная уязвимость обычно может быть обнаружена инструментами автоматического статического анализа. Многие из них используют анализ потока данных или методики на основе ограничений для минимизации числа ложных срабатываний.

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

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

Это не идеальное решение, поскольку 100% достоверность и охват на практике недостижимы.

 

Автоматический динамический анализ

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

Данный метод имеет среднюю эффективность.

Ручной анализ

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