В популярной библиотеке 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. Однако обновление до исправленной версии остаётся рекомендуемым и наиболее комплексным решением для полного устранения этого вектора атак. Своевременное применение обновлений безопасности имеет критическое значение для поддержания стабильности и доступности веб-приложений, использующих популярные библиотеки обработки сетевых запросов.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-58754
- https://github.com/axios/axios/security/advisories/GHSA-4hjh-wcwx-xvwj
- https://github.com/axios/axios/pull/7011
- https://github.com/axios/axios/commit/945435fc51467303768202250debb8d4ae892593
- https://github.com/axios/axios/releases/tag/v1.12.0