Lỗ hổng mới trong Axios có thể khiến hàng loạt website “ngưng thở”

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
112
1.108 bài viết
Lỗ hổng mới trong Axios có thể khiến hàng loạt website “ngưng thở”
Một lỗ hổng nguy hiểm vừa được phát hiện trong Axios, thư viện phổ biến dành cho Node.js, vốn được hàng triệu website và ứng dụng dùng để gửi nhận dữ liệu qua mạng. Vấn đề này có thể khiến máy chủ bị treo hoặc sập hẳn chỉ bằng một yêu cầu độc hại.

1758013480267.png

Axios thường được dùng để gọi dữ liệu từ internet. Tuy nhiên, các nhà nghiên cứu phát hiện khi xử lý một dạng liên kết đặc biệt có tiền tố "data:", Axios lại không giới hạn dung lượng dữ liệu được nạp vào bộ nhớ. Điều này đồng nghĩa rằng, nếu kẻ tấn công gửi một đường link "data:" cực lớn, máy chủ sẽ phải “ôm” hết dữ liệu vào bộ nhớ cho đến khi quá tải và sập.

Lỗ hổng được ghi nhận dưới mã GHSA-4hjh-wcwx-xvwj/ CVE-2025-58754 và ảnh hưởng tới các phiên bản trước 1.11.0. Được công bố trên kho GitHub của Axios, được mô tả rằng khi Axios nhận một URL bắt đầu bằng "data:" nó không đi qua đường gọi HTTP bình thường mà gọi trình giải mã nội bộ để chuyển Base64 thành một Buffer/Blob trong bộ nhớ. Điểm yếu là đường đi này bỏ qua mọi giới hạn kích thước như maxContentLength hoặc maxBodyLength là các cơ chế vốn dùng để ngăn ứng dụng tiêu thụ quá nhiều bộ nhớ khi tải về nội dung HTTP. Do đó, một "data: URL" được tạo cố ý với payload lớn có thể ép quá bộ nhớ heap và làm crash ứng dụng.

Kịch bản tấn công thực tế không cần quyền đặc biệt, nếu ứng dụng chấp nhận URL từ người dùng và chuyển trực tiếp cho Axios (Ví dụ: dịch vụ preview link, fetch tài nguyên remote), kẻ tấn công chỉ cần chèn một "data: URL" dài vào input để gây Denial-of-Service. Nghiên cứu PoC đã chứng minh việc dùng chuỗi Base64 ~120 MB có thể làm sập tiến trình Node với heap bị giới hạn. Ngoài ra, mặc dù ứng dụng có responseType: 'stream', đường đi "data:" vẫn bỏ qua cơ chế streaming, nên chu trình bảo vệ bị vô hiệu hóa.

Với những dịch vụ Node.js xử lý URL do người dùng cung cấp (API preview, crawler, proxy), hậu quả có thể là sập dịch vụ, mất khả năng phục vụ hoặc tạo cơ hội cho tấn công tiếp theo (downtime mở đường cho phức tạp hơn). Vì lỗ hổng gây crash chứ không phải chạy mã tùy ý, đây là một lỗi từ chối dịch vụ nhưng vẫn mang tính nguy hiểm cao ở môi trường sản xuất. Nhiều nguồn khuyến cáo cập nhật lên Axios ≥1.12.0 ngay lập tức.

Những điểm cần lưu ý thêm
  • Các cấu hình như maxContentLength/maxBodyLength chỉ bảo vệ đường HTTP thông thường, không bảo vệ đường "data:"; kiểm tra mọi đường vào dữ liệu vẫn là việc cần làm.
  • Ứng dụng nhận URL từ người dùng nên luôn nghi ngờ "data:" scheme và xử lý riêng (thay vì để thư viện tự động giải mã).
  • Việc áp quota bộ nhớ ở cấp container/process có thể giảm thiệt hại nhưng không thay thế vá mã. GitHub
Lỗ hổng này được đánh giá là nghiêm trọng vì:
  • Kẻ xấu không cần quyền đặc biệt, chỉ cần gửi một đường link độc hại.
  • Máy chủ có thể bị ngưng trệ hoàn toàn, ảnh hưởng đến website, dịch vụ trực tuyến hoặc hệ thống doanh nghiệp.
  • Rủi ro càng cao nếu ứng dụng cho phép người dùng nhập đường link rồi xử lý bằng Axios (ví dụ: dịch vụ xem trước link, API lấy dữ liệu web...).
Khuyến cáo từ các chuyên gia
  • Nâng cấp Axios lên 1.12.0 hoặc cao hơn ngay.
  • Nếu chưa thể nâng cấp hãy chặn hoặc lọc bỏ liên kết "data:" từ phía người dùng.
  • Thiết lập giới hạn bộ nhớ cho container/process để giảm phạm vi thiệt hại.
  • Thực hiện kiểm tra đầu vào (input validation) ở rìa hệ thống, không phụ hoàn toàn vào thư viện.
  • Đánh giá lại các endpoint chấp nhận URL do người dùng cung cấp (link preview, fetch), thêm tầng xác thực hoặc sandboxing.
  • Giám sát ứng dụng để kịp thời ngăn chặn khi có dấu hiệu bất thường.
Axios được dùng rất rộng rãi, nên dù bạn là lập trình viên cá nhân hay doanh nghiệp lớn, việc cập nhật bản vá là điều bắt buộc nếu không muốn website của mình “ra đi” chỉ vì một đường link tưởng chừng vô hại.
WhiteHat
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
axios cve-2025-58754 node.js
Bên trên