Các nhà phát triển đối mặt với các mối đe dọa thường xuyên từ những lỗ hổng mới nổi, và lỗ hổng khai thác React2Shell nổi bật là một trong những lỗ hổng nghiêm trọng nhất trong thời gian gần đây. Lỗi nghiêm trọng này, được theo dõi là CVE-2025-55182, cho phép thực thi mã từ xa không xác thực (RCE) trong các ứng dụng sử dụng React Server Components (RSC). Hơn nữa, nó ảnh hưởng đến các framework phổ biến như Next.js, đặt vô số triển khai sản xuất vào tình trạng rủi ro.
Tiếp theo, các quản trị viên phải ưu tiên nâng cấp. Các bản vá lỗi đã được phát hành nhanh chóng sau khi được tiết lộ một cách có trách nhiệm, nhưng việc các tác nhân đe dọa tích cực khai thác lỗ hổng đã nhấn mạnh tính cấp bách. Do đó, các nhóm cần triển khai các bản sửa lỗi mà không chậm trễ để tránh các thỏa hiệp như đánh cắp dữ liệu hoặc reverse shells.
Tìm hiểu về lỗ hổng React2Shell
Các nhà nghiên cứu đặt tên vấn đề này là "React2Shell" vì kẻ tấn công có thể truy cập như shell thông qua các yêu cầu được tạo thủ công. Cụ thể, lỗ hổng xuất phát từ việc giải tuần tự hóa không an toàn trong giao thức RSC Flight. Kẻ tấn công gửi các payload độc hại trong các yêu cầu HTTP, và máy chủ xử lý chúng mà không có sự xác thực đầy đủ. Kết quả là, các kỹ thuật ô nhiễm nguyên mẫu (prototype pollution) cho phép truy cập vào các hàm tạo nhạy cảm, dẫn đến thực thi mã tùy ý.
Hơn nữa, việc khai thác không yêu cầu xác thực trong các cấu hình mặc định. Ngay cả các ứng dụng không có hành động máy chủ rõ ràng vẫn dễ bị tổn thương nếu chúng sử dụng RSC. Các báo cáo tình báo về mối đe dọa xác nhận các cuộc quét và tấn công thành công chỉ trong vài giờ sau khi công khai vào ngày 3 tháng 12 năm 2025. Các tác nhân, bao gồm các nhóm có liên kết với nhà nước, triển khai các công cụ đào tiền ảo, cửa hậu (backdoor) và proxy ngược (reverse proxy).
Các phiên bản và môi trường bị ảnh hưởng
Lỗ hổng ảnh hưởng đến các phiên bản gói cụ thể:
- Các gói React Server Components (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack) trong các phiên bản từ 19.0.0 đến 19.2.0 (một phần).
- Next.js 15.0.0 đến 16.0.6, cộng với một số bản phát hành canary nhất định.
- Các triển khai trên Vercel sử dụng cấu hình dễ bị tấn công, bao gồm các ứng dụng v0 nếu được xuất bản.
Các ứng dụng trên Vercel được hưởng lợi từ các quy tắc WAF tự động chặn các mẫu tấn công đã biết. Tuy nhiên, những quy tắc này chỉ cung cấp khả năng phòng thủ theo chiều sâu—nâng cấp mới mang lại giải pháp hoàn chỉnh.
Các triệu chứng bao gồm các yêu cầu POST bất thường với các tiêu đề cụ thể (ví dụ: Next-Action), các tiến trình không mong muốn được tạo ra, hoặc các nỗ lực truy cập biến môi trường. Tuy nhiên, việc phát hiện đáng tin cậy tỏ ra khó khăn nếu không có nhật ký hoặc giám sát thời gian chạy.
Hướng dẫn từng bước để khắc phục React2Shell
Các quản trị viên thực hiện các quy trình có cấu trúc để khắc phục. Đầu tiên, hãy đánh giá tình trạng lỗ hổng.
Bước 1: Kiểm tra các phiên bản hiện tại của bạn
Mở tệp package.json của bạn và kiểm tra các phần phụ thuộc:
{
"dependencies": {
"next": "15.3.4",
"react-server-dom-webpack": "19.1.0"
}
}
Ngoài ra, hãy chạy lệnh này để kiểm tra tự động:
npx fix-react2shell-next
Công cụ này quét các monorepo, xác định các gói dễ bị tấn công và đề xuất các nâng cấp chính xác.
Trên Vercel, bảng điều khiển hiển thị các biểu ngữ cho các triển khai sản xuất bị ảnh hưởng.
Bước 2: Nâng cấp lên các phiên bản đã vá lỗi
Các nhóm Vercel và React đã phát hành các bản vá lỗi có mục tiêu. Cập nhật Next.js lên một trong các phiên bản ổn định sau:
- 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, hoặc 16.0.10
Đối với các bản canary, hãy sử dụng 15.6.0-canary.58 trở lên.
Phương pháp dễ nhất là sử dụng công cụ sửa lỗi chính thức:
npx fix-react2shell-next
Tiện ích tương tác này áp dụng các bản cập nhật xác định, làm mới tệp khóa (lockfile) và hỗ trợ pnpm, yarn, npm, hoặc bun.
Đối với các cập nhật thủ công:
- Chỉnh sửa
package.jsonđể chỉ định một phiên bản đã vá lỗi (ví dụ:"next": "15.5.7"). - Chạy lệnh cài đặt của trình quản lý gói của bạn.
- Cam kết các thay đổi, bao gồm tệp khóa.
- Triển khai lại ngay lập tức (ví dụ:
vercel --prodhoặc git push).
Các framework khác sử dụng RSC làm theo khuyến nghị của React để nâng cấp gói trực tiếp.
Bước 3: Xác minh bản sửa lỗi
Sau khi nâng cấp, hãy chạy lại các công cụ quét lỗ hổng hoặc kiểm tra với các PoC an toàn trong môi trường thử nghiệm. Xác nhận không có khai thác nào xảy ra—các yêu cầu sẽ bị từ chối hoặc báo lỗi một cách an toàn.
Hơn nữa, hãy xoay vòng khóa bí mật (secrets) nếu ứng dụng của bạn đã chạy mã dễ bị tấn công công khai trước ngày 4 tháng 12 năm 2025. Kẻ tấn công có thể đã đánh cắp các biến môi trường.
Bước 4: Bật các biện pháp bảo vệ bổ sung
Trên Vercel:
- Kích hoạt Bảo vệ Tiêu chuẩn cho các triển khai xem trước và tùy chỉnh.
- Kiểm tra các liên kết có thể chia sẻ và các ngoại lệ mật khẩu.
- Sử dụng Vercel Agent cho các yêu cầu kéo (PR) tự động trên các kho lưu trữ dễ bị tấn công.
Các nhà cung cấp dịch vụ đám mây như Cloudflare, AWS và Fastly đã tự động triển khai các quy tắc chặn.
Kiểm thử nâng cao với Apidog
Việc xác minh sau nâng cấp thường liên quan đến việc gửi các yêu cầu phức tạp đến các điểm cuối. Apidog nổi trội ở đây với vai trò là một nền tảng API tất cả trong một. Bạn có thể thiết kế, gỡ lỗi, giả lập và kiểm thử API một cách hiệu quả.

Đối với các kịch bản React2Shell, hãy sử dụng Apidog để tạo các yêu cầu POST mô phỏng các mẫu khai thác (ví dụ: với các tiêu đề tùy chỉnh và payload đã được tuần tự hóa) trong các môi trường được kiểm soát. Xác thực phản hồi, xác nhận mã trạng thái và tự động hóa các kiểm thử hồi quy.
Phiên bản miễn phí của Apidog cung cấp sử dụng cơ bản không giới hạn, trong khi các gói trả phí bắt đầu từ $9/người dùng/tháng cho các nhóm—mức giá phải chăng đáng kể so với các lựa chọn thay thế, với các tính năng như tích hợp CI/CD và máy chủ giả lập (mock servers). Các gói Pro mở rộng để đáp ứng nhu cầu doanh nghiệp. Tải xuống phiên bản miễn phí để tích hợp nó vào quy trình làm việc bảo mật của bạn ngay bây giờ.
Các thực hành tốt nhất để ngăn chặn các cuộc khai thác trong tương lai
Các bản nâng cấp khắc phục React2Shell, nhưng các thói quen vững chắc sẽ giảm thiểu rủi ro nói chung.
Đầu tiên, hãy bật tính năng quét phụ thuộc trong các pipeline CI/CD. Các công cụ sẽ cảnh báo sớm về các gói dễ bị tấn công.
Tiếp theo, giảm thiểu các điểm cuối (endpoints) bị lộ. Mặc dù React2Shell tấn công các cài đặt mặc định, nhưng các thiết kế với đặc quyền tối thiểu sẽ hạn chế tác động.
Ngoài ra, hãy giám sát nhật ký để tìm các điểm bất thường: lọc theo tiêu đề Next-Action hoặc các chỉ số ô nhiễm nguyên mẫu (proto, constructor).
Hơn nữa, triển khai bảo vệ ứng dụng tự động trong thời gian chạy (RASP) nếu có thể.
Cuối cùng, hãy cập nhật thông tin qua các kênh chính thức: blog React, các thông báo bảo mật của Next.js và Vercel KB.
Kết luận
Lỗ hổng khai thác React2Shell nêu bật cách các lỗi ở cấp framework có thể nhanh chóng lan rộng đến các ứng dụng sản xuất. Tuy nhiên, các phản ứng phối hợp từ Meta, Vercel và cộng đồng đã cung cấp các bản vá nhanh chóng. Bạn sẽ loại bỏ hoàn toàn rủi ro RCE bằng cách nâng cấp kịp thời với các công cụ như fix-react2shell-next.
Các tác nhân đe dọa tiếp tục dò tìm, vì vậy sự chậm trễ sẽ dẫn đến thỏa hiệp. Hãy hành động ngay: kiểm tra phiên bản, áp dụng các bản sửa lỗi, xác minh và tăng cường các lớp phòng thủ.
Việc tích hợp các công cụ như Apidog vào quy trình kiểm thử API của bạn sẽ củng cố thêm các quy trình xác minh. Tải xuống miễn phí cho phép xác thực điểm cuối ngay lập tức và kỹ lưỡng.
Các ứng dụng an toàn đòi hỏi sự cảnh giác, nhưng các bước đơn giản ở đây sẽ giải quyết hiệu quả React2Shell. Kết quả là các triển khai của bạn sẽ trở nên kiên cường hơn.
