TL; DR
React2Shell (CVE-2025-55182) tạo ra một yếu tố quan trọng Rủi ro RCE ngang qua Các thành phần máy chủ React (RSC) và các khuôn khổ nhúng chúng, bao gồm Tiếp theo.jsVì lỗ hổng nằm bên trong... RSC Ở lớp tuần tự hóa và giải tuần tự hóa, kẻ tấn công có thể gửi một yêu cầu HTTP được tạo sẵn và kích hoạt thực thi mã từ xa không được xác thựcNgay cả khi các nhóm sử dụng cấu hình khung mặc định. Tiếp theo.js Các ứng dụng phải đối mặt với rủi ro cao nhất vì chúng chấp nhận và xử lý dữ liệu. Chuyến bay phản ứng Theo mặc định, dữ liệu được truyền qua HTTP.
Lỗi này ảnh hưởng đến nhiều phiên bản của các gói máy chủ ReactVà kẻ tấn công không cần logic ứng dụng tùy chỉnh để khai thác lỗ hổng này. Các nhà nghiên cứu bảo mật cho thấy độ tin cậy gần như 100%, và các lần quét ban đầu tiết lộ rằng nhiều môi trường đám mây đang hoạt động dễ bị tổn thương. Tiếp theo.js các trường hợp. Các đội phải vá lỗi ngay lập tức. và xác thực toàn bộ hệ sinh thái của họ để thu hẹp phạm vi. Lỗ hổng thực thi mã từ xa (RCE) trong React2Shell (CVE-2025-55182).
Một lỗ hổng bảo mật nghiêm trọng được báo cáo thông qua chương trình tìm lỗi của Meta vào ngày 29 tháng 11 đã gây ra những phản ứng khẩn cấp trên toàn hệ sinh thái JavaScript.
Định CVE-2025-55182, được công bố vào ngày 3 tháng 12, hiện được gọi là React2Shell là một lỗ hổng bảo mật có mức độ nghiêm trọng tối đa ảnh hưởng đến Các thành phần của máy chủ React cùng với các framework tích hợp chúng. Ban đầu, một mã định danh lỗ hổng Next.js riêng biệt (CVE-2025-66478) đã được chỉ định, nhưng sau đó NVD đã hợp nhất nó vào CVE React chính như một mục trùng lặp.
Vấn đề cốt lõi vẫn là việc xử lý không an toàn các payload RSC được tuần tự hóa, có thể được kích hoạt thông qua yêu cầu HTTP. Điều này mở ra kẽ hở cho kẻ xấu gửi yêu cầu HTTP bị thao túng, dẫn đến việc chạy mã JavaScript tùy ý trên máy chủ sau khi được thực thi. được giải mã bởi React.
Tổng quan về CVE-2025-55182
Các thành phần máy chủ React được tích hợp sâu vào các framework hiện đại và trong nhiều trường hợp được bật mặc định. Do đó, các ứng dụng có thể bị phơi nhiễm với các thành phần này. React2Shell (CVE-2025-55182) Ngay cả khi chúng không bao giờ định nghĩa rõ ràng điểm cuối của Chức năng Máy chủ (Server Function). Việc triển khai RSC vẫn tồn tại, và chỉ riêng điều đó thôi cũng đủ để kích hoạt các đường dẫn mã dễ bị tổn thương và tạo ra một lỗ hổng đáng kể. Rủi ro RCE.
Lỗi này bắt nguồn từ cách thức... Giao thức chuyến bay phản ứngL xử lý một số tải trọng có cấu trúc nhất định. Các phiên bản cũ hơn đã cố gắng duyệt qua các đường dẫn đối tượng được cung cấp trong tải trọng mà không xác minh xem cấu trúc đó có hợp lệ hoặc đúng như mong đợi hay không. Kẻ tấn công có thể thao túng quá trình này và cuối cùng đạt được khả năng thực thi mã trên máy chủ. Không cần xác thực, không cần cấu hình đặc biệt và không cần logic dành riêng cho ứng dụng. Vì vấn đề này tồn tại trong các cấu hình mặc định, standard Việc triển khai được thực hiện mà không cần bất kỳ điều kiện bất thường nào.
Việc khai thác xảy ra khi kẻ tấn công gửi các yêu cầu HTTP POST độc hại nhằm lợi dụng “vm.runInThisContextCơ chế này được thực hiện thông qua Server Actions. Mặc dù React không trực tiếp để lộ điểm cuối dễ bị tổn thương, nhưng Next.js lại làm vậy, tạo ra một vectơ tấn công từ xa thực sự.
Next.js chấp nhận các payload Flight từ bất kỳ yêu cầu nào, xử lý chúng mà không cần xác thực đúng cách và chuyển chúng đến bộ giải mã của React. Hệ thống coi các đầu vào bên ngoài này là đáng tin cậy, cho phép kẻ tấn công đạt được mục tiêu. thực thi mã từ xa thông qua các điểm cuối có thể truy cập công khai với đầy đủ quyền hạn của tiến trình Node.js trên máy chủ mục tiêu.
Mức độ nghiêm trọng tăng lên đáng kể vì các cấu hình mặc định vẫn dễ bị tổn thương. React2Shell (CVE-2025-55182) và kết quả Rủi ro RCE. Một standard Ứng dụng Next.js bạn tạo bằng create-next-app Lỗ hổng tự bộc lộ mà không cần bất kỳ mã tùy chỉnh hoặc thay đổi cấu hình nào. Các nhà nghiên cứu bảo mật xác nhận độ tin cậy khai thác gần như 100% và báo cáo rằng 39% môi trường đám mây đang chạy các phiên bản dễ bị tổn thương, trong khi 44% tổng số môi trường đang chạy các ứng dụng Next.js được công khai bị ảnh hưởng bởi lỗ hổng này. React2Shell.
Hiểu về việc tiếp xúc với React2Shell
Các phiên bản dễ bị tổn thương trải rộng trên nhiều bản phát hành:
| Thành phần | Phiên bản bị ảnh hưởng |
|---|---|
| react-server-dom-webpack | 19.0, 19.1.0, 19.1.1, 19.2.0 |
| react-server-dom-parcel | 19.0, 19.1.0, 19.1.1, 19.2.0 |
| react-server-dom-turbopack | 19.0, 19.1.0, 19.1.1, 19.2.0 |
Vì nhiều framework tích hợp hỗ trợ RSC ngay từ lõi, các ứng dụng thường kế thừa mã dễ bị tổn thương mà không hề hay biết. Bất kỳ framework hoặc trình đóng gói nào cung cấp các gói này đều có thể khiến ứng dụng bị tấn công bởi React2Shell (CVE-2025-55182) và tiềm ẩn rủi ro thực thi mã từ xa (RCE). Điều đó bao gồm:
- Next.js (Bộ định tuyến ứng dụng)
- Bản xem trước React Router RSC
- Plugin Vite RSC
- Plugin Parcel RSC
- Bộ công cụ phát triển phần mềm Redwood SDK
- Waku
- Expo
Next.js bị ảnh hưởng đặc biệt nghiêm trọng vì theo mặc định nó sử dụng các điểm cuối liên quan đến RSC qua HTTP. Các phiên bản bắt đầu bằng... Bản dựng thử nghiệm 14.3.0cùng với hầu hết 15.x và sớm 16.x Các bản phát hành này chứa phần mềm dễ bị tổn thương. Bất kỳ ai đang sử dụng phiên bản canary đều có thể gặp phải vấn đề này. 14.3.0-canary.77 hoặc sau đó nên quay lại phiên bản ổn định 14.x Hãy tạo nhánh riêng cho đến khi phiên bản canary được vá lỗi được phát hành.
Các phiên bản Next.js đã được vá lỗi bao gồm:
| Thành phần | Các phiên bản đã vá lỗi |
|---|---|
| Tiếp theo.js | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Các bằng chứng khái niệm công khai và khả năng phát hiện đáng tin cậy
Sau khi lỗ hổng được tiết lộ, nhiều bằng chứng giả mạo về khả năng khai thác đã bắt đầu lan truyền. Nhiều trong số đó không chính xác hoặc dựa trên những giả định sai lầm. Tác giả của lỗ hổng ban đầu, Lachlan Davidson, đã công khai xác nhận vào... react2shell Các PoC (Proof of Concept) trên GitHub đang lan truyền không khớp với lỗ hổng bảo mật được chia sẻ riêng với những người duy trì React/Next.js và được cung cấp bởi anh ấy. PoC của riêng tôi.
Vấn đề lớn với những nỗ lực công khai ban đầu là chúng không nhận ra rằng việc bóc lột sẽ thành công nếu chống lại chúng. standard Triển khai Next.js mà không yêu cầu phải có logic ứng dụng hoặc các chức năng phía máy chủ cụ thể.
Các nhà nghiên cứu bảo mật từ nhiều tổ chức đã nhấn mạnh rằng việc phát hiện lỗ hổng này đòi hỏi nhiều hơn là chỉ đơn thuần xác định xem RSC có hiện diện hay không. Nhóm của Assetnote đã công bố một bài viết. phương pháp phát hiện đáng tin cậy và máy quét có khả năng xác nhận vấn đề mà không cần sử dụng bất kỳ logic khai thác nào. Metasploit sẽ sớm có một tính năng như vậy. khả dụng khai thác Đối với lỗ hổng này cũng vậy.
Phương pháp phát hiện tận dụng cách React Server xử lý các tham chiếu thuộc tính đối tượng bằng cách sử dụng dấu hai chấm làm dấu phân cách bên trong. ReactFlightClientConfigBundlerWebpack.js/requireModule() chức năng. Khi các phiên bản dễ bị tổn thương xử lý một tải trọng đa phần có cấu trúc đặc biệt cố gắng duyệt qua các đường dẫn đối tượng lồng nhau không tồn tại, chúng sẽ kích hoạt các phản hồi lỗi có thể dự đoán được. Một yêu cầu chẩn đoán gửi một mẫu tham chiếu như sau: `$1:a:a` được ghép nối với một đối tượng rỗng. Các triển khai dễ bị tổn thương cố gắng giải quyết điều này như là truy cập thuộc tính lồng nhau trên một giá trị không xác định, dẫn đến một ngoại lệ. Máy chủ trả về trạng thái 500 với một mẫu mã lỗi đặc trưng trong phần thân phản hồi.
Các biện pháp cần thực hiện ngay lập tức đối với các tổ chức đang đối mặt với lỗ hổng React2Shell (CVE-2025-55182) và nguy cơ thực thi mã từ xa (RCE).
Tiến hành quét toàn diện mã nguồn và các ứng dụng đã triển khai của bạn. Để xác định các phiên bản gói dễ bị tổn thương. Hãy đặc biệt chú ý đến các phụ thuộc gói máy chủ React trực tiếp, các triển khai RSC cấp Framework (Next.js, Waku, Redwood, v.v.), các ứng dụng được xây dựng bằng `create-next-app` hoặc các công cụ tạo khung tương tự và các ứng dụng được đóng gói trong container có thể chứa các ảnh nền lỗi thời.
Phân tích thành phần phần mềm (SCA) các công cụ như Xygeni's SCA có thể tự động phát hiện các phụ thuộc bị ảnh hưởng trong toàn bộ kho phần mềm của bạn.
Vá lỗi ngay lập tức:
Cập nhật lên các phiên bản đã được vá lỗi như React (19.0.1, 19.1.2, 19.2.1), Next.js (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7) và bất kỳ gói framework nào bao gồm RSC. Các bản cập nhật này đưa ra quy trình xác thực nghiêm ngặt cho việc xử lý payload RSC và ngăn chặn việc truy cập tham chiếu thuộc tính không an toàn, vốn là nguyên nhân gây ra khai thác lỗ hổng.
Các công cụ khắc phục tự động, chẳng hạn như Tính năng tự động khắc phục sự cố của Xygenicó thể đẩy nhanh quá trình xử lý trên các codebase lớn.
Triển khai các biện pháp bảo vệ WAF tạm thời:
Trong khi các bản vá được lan truyền qua quá trình triển khai của bạn pipelineKích hoạt các quy tắc Tường lửa ứng dụng web (Web Application Firewall) để bảo vệ ngay lập tức. Các nhà cung cấp dịch vụ đám mây lớn đã phát hành các bộ quy tắc khẩn cấp. CloudFlare: Bảo vệ tự động cho tất cả các tầng khi lưu lượng truy cập React được chuyển tiếp qua proxy cũng như AWS, Akamai, Fastly, Google Cloud Có các quy tắc phòng thủ tương tự. Kích hoạt ngay lập tức các biện pháp kiểm soát này để tạo ra một lớp bảo vệ trong giai đoạn chuyển tiếp.
Theo dõi lưu lượng HTTP đáng ngờ:
Cấu hình ghi nhật ký và cảnh báo cho các dấu hiệu của nỗ lực khai thác: Tải trọng giao thức RSC Flight bị lỗi hoặc không mong đợi, các mẫu lỗi 500 bất thường trên các điểm cuối RSC, các yêu cầu POST với tiêu đề `Next-Action` hoặc `Next-Router-State-Tree` đáng ngờ, các yêu cầu lặp đi lặp lại đến các đường dẫn `/_next/` với tải trọng đa phần.
Kiểm tra danh sách linh kiện phần mềm của bạn:
Nhiều framework đóng gói các phụ thuộc RSC một cách minh bạch, khiến chúng không thể nhìn thấy trong các đánh giá phụ thuộc ở cấp độ bề mặt. Hãy kiểm tra toàn bộ... SBOM Để đảm bảo: Không còn sự phụ thuộc bắc cầu nào vào các gói máy chủ React dễ bị tổn thương, các bản cập nhật khung không vô tình đưa vào các triển khai RSC cũ hơn.
Đóng cửa suy nghĩ
Lỗ hổng React2Shell nằm trong số những lỗ hổng bảo mật nghiêm trọng nhất của hệ sinh thái JavaScript trong những năm gần đây, không phải vì cách khai thác phức tạp mà vì RSC (React2Shell) đã ăn sâu vào các công cụ hiện nay. Giờ đây, khi các bản vá lỗi đã có sẵn trên toàn hệ sinh thái, các nhóm phải nhanh chóng đưa các bản nâng cấp vào môi trường sản xuất.
Nếu ứng dụng của bạn sử dụng các tính năng máy chủ của React, dù trực tiếp hay gián tiếp, bạn phải coi việc khắc phục lỗ hổng này là ưu tiên hàng đầu.





