Типы уязвимостей, оценка критичности

Типы уязвимостей, оценка критичности

NETRUNNER GROUP

Приветствую тут, NETRUNNER! Сегодня мы поговорим о типах уязвимости и оценке их критичности. То, с чего стоит начать, это то, какие бывают типы уязвимости.


Они делятся на такие типы, как:

Нарушения безопасности доступа к памяти, что включает в себя:

Переполнения буфера

Висячие указатели

Ошибки проверки вводимых данных, такие как:

Ошибки форматирующей строки

Неверная поддержка интерпретации метасимволов командной оболочки

SQL-инъекция

Инъекция кода

Межсайтовый скриптинг в веб-приложениях

Межсайтовый скриптинг при наличии SQL-инъекции

Уязвимость нулевого дня

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

Ну, что приступим к более близкому знакомству и начнем с такой уязвимости, как переполнение буфера. Это может возникать, когда программа получает больше данных, чем она может записать в память. Это может привести к таким проблемам, как отказ в обслуживании (DoS), повышение привилегий, крах программы или системы и использование произвольного кода. Вот примеры атак.


Здесь используется функция gets, которая считывает строку из стандартного ввода и сохраняет ее в буфер buf. Проблема в том, что gets не проверяет размер вводимых данных, поэтому если пользователь введет больше символов, чем размер буфера BUFSIZE, произойдет переполнение. Это означает, что данные начнут записываться за пределами выделенного буфера, перезаписывая другие данные или даже исполняемый код. Это может привести к краху программы, DoS-атакам и даже выполнению произвольного кода.


В этом примере данные считываются в буфер in с помощью функции read, которая может считать до MAX_SIZE-1 байт из стандартного ввода. Затем программа запрашивает количество байт для копирования в переменную bytes. Если значение bytes больше, чем фактический размер буфера in, функция memcpy скопирует больше данных, чем выделено для буфера buf, что приведет к переполнению. Это также может привести к тем же последствиям, что и в первом примере.

SQL-инъекция - это тип уязвимости, который возникает, когда злоумышленник вводит входные данные, которые затем интерпретируются как команды SQL, вместо того чтобы рассматриваться как обычные данные. Это позволяет злоумышленнику влиять на выполнение SQL-запросов базы данных. Для этого используются такие уловки, как использование ‘ ‘ or — .

‘ ‘: Это пустая строка, которая может быть частью SQL-запроса.

  • -: Это комментарий в SQL, который используется для игнорирования оставшейся части строки запроса.

Например, мы вводим такой код


Если перевести это в запрос SQL, то у нас получится такая строка (рис 4).


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

Также существуют такие программы, как SQL map, которые позволяют автоматически проверять сайт на наличие SQL-инъекции


На сегодняшний день одной из наиболее распространенных уязвимостей является XSS (межсайтовый скриптинг), которая часто обнаруживается в веб-приложениях. Это происходит потому, что сайт выполняет код, который был внедрен злоумышленником. Один из самых простых способов продемонстрировать эту уязвимость - использование JavaScript. Пример синтаксиса для тестирования, который можно легко реализовать. Рис6


Этот код может привести к следующим последствиям. Рис7

Ну и самое главное ради чего мы все сегодня собрались тут то это как же все такие происходит оценка уязвимости. Для оценки уязвимости необходимо учитывать не только её тип и потенциальные последствия, но и контекст среды, в которой она возникает. Это включает в себя уровень доступа к системе, возможные меры защиты и возможности атакующего. Исходя из всего этого, можно провести адекватную оценку уровня критичности CVSS уязвимости и разработать соответствующие меры по её предотвращению или минимизации рисков, а так же присвоить CVE.

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

Report Page