- Đã phát hiện lỗ hổng thực thi mã từ xa (RCE) trong React Server Components cho phép chạy mã tùy ý mà không cần xác thực, nên cần nâng cấp ngay lập tức
- Next.js cũng bị ảnh hưởng; nếu sử dụng tính năng App Router thì sẽ dễ bị tấn công. Next.js đang theo dõi vấn đề này dưới mã CVE-2025-66478
- Nguyên nhân gốc rễ của lỗ hổng là ô nhiễm nguyên mẫu phía máy chủ (server-side prototype pollution), cho phép kẻ tấn công thao túng nguyên mẫu của đối tượng JavaScript để thực thi lệnh qua
child_process.execSync và các hàm tương tự
- Mã PoC (proof of concept) công khai đã lan truyền rất nhanh, và Datadog ghi nhận các nỗ lực tấn công thực tế từ hơn 800 địa chỉ IP tính đến ngày 5/12
- Với điểm CVSS 10, lỗ hổng này đặc biệt nghiêm trọng trên các phiên bản Next.js 15.x~16.x, và việc áp dụng bản vá mới nhất là bắt buộc
Tổng quan chính về lỗ hổng
- Ngày 3/12, một lỗ hổng trong React Server Components cho phép thực thi mã tùy ý mà không cần xác thực đã được phát hiện và đăng ký với mã CVE-2025-55182
- Lỗ hổng được khai thác ở phía máy chủ, cho phép kẻ tấn công chạy mã từ xa
- Next.js bị ảnh hưởng vì có bao gồm thành phần dễ tổn thương này
- Next.js quản lý riêng dưới mã CVE-2025-66478, nhưng NVD đã chính thức từ chối CVE này
- Điểm CVSS là 10/10; Datadog xác nhận rằng việc tấn công rất đơn giản và có thể tái hiện ngay cả trên ứng dụng Next.js được tạo bằng template mặc định
- Tính đến ngày 5/12, đã quan sát thấy các nỗ lực tấn công thực tế với payload đã được vũ khí hóa
Các phiên bản bị ảnh hưởng và cách giảm thiểu
- Các thư viện React dễ tổn thương:
react-server-dom-parcel, react-server-dom-webpack, react-server-dom-turbopack
- Phiên bản dễ tổn thương: 19.0~19.2.0 / Phiên bản đã vá: 19.0.1, 19.1.2, 19.2.1
- Các phiên bản Next.js bị ảnh hưởng
- Dễ tổn thương: 15.x, 16.x, từ 14.3.0-canary.77 trở đi
- Bản vá: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
- Có thể kiểm tra tình trạng dễ tổn thương bằng lệnh
npm audit
- Giải pháp là nâng cấp lên phiên bản đã được vá
Phân tích lỗ hổng và PoC
- Ngày 3/12, mã vá đã được commit vào kho lưu trữ React
- Nội dung sửa đổi là thay đổi hàm
requireModule để kiểm tra sự tồn tại của thuộc tính trong đối tượng
- Đây là lỗ hổng thuộc loại ô nhiễm nguyên mẫu phía máy chủ, cho phép thực thi mã tùy ý bằng cách làm ô nhiễm nguyên mẫu của đối tượng
- Các PoC đã công khai:
- PoC đầu tiên (
ejpir/CVE-2025-55182-poc) không hoạt động
- PoC thứ hai (
msanft/CVE-2025-55182) hoạt động cả trên ứng dụng Next.js mặc định
- Ngày 5/12, người báo cáo ban đầu Lachlan Davidson đã công bố PoC chính thức với ba biến thể
Hoạt động tấn công thực tế
- Datadog phát hiện hoạt động quét từ 22:00 UTC ngày 3/12
- Tính đến ngày 5/12, xác nhận có quét và nỗ lực tấn công từ hơn 800 địa chỉ IP
- Có từ hai tổ chức trở lên trở thành mục tiêu, và hoạt động liên tục được quan sát kể từ sau ngày 4/12
- Diễn biến tấn công:
- Ban đầu là quét dựa trên PoC không hoạt động
- Sau đó payload lần lượt được thay bằng PoC của Moritz Sanft, rồi cuối cùng là PoC của Davidson
- Các payload đã quan sát được:
- Đọc
/etc/passwd, chạy whoami, tải script từ xa bằng curl·wget, v.v.
- Một số payload còn bao gồm chức năng đánh cắp biến môi trường (
.env) và thu thập thông tin hệ thống
Khái niệm ô nhiễm nguyên mẫu phía máy chủ
- Đây là loại CWE-1321, xảy ra khi các thuộc tính nguyên mẫu của đối tượng bị kiểm soát sai cách
- Thông thường nó bị lạm dụng để gây XSS ở frontend, nhưng ở phía máy chủ có thể dẫn đến RCE hoặc đọc tệp
- Trong ví dụ mã, việc làm ô nhiễm qua
__proto__ khiến Object.prototype bị sửa đổi, từ đó ảnh hưởng đến mọi đối tượng được tạo ra sau đó
- Kết quả là khi gọi
spawnSync('sh'), lệnh độc hại được truyền vào đầu vào và bị thực thi
Tính năng phát hiện và phòng vệ của Datadog
- Datadog Code Security có thể phát hiện thư viện dễ tổn thương trên GitHub hoặc trong runtime
- Cung cấp khả năng tìm kiếm liên quan đến CVE-2025-55182 hoặc CVE-2025-66478
- Datadog App and API Protection (AAP) có thể chặn tấn công trong runtime
- Datadog Workload Protection cung cấp quy tắc tùy chỉnh để phát hiện việc thực thi các lệnh như
wget, curl, bash trong tiến trình Node
Tài liệu tham khảo
- Khuyến cáo chính thức: React, Next.js
- Ứng phó từ các nhà cung cấp đám mây: AWS, Vercel, Google Cloud, Akamai, Cloudflare
- Phân tích từ các công ty bảo mật: Wiz, Tenable, SearchLight Cyber
- Cảnh báo từ CERT: CERT-EU, CERT-SE, CERT-AU
- Trình quét công khai: assetnote/react2shell-scanner
5 bình luận
Dạo này đội ngũ Vercel thật sự quá bê bối. Có vẻ đã đến lúc rời bỏ React/Next.
Không phải là đã làm tốt, nhưng liệu có cách ứng phó nào tốt hơn không?
Hình như đội ngũ Vercel đã phát hành lệnh npx để cập nhật các phiên bản bị ảnh hưởng của vấn đề này chỉ trong một lần.
npx fix-react2shell-nextCó lẽ phải kiểm tra xem có bị ảnh hưởng hay không bằng lệnh
npm auditrồi cập nhật thôi..Lỗ hổng thực thi mã từ xa (RCE) trong React và Next.js