Lỗ hổng RCE nghiêm trọng (CVSS 10.0) đe dọa các ứng dụng web React/Next.js của tổ chức

Vào đầu tháng 12/2025, cộng đồng an ninh mạng đã phát hiện và công bố chuỗi lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng trong React và Next.js, được đặt tên là React2Shell. Các lỗ hổng CVE-2025-55182 (React) và CVE-2025-66478 (Next.js) đều đạt điểm CVSS tối đa 10.0/10 (Critical), cho phép kẻ tấn công thực thi mã tùy ý trên máy chủ mà không cần xác thực, đặc biệt nguy hiểm với các ứng dụng đang sử dụng và App Router trong Next.js.


1. Nguyên nhân gốc rễ (Root Cause)

Lỗ hổng xuất phát từ lỗi “logical deserialization” – xử lý giải mã dữ liệu logic không an toàn – bên trong gói react-server khi xử lý giao thức “Flight” của React Server Components (RSC).

  • • Cơ chế: React Server Functions cho phép client gọi một hàm trên server. React dịch yêu cầu từ client thành HTTP request; phía server sẽ giải mã (deserialize) request này để thực thi hàm tương ứng.

  • • Điểm yếu: Server xử lý RSC payload (dữ liệu tải trọng) không an toàn. Khi nhận một payload sai lệch hoặc được chế tạo đặc biệt bởi kẻ tấn công, server không kiểm tra đầy đủ cấu trúc dữ liệu, tạo điều kiện cho dữ liệu độc hại tác động vào luồng thực thi.

  • • Vị trí lỗi: Lỗi được xác định nằm trong hàm requireModule của gói react-server-dom-webpack, hàm này chịu trách nhiệm phân giải và tải các hàm mà client muốn gọi. Trước khi được vá, hàm này không kiểm tra chặt chẽ tính hợp lệ của module cần nạp.

2. Cách thức tấn công (Attack Vector)

Kẻ tấn công có thể khai thác lỗ hổng này một cách dễ dàng và ổn định, với tỷ lệ thành công rất cao trong các thử nghiệm.

  • • Không cần đăng nhập: Đây là lỗ hổng RCE không cần xác thực. Kẻ tấn công chỉ cần có quyền truy cập mạng tới server để gửi request.

  • • Thao tác đơn giản: Chỉ cần gửi một HTTP request được chỉnh sửa (specially crafted) đến bất kỳ endpoint nào có sử dụng Server Function (API, web endpoint…).

  • • Ảnh hưởng trên cấu hình mặc định: Lỗ hổng tồn tại ngay cả trên cấu hình mặc định của framework, ví dụ các ứng dụng được tạo bằng create-next-app và build cho production mà không sửa đổi code.

  • • Thực thi mã độc: Payload độc hại có thể kích hoạt các hàm dễ bị tổn thương (ví dụ qua “Server Action” sử dụng vm.runInThisContext), từ đó cho phép kẻ tấn công chạy mã JavaScript tùy ý với quyền hạn của tiến trình Node.js trên server.

3. Phạm vi ảnh hưởng

Theo dữ liệu từ các hãng nghiên cứu bảo mật, khoảng 39% môi trường đám mây được khảo sát có chứa các instance dễ bị tấn công. Bất kỳ thư viện hoặc framework nào tích hợp React Server Components (RSC) đều có khả năng bị ảnh hưởng.

Các thành phần bị ảnh hưởng bao gồm:

  • • React:

    • ◦ Các gói: react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack.

    • ◦ Phiên bản bị ảnh hưởng: 19.0.0, 19.1.0, 19.1.1, 19.2.0.

  • • Next.js:

    • ◦ Các phiên bản sử dụng App Router, bao gồm:

      • ■ Nhánh 15.x, 16.x.

      • ■ Các bản Canary từ 14.3.0 trở lên.

  • • Thành phần khác:

    • ◦ Vite RSC plugin, Parcel RSC plugin, React Router RSC preview, RedwoodSDK, Waku và các framework/bundler khác có tích hợp RSC.

Lưu ý: Google Cloud đã xác nhận các hình ảnh hệ điều hành công khai (public OS images) cho Compute Engine không bị ảnh hưởng theo mặc định, vì không cài sẵn các gói React/Next.js. Tuy nhiên, nếu người dùng tự triển khai ứng dụng React/Next.js trên các môi trường này thì vẫn chịu ảnh hưởng và cần vá lỗi.

4. Biện pháp phòng tránh và khắc phục (Mitigation)

Đây là lỗ hổng cực kỳ khẩn cấp, các tổ chức cần ưu tiên xử lý và vá lỗi ngay.

4.1. Cập nhật bản vá (giải pháp triệt để nhất)

Giải pháp quan trọng nhất là nâng cấp lên các phiên bản đã được vá lỗi (“Hardened releases”).

Đối với Next.js, hãy chạy các lệnh nâng cấp tương ứng với phiên bản đang dùng:

npm install next@15.0.5 // cho 15.0.x npm install next@15.1.9 // cho 15.1.x npm install next@15.2.6 // cho 15.2.x npm install next@15.3.6 // cho 15.3.x npm install next@15.4.8 // cho 15.4.x npm install next@15.5.7 // cho 15.5.x npm install next@16.0.7 // cho 16.0.x

Nếu đang dùng Next.js Canary (14.3.0 trở lên), hãy tạm thời hạ cấp về phiên bản stable 14.x mới nhất:

npm install next@14

Đối với React Router và các framework khác (Waku, RedwoodSDK, Vite, Parcel…): cần nâng cấp các gói liên quan đến React và RSC:

npm install react@latest npm install react-dom@latest npm install react-server-dom-parcel@latest npm install react-server-dom-webpack@latest npm install @vitejs/plugin-rsc@latest

Khuyến nghị rà soát toàn bộ package.json để đảm bảo không còn phiên bản dễ bị tổn thương trong môi trường production.

4.2. Các biện pháp giảm thiểu tạm thời (Workarounds)

Trong trường hợp chưa thể cập nhật ngay, Quý Khách hàng có thể áp dụng một số biện pháp giảm thiểu:

  • • Sử dụng WAF:

    • ◦ Triển khai các rules trên Web Application Firewall (WAF) để chặn payload khai thác liên quan đến CVE-2025-55182 và CVE-2025-66478.

    • ◦ Có thể tham khảo các bộ rule được khuyến nghị bởi các nhà cung cấp WAF lớn (Cloud, CDN, security vendor…).

  • • Giám sát mạng:

    • ◦ Theo dõi lưu lượng HTTP đến các endpoint Server Function / RSC.

    • ◦ Cảnh báo khi phát hiện các request có cấu trúc bất thường, kích thước bất thường hoặc chứa payload nghi vấn.

  • • Hạn chế truy cập:

    • ◦ Cân nhắc hạn chế tạm thời quyền truy cập mạng tới các ứng dụng bị ảnh hưởng (ví dụ chỉ mở cho mạng nội bộ hoặc VPN) cho đến khi áp dụng xong bản vá.

Lưu ý: Các biện pháp trên chỉ có tác dụng giảm thiểu rủi ro tạm thời, không thay thế việc vá lỗi.

5. Khuyến nghị từ HPT

Trước mức độ nghiêm trọng của lỗ hổng React2Shell, Trung tâm Giám sát An ninh mạng HSOC khuyến nghị:

  1. 1. Kiểm kê ngay tất cả hệ thống, dịch vụ, ứng dụng đang sử dụng React, Next.js hoặc các framework có tích hợp React Server Components.

  2. 2. Xác định phiên bản và đánh giá mức độ phơi bày ra Internet hoặc mạng bên ngoài.

  3. 3. Lên kế hoạch nâng cấp khẩn cấp, ưu tiên các hệ thống:

    • ◦ Phục vụ khách hàng bên ngoài.

    • ◦ Xử lý dữ liệu quan trọng hoặc nhạy cảm.

  4. 4. Kích hoạt giám sát nâng cao, kết hợp WAF, SIEM, SOC để phát hiện sớm các dấu hiệu khai thác..


  • Nguồn: Tổng hợp từ các tài liệu công khai trên các trang React, Wiz Research, The Hacker News, LinkedIn, React2Shell.