Критическая уязвимость в Axios позволяет атаковать Node.js-приложения через обработку данных

vulnerability

В популярной библиотеке Axios для выполнения HTTP-запросов обнаружена серьёзная уязвимость, позволяющая злоумышленникам вызывать отказ в обслуживании Node.js-приложений через умышленно искажённые data-URL. Проблема, получившая идентификатор CVE-2025-58754, затрагивает все версии Axios до 1.11.0 и оценивается по шкале CVSS 3.1 в 7.5 баллов, что соответствует высокому уровню опасности.

Детали уязвимости

Уязвимость возникает из-за некорректной обработки URL-адресов со схемой "data:" в среде Node.js. Когда библиотека встречает такой URL, она пропускает стандартную процедуру обработки HTTP-запросов и вместо этого декодирует всю полезную нагрузку в формате Base64 непосредственно в память с помощью выделения буфера. Этот процесс полностью игнорирует установленные ограничения maxContentLength и maxBodyLength, которые в нормальных условиях защищают от обработки слишком больших HTTP-ответов.

Исследователь безопасности AmeerAssadi, обнаруживший и сообщивший об уязвимости, продемонстрировал, что злоумышленники могут создавать специально сформированные data-URL, содержащие чрезвычайно большие полезные нагрузки в кодировке Base64. При обработке уязвимыми версиями Axios эти URL заставляют процесс Node.js выделять неограниченное количество памяти, что в конечном итоге приводит к её исчерпанию и аварийному завершению работы приложения.

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

Для эксплуатации уязвимости требуется минимальные предпосылки, что делает её особенно опасной. Злоумышленникам необходимо лишь иметь возможность передавать URL-адреса в приложения, использующие Axios в среде Node.js. Не требуется аутентификация, взаимодействие с пользователем или сложные цепочки атак. Атака работает независимо от того, запрашивают ли приложения потоковые ответы, поскольку вредоносная полезная нагрузка декодируется в память до начала какой-либо потоковой передачи.

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

Команда разработчиков Axios устранила эту уязвимость в версии 1.12.0, реализовав надлежащую проверку размера для полезных нагрузок data-URL. Организациям, использующим Axios, следует немедленно обновить библиотеку до версии 1.12.0 или более поздней, чтобы устранить проблему безопасности. Исправленная версия применяет те же ограничения на длину содержимого к data-URL, которые применяются к стандартным HTTP-ответам.

Для организаций, которые не могут немедленно выполнить обновление, временные решения включают реализацию проверки на уровне приложения для отклонения или очистки data-URL до их обработки Axios. Однако обновление до исправленной версии остаётся рекомендуемым и наиболее комплексным решением для полного устранения этого вектора атак. Своевременное применение обновлений безопасности имеет критическое значение для поддержания стабильности и доступности веб-приложений, использующих популярные библиотеки обработки сетевых запросов.

Ссылки

Комментарии: 0