Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

Вебинар: Что скрывают Blender и YTsaurus? Вся правда о технологии статического анализа - 30.05

>
>
>
Static Application Security Testing (SA…

Static Application Security Testing (SAST)

30 Сен 2022

Определение

Статическое тестирование безопасности приложений (SAST) – это набор технологий, предназначенных для анализа исходного кода ПО в области безопасности. Анализ заключается в поиске участков кода, содержащих потенциальные уязвимости.

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

SAST помогает находить потенциальные уязвимости на ранних этапах разработки ПО. Именно поэтому он является частью цикла безопасной разработки (Secure SDLC) и DevSecOps-пайплайна.

Некоторые уязвимости, которые ищут SAST-инструменты:

  • код, напрямую использующий информацию, введенную пользователем (например: XSS, SQLI, XXE, path traversal);
  • использование устаревших версий криптографических протоколов;
  • хранение паролей в коде;

Наиболее распространённые и опасные дефекты безопасности можно найти в списке OWASP Top 10.

Для понимания принципов функционирования SAST рассмотрим пример обнаружения SQL-инъекции:

void ProcessRequest(HttpRequest request) 
{ 
  string name = request.Form["name"];

  string sql = $"SELECT * FROM Users WHERE name='{name}'";
  using (var command = new SqlCommand(sql,_connection))
  {
    ....
  }
  .... 
}

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

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

Преимущества и недостатки SAST

Преимущества:

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

Недостатки:

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

Дополнительные ссылки

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form