Lỗ hổng Axios nghiêm trọng: Nguy cơ DoS qua data URL

Một lỗ hổng Axios nghiêm trọng đã được phát hiện trong thư viện HTTP client Axios phổ biến, cho phép kẻ tấn công làm sập các ứng dụng Node.js thông qua việc xử lý URL dữ liệu độc hại. Lỗi này, được theo dõi dưới mã định danh CVE-2025-58754, ảnh hưởng đến tất cả các phiên bản Axios trước 1.11.0 và được gán điểm CVSS 3.1 là 7.5, cho thấy mức độ nghiêm trọng cao.
CVE nghiêm trọng này xuất phát từ việc Axios xử lý không đúng cách các URL có scheme “data:” trong môi trường Node.js. Khi thư viện gặp một URL như vậy, nó sẽ bỏ qua quy trình xử lý HTTP thông thường và thay vào đó giải mã toàn bộ payload Base64 trực tiếp vào bộ nhớ bằng cách cấp phát Buffer.
Phân tích Kỹ thuật Lỗ hổng Axios: Cơ chế Vượt qua Giới hạn Bộ nhớ
Cơ chế Vượt qua Giới hạn Kích thước
Quá trình giải mã data: URL hoàn toàn bỏ qua các giới hạn an toàn như maxContentLength và maxBodyLength. Những giới hạn này thường được cấu hình để bảo vệ ứng dụng khỏi các phản hồi HTTP có kích thước quá lớn. Bằng cách không tuân thủ các cài đặt này, lỗ hổng Axios tạo ra một kẽ hở nghiêm trọng.
Nhà nghiên cứu bảo mật AmeerAssadi đã phát hiện và báo cáo lỗ hổng bảo mật Axios này. Ông đã chứng minh rằng kẻ tấn công có thể tạo ra các URL dữ liệu độc hại chứa các payload mã hóa Base64 cực lớn.
Khi được xử lý bởi các cài đặt Axios dễ bị tấn công, các URL này buộc tiến trình Node.js phải cấp phát một lượng bộ nhớ không giới hạn, dẫn đến tình trạng hết bộ nhớ (out-of-memory) và cuối cùng là điều kiện từ chối dịch vụ (Denial of Service – DoS).
Tác động và Điều kiện Khai thác Lỗ hổng
Cuộc tấn công đặc biệt đáng lo ngại vì nó ảnh hưởng đến các ứng dụng ngay cả khi các nhà phát triển đã triển khai cấu hình streaming và cơ chế bảo vệ bộ nhớ phù hợp. Lỗ hổng Axios này vượt qua hoàn toàn các biện pháp bảo vệ này bằng cách hoạt động bên ngoài luồng xử lý phản hồi HTTP thông thường.
Việc khai thác yêu cầu các điều kiện tiên quyết tối thiểu, khiến lỗ hổng Axios này trở nên đặc biệt nguy hiểm. Kẻ tấn công chỉ cần khả năng cung cấp URL cho các ứng dụng sử dụng Axios trong môi trường Node.js.
Không cần xác thực, tương tác người dùng hoặc chuỗi tấn công phức tạp. Cuộc tấn công vẫn hoạt động bất kể ứng dụng có yêu cầu phản hồi streaming hay không, vì payload độc hại được giải mã vào bộ nhớ trước khi bất kỳ streaming nào xảy ra.
Các minh chứng Proof-of-Concept (PoC) cho thấy các URL dữ liệu tương đối nhỏ cũng có thể tiêu thụ hàng trăm megabyte bộ nhớ ngay lập tức. Trong các môi trường bị hạn chế tài nguyên hoặc các ứng dụng có giới hạn kích thước heap, điều này có thể kích hoạt lỗi ứng dụng ngay lập tức.
Lỗ hổng Axios ảnh hưởng đến tính khả dụng của các ứng dụng mà không làm ảnh hưởng đến tính bảo mật hoặc toàn vẹn dữ liệu. Điều này có nghĩa là dữ liệu không bị rò rỉ hoặc bị sửa đổi, nhưng dịch vụ của ứng dụng có thể bị gián đoạn hoàn toàn.
Ví dụ Minh họa Data URL Độc hại (Khái niệm)
Một data: URL độc hại có thể có cấu trúc như sau. Kẻ tấn công sẽ tạo ra một chuỗi Base64 cực dài để gây cạn kiệt bộ nhớ:
data:text/plain;base64,PASTE_EXTREMELY_LARGE_BASE64_STRING_HERE
Khi Axios xử lý URL này mà không có kiểm tra kích thước, nó sẽ cố gắng giải mã và cấp phát bộ nhớ cho toàn bộ chuỗi Base64, dẫn đến lỗi out-of-memory.
Để tìm hiểu thêm về cách Axios xử lý các data: URL và chi tiết về lỗ hổng Axios này, bạn có thể tham khảo báo cáo bảo mật chính thức trên GitHub: GHSA-4hjh-wcwx-xvwj.
Biện pháp Khắc phục và Bản vá Bảo mật
Nâng cấp Phiên bản Axios
Nhóm phát triển Axios đã giải quyết lỗ hổng Axios này trong phiên bản 1.12.0 bằng cách triển khai xác thực kích thước phù hợp cho các payload của data: URL. Các tổ chức sử dụng Axios nên nâng cấp ngay lập tức lên phiên bản 1.12.0 hoặc mới hơn để khắc phục sự cố bảo mật này.
Phiên bản đã vá lỗi áp dụng các hạn chế về độ dài nội dung tương tự cho data: URL như các hạn chế được áp dụng cho các phản hồi HTTP tiêu chuẩn. Đây là bản vá bảo mật quan trọng để đảm bảo an toàn cho ứng dụng của bạn.
Để nâng cấp Axios lên phiên bản an toàn, hãy sử dụng lệnh sau trong thư mục dự án Node.js của bạn:
npm install axios@latest
Hoặc nếu bạn đang sử dụng Yarn:
yarn upgrade axios
Giải pháp Tạm thời và Khuyến nghị
Đối với các tổ chức không thể nâng cấp ngay lập tức, các giải pháp tạm thời bao gồm triển khai xác thực cấp ứng dụng. Việc này nhằm mục đích từ chối hoặc làm sạch các data: URL trước khi chúng được Axios xử lý.
Tuy nhiên, nâng cấp lên phiên bản đã vá lỗi vẫn là giải pháp được khuyến nghị và toàn diện nhất để loại bỏ hoàn toàn vector tấn công này. Việc trì hoãn việc áp dụng bản vá bảo mật này có thể khiến hệ thống của bạn gặp rủi ro DoS liên tục.
Để đảm bảo an toàn thông tin và tránh các cuộc tấn công mạng tiềm tàng, việc thường xuyên theo dõi các cảnh báo CVE và cập nhật thư viện là vô cùng cần thiết. Lỗ hổng Axios này là một minh chứng rõ ràng về tầm quan trọng của việc quản lý lỗ hổng hiệu quả.









