8 điểm bởi GN⁺ 2025-12-06 | 5 bình luận | Chia sẻ qua WhatsApp
  • Đã 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ự
  • 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

 
stech 2025-12-08

Dạo này đội ngũ Vercel thật sự quá bê bối. Có vẻ đã đến lúc rời bỏ React/Next.

 
jeiea 2025-12-08

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?

 
laeyoung 2025-12-07

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-next

 
shakespeares 2025-12-07

Có lẽ phải kiểm tra xem có bị ảnh hưởng hay không bằng lệnh npm audit rồi cập nhật thôi..