React2Shell: RCE nghiêm trọng trong React và Next.js là gì?
Một lỗ hổng thực thi mã từ xa (Remote Code Execution – RCE) mới, được cộng đồng gọi là React2Shell, đã được phát hiện trong hệ sinh thái React Server Components (RSC) dùng bởi React 19 và các framework như Next.js. Vấn đề này bao gồm hai lỗi nghiêm trọng đang được theo dõi với mã CVE-2025-55182 và CVE-2025-66478.
Vì RSC được tích hợp trong rất nhiều stack React hiện đại, một số ứng dụng có thể bị phơi nhiễm ngay cả khi không trực tiếp sử dụng Server Functions. Đánh giá ban đầu cho thấy một tỷ lệ đáng kể môi trường cloud chứa các thành phần đang chạy phiên bản dễ bị tấn công.
Bài viết này nhằm giải thích React2Shell là gì, những phiên bản và framework nào bị ảnh hưởng, lỗ hổng hoạt động ra sao (ở mức độ khái quát), và các bước mà đội kỹ thuật – bảo mật cần thực hiện ngay bây giờ.
React2Shell (CVE-2025-55182 & CVE-2025-66478) là gì?
React2Shell là tên gọi chung cho hai lỗ hổng có liên quan chặt chẽ, ảnh hưởng đến React Server Components (RSC) và các framework triển khai giao thức RSC “Flight”. React2Shell cho phép:
- Thực thi mã từ xa (RCE) không cần xác thực trên các server xử lý payload RSC.
- Thực thi JavaScript do kẻ tấn công kiểm soát trong quá trình deserialization.
- Khai thác chỉ với một request HTTP được chế tác, không cần login và không cần cấu hình đặc biệt ở ứng dụng.
Hành vi này bắt nguồn từ cách giao thức RSC Flight xử lý các payload đã được serialize trong một số phiên bản React và Next.js. Khi kẻ tấn công gửi payload bị chỉnh sửa ác ý, logic deserialization trên server có thể bị thao túng theo cách dẫn đến thực thi mã tùy ý.
Nói thực tế: một app dễ bị tấn công có thể cho phép kẻ tấn công chạy bất kỳ mã nào trên server của bạn chỉ với một HTTP request.
CVE-2025-55182 (React – CVSS 10.0)

CVE-2025-55182 là lỗ hổng trong phần lõi React Server Components – cụ thể là triển khai react-server / giao thức RSC “Flight”. Lỗi này áp dụng cho các package:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
Các phiên bản bị ảnh hưởng:
19.0.019.1.019.1.119.2.0
CVE-2025-66478 (Next.js – CVSS 10.0)
Next.js kế thừa triển khai RSC Flight dễ bị tấn công nên cũng bị ảnh hưởng khi dùng App Router.
Các phiên bản bị ảnh hưởng gồm:
>= 14.3.0-canary.77- Toàn bộ nhánh 15.x trước các bản đã vá:
15.0.5,15.1.9,15.2.6,15.3.6,15.4.8,15.5.7
- Nhánh 16.x trước
16.0.7
Đội Next.js cũng khuyến nghị tránh dùng các bản canary cũ và nâng cấp lên phiên bản stable đã vá.
Lỗ hổng React2Shell hoạt động như thế nào?
Vấn đề cốt lõi nằm ở deserialization không an toàn bên trong giao thức RSC Flight:
- React Server Components trao đổi dữ liệu bằng một định dạng serialize tùy chỉnh (gọi là “Flight”).
- Server nhận payload RSC, deserialize cấu trúc này, rồi gọi logic RSC tương ứng.
- Trong các phiên bản dễ bị tấn công, một số loại payload bị lỗi định dạng không được kiểm tra/validate đúng cách.
- Kẻ tấn công có thể thao túng cách server diễn giải các giá trị sau khi deserialize, từ đó kích hoạt thực thi JavaScript tùy ý.

Diện tấn công có một số đặc điểm đáng chú ý:
- Không cần xác thực: không cần tài khoản, không cần session đang hoạt động.
- Từ xa hoàn toàn: kích hoạt qua traffic HTTP/HTTPS bình thường.
- Có thể tác động ngay cả khi app không định nghĩa Server Functions, do nhiều framework sẽ ngầm dùng đường đi RSC trong render/routing.
- Độ ổn định cao: thử nghiệm trong môi trường kiểm soát cho thấy tỉ lệ khai thác thành công gần như tuyệt đối.
Phạm vi framework và phiên bản bị ảnh hưởng ngoài React lõi và Next.js
Bất kỳ framework hay bundler nào tích hợp RSC triển khai theo cách dễ tổn thương đều có thể bị ảnh hưởng. Bao gồm:
- Next.js (App Router)
- Vite RSC plugin
- Parcel RSC plugin
- React Router RSC preview / RSC mode
- RedwoodJS / RedwoodSDK
- Waku
Ngay cả những ứng dụng không định nghĩa Server Functions vẫn có thể đi qua code path RSC dễ bị tấn công do cách framework xử lý nội bộ việc render và routing.
Các ứng dụng chỉ dùng React phía client, không dùng RSC được cho là không bị ảnh hưởng.
Ảnh hưởng tới môi trường cloud lớn đến mức nào?

Đánh giá ban đầu từ nhà cung cấp cloud và hãng bảo mật cho thấy:
- Khoảng 39% môi trường cloud có instance chạy phiên bản React/Next.js dễ bị tấn công.
- Next.js xuất hiện trong tỷ lệ rất lớn các ứng dụng public-facing trong các môi trường đó.
- Các scan Internet diện rộng cho thấy số lượng lớn server production chạy stack React/Next.js hiện đại, hàm ý bề mặt tấn công tiềm năng rất đáng kể.
Kết hợp giữa khai thác không cần xác thực, độ tin cậy cao, và mức độ phổ biến của các framework hỗ trợ RSC, React2Shell trở thành vấn đề ưu tiên cao trên toàn hệ sinh thái.
Nhà cung cấp cloud và edge đang làm gì để hỗ trợ?
Một số nhà cung cấp cloud/edge đã triển khai biện pháp phòng vệ tạm thời để giảm rủi ro trong khi các tổ chức vá lỗi:
- Cloudflare: triển khai các rule WAF quản lý nhằm nhận diện và chặn các pattern traffic liên quan RSC đáng ngờ.
- Vercel (nơi host rất nhiều ứng dụng Next.js): bổ sung lớp kiểm tra request cho payload RSC, giúp lọc bớt input lỗi định dạng trước khi chạm vào server ứng dụng.
- Các cloud lớn như AWS và Google Cloud Platform đã phát hành advisory, kêu gọi nâng cấp gấp và cung cấp hướng dẫn cụ thể theo từng môi trường.
Các biện pháp này chỉ nên coi là lớp bảo vệ tạm thời, không thay thế cho việc cập nhật bản vá chính thức.
Kiểm tra ứng dụng của bạn có bị ảnh hưởng không?
Bạn có thể thực hiện đánh giá nhanh ban đầu theo các bước:
- Kiểm kê việc sử dụng RSC
- Tìm các package
react-server-dom-*trongpackage.json, lockfile,… - Xác định service nào dùng Next.js App Router.
- Tìm các package
- So sánh phiên bản với dải dễ bị tấn công đã biết
- React RSC packages: dễ bị tấn công ở
19.0.0–19.2.0; bản vá bắt đầu từ19.0.1 / 19.1.2 / 19.2.1. - Next.js: dễ bị tấn công ở các dải
14.3.0-canary,15.x,16.xnêu trên; bản vá ở16.0.7và các bản 15.x tương ứng đã được sửa.
- React RSC packages: dễ bị tấn công ở
- Kiểm tra phụ thuộc chuyển tiếp (transitive dependencies)
- Dùng SCA (Software Composition Analysis) hoặc tool scan phụ thuộc để phát hiện việc kéo
react-server-*qua dependency gián tiếp.
- Dùng SCA (Software Composition Analysis) hoặc tool scan phụ thuộc để phát hiện việc kéo
- Xem lại thiết lập của nhà cung cấp hosting
- Những nền tảng tối ưu cho RSC (ví dụ dịch vụ Next.js quản lý) có thể bật route RSC mặc định, khiến app đi qua code path dễ bị tấn công ngay cả khi bạn không chủ động cấu hình.
React2Shell: Đã bị khai thác ngoài đời thực
Sau đợt công bố ban đầu của CVE-2025-55182, nhiều nguồn tin tình báo bảo mật đã xác nhận hoạt động khai thác React2Shell đang diễn ra, biến lỗ hổng từ nguy cơ lý thuyết thành mối đe dọa thực tế.
Theo báo cáo mới từ AWS, các nỗ lực khai thác bắt đầu chỉ vài giờ sau khi thông tin được công bố, với các nhóm có liên hệ Trung Quốc như Earth Lamia và Jackpot Panda bị quan sát tấn công môi trường dễ bị tổn thương thông qua hạ tầng honeypot AWS MadPot. Các đợt tấn công ban đầu bao gồm:
- Tự động trinh sát (reconnaissance).
- Thử nghiệm, tinh chỉnh payload thủ công.
- Thử lệnh kiểm tra thực thi, ghi file, truy cập thông tin nhạy cảm (như credential).
Hoạt động khai thác hiện tại trông như thế nào?
Dữ liệu từ GreyNoise cho thấy lưu lượng khai thác tự động lan rộng, chủ yếu do:
- Tool script và hạ tầng gắn với botnet, framework scan.
- Kẻ tấn công dùng:
- Lệnh PowerShell kiểm tra thực thi (kiểu “proof-of-execution” với phép toán đơn giản).
- Stager đã mã hóa.
- Kỹ thuật bypass AMSI.

Các pattern này phù hợp với bộ kit khai thác phổ biến. GreyNoise cũng quan sát thấy dấu hiệu ban đầu lỗ hổng này đang được tích hợp vào Mirai và các module khai thác botnet khác, cho thấy chiến dịch cơ hội (opportunistic campaign) đã bắt đầu mở rộng quy mô.
Dữ liệu phơi nhiễm toàn cầu làm rõ thêm mức độ nghiêm trọng:
- Censys thống kê ~2,15 triệu dịch vụ hướng Internet có thể bị ảnh hưởng trên RSC và các framework hỗ trợ RSC.
- Shadowserver ban đầu ghi nhận 77.664 IP dễ bị tấn công ngày 5/12, và vẫn còn 28.964 ngày 7/12, tập trung nhiều tại Mỹ, Đức, Trung Quốc.
- Palo Alto Networks Unit 42 xác nhận đã có xâm nhập ở hơn 30 tổ chức, một phần hoạt động liên quan đến nhóm UNC5174.

CISA thêm CVE-2025-55182 vào danh sách KEV
Vì đã có khai thác thực tế và mức độ nghiêm trọng cao, CISA đã thêm CVE-2025-55182 vào Known Exploited Vulnerabilities (KEV) Catalog, buộc các cơ quan liên bang dân sự Mỹ phải khắc phục trước ngày 26/12/2025. Động thái này là tín hiệu rõ ràng cho toàn bộ tổ chức: vá lỗi ngay lập tức và tăng cường phát hiện là bắt buộc, không còn là khuyến nghị.
Đội kỹ thuật và bảo mật cần làm gì NGAY BÂY GIỜ?
1. Áp dụng bản vá (đây là cách duy nhất khắc phục triệt để)
- React RSC packages: nâng lên
19.0.1 / 19.1.2 / 19.2.1hoặc mới hơn. - Next.js: nâng lên
16.0.7hoặc bản 15.x mới nhất đã được vá theo khuyến nghị. - Cập nhật bản mới nhất của plugin/framework hỗ trợ RSC (Vite, Parcel, RedwoodJS, Waku, v.v.).
2. Trong lúc vá, áp dụng biện pháp giảm thiểu tạm thời
- Giới hạn truy cập vào endpoint RSC/Server Function bằng firewall, security group, hoặc reverse proxy.
- Bật rule WAF có khả năng phát hiện payload RSC lỗi định dạng, đáng ngờ.
- Tăng log & giám sát cho mọi traffic liên quan RSC (đặc biệt là request lạ, từ IP bất thường).
Các bước này chỉ giúp giảm rủi ro, không thay thế cho việc vá.
3. Xác thực an toàn sau khi vá xong
- Chạy lại SCA và scan lỗ hổng trên toàn codebase / container / image.
- Xác nhận không còn tích hợp RSC cũ hoặc dependency chuyển tiếp kéo phiên bản dễ tổn thương.
- Đảm bảo template dự án, image build, boilerplate nội bộ đều đã cập nhật lên phiên bản an toàn.

React2Shell là một lỗ hổng RCE mức nghiêm trọng nhất (CVSS 10.0) trong hệ sinh thái React Server Components và Next.js App Router, cho phép thực thi mã từ xa không cần xác thực chỉ với một HTTP request. Với mức độ phổ biến của RSC/Next.js, tỉ lệ môi trường cloud bị phơi nhiễm cao, cùng bằng chứng khai thác ngoài đời thực bởi cả nhóm APT và botnet, đây là vấn đề mà mọi đội kỹ thuật – bảo mật dùng React/Next.js phải ưu tiên hàng đầu.
Việc quan trọng nhất hiện tại là: kiểm kê nhanh, đối chiếu phiên bản, vá ngay và tăng cường giám sát, sau đó chuẩn hóa lại pipeline build và template nội bộ để tránh “thụt lùi” về phiên bản dễ bị tấn công.







