Sự kiện tìm thấy:

CVE-2025-66478: Cách vá lỗ hổng Next.js và React

CVE-2025-66478: Cách vá lỗ hổng Next.js và React

Một thông báo bảo mật liên quan đến VPS không phải chuyện để đọc cho biết rồi thôi. Với lỗ hổng CVE-2025-66478 trên Next.js, rủi ro có thể đi xa hơn lỗi giao diện hay website chậm. Kẻ tấn công có thể khai thác để thực thi mã từ xa, từ đó tác động trực tiếp tới máy chủ đang vận hành website của bạn.

Lỗ hổng này bắt nguồn từ React, được định danh là CVE-2025-55182, và ảnh hưởng tới các ứng dụng Next.js có sử dụng React Server Components. Nếu website của bạn đang chạy trên VPS, việc kiểm tra phiên bản và cập nhật không nên trì hoãn.

Vì sao CVE-2025-66478 được xem là đặc biệt nghiêm trọng?

Next.js đã công bố advisory riêng cho CVE-2025-66478, trong khi React cũng phát hành thông báo bảo mật cho lỗ hổng ở React Server Components. Mức độ nghiêm trọng của lỗ hổng React được đánh giá CVSS 10.0, mức cao nhất trên thang điểm phổ biến này.

Điểm đáng lo là vấn đề không chỉ xuất hiện khi bạn chủ động tạo endpoint React Server Function. Khi ứng dụng hỗ trợ React Server Components, nó vẫn có thể nằm trong phạm vi ảnh hưởng. Vì vậy, đừng chỉ kiểm tra các tính năng mà đội ngũ của bạn nghĩ rằng mình đang dùng.

Lỗ hổng được báo cáo vào cuối tháng 11 và bản vá được phát hành chỉ sau vài ngày. Tốc độ xử lý là tín hiệu tốt, nhưng cũng có nghĩa là bạn cần hành động sớm để không biến một dự án đang hoạt động ổn định thành mục tiêu dễ khai thác.

Cơ chế rủi ro: payload từ client có thể trở thành mã thực thi

React 19 cho phép render React ở phía server. Đây là khả năng rất hữu ích, nhưng quyền hạn ở server hoàn toàn khác phía client. Client chủ yếu gửi và nhận dữ liệu, còn server có thể tiếp cận file hệ thống, thông tin cấu hình và các tài nguyên của VPS.

Trong quy trình bình thường, client gửi payload hợp lệ, ví dụ dữ liệu biểu mẫu hoặc thông tin người dùng, để server xử lý và render. Lỗ hổng xuất hiện khi quá trình giải mã payload không xác thực dữ liệu đủ chặt chẽ. Kẻ tấn công có thể biến đổi payload thay vì gửi dữ liệu thông thường, nhằm khiến server thực thi nội dung độc hại.

Cách hình dung đơn giản là hãy liên tưởng đến SQL Injection. Trước khi một câu lệnh đi xuống cơ sở dữ liệu, dữ liệu đầu vào phải được kiểm duyệt. Với lỗ hổng này, vấn đề nằm ở dữ liệu gửi tới cơ chế React phía server, nơi hậu quả có thể lớn hơn nhiều vì mã có nguy cơ chạy ngay trên máy chủ.

VPS có thể chịu những tác động nào?

Khi kẻ tấn công chiếm được quyền thực thi trên server, mục tiêu không chỉ là làm website lỗi. Họ có thể tìm cách truy cập dữ liệu, đánh cắp thông tin đăng nhập hệ thống hoặc thay đổi mật khẩu của tài khoản có quyền cao.

  • Đánh cắp dữ liệu: Dữ liệu trong file hệ thống, cấu hình ứng dụng và thông tin nhạy cảm có thể bị lộ.
  • Chiếm quyền VPS: Kẻ tấn công có thể thay đổi quyền truy cập hoặc cài phần mềm không mong muốn.
  • Lạm dụng tài nguyên: VPS do bạn chi trả có thể bị dùng cho các hoạt động như đào tiền mã hóa.
  • Gây gián đoạn vận hành: Website, dịch vụ nội bộ và các quy trình kinh doanh phụ thuộc vào VPS đều có thể bị ảnh hưởng.

Đó là lý do việc vá CVE-2025-66478 không nên được xem là một bản nâng cấp phụ thuộc thông thường. Đây là công việc bảo vệ trực tiếp hạ tầng kinh doanh số của bạn.

Những phiên bản nào cần được kiểm tra?

Trước hết, mở tệp package.json của dự án và kiểm tra phiên bản Next.js cùng React. Theo thông tin công bố, các bản Next.js 15 và 16 bị ảnh hưởng. Với Next.js 14, phạm vi ảnh hưởng nằm ở bản Canary, trong khi các bản Stable của Next.js 14 và các bản cũ hơn như 13, 12 không nằm trong nhóm ảnh hưởng được nêu.

Ở phía React, các phiên bản 19.0, 19.1.0, 19.1.1 và 19.2.0 cần được xử lý. Bạn nên đối chiếu chính xác phiên bản hiện có của dự án với danh sách bản vá, thay vì suy đoán dựa trên số phiên bản chính.

Bảng phiên bản Next.js bị ảnh hưởng và phiên bản đã vá
Đối chiếu phiên bản đang dùng với bảng bản vá trước khi cập nhật.
Thành phần Nhóm cần lưu ý Hướng xử lý
Next.js Phiên bản 15 và 16 Cập nhật lên bản vá tương ứng
Next.js 14 Bản Canary Kiểm tra và cập nhật ngay nếu bị ảnh hưởng
React 19.0, 19.1.0, 19.1.1, 19.2.0 Nâng lên phiên bản đã được vá

Cách vá CVE-2025-66478 trong dự án Next.js

Điểm tích cực là quy trình xử lý không phức tạp. Bạn có thể dùng công cụ được phát hành để kiểm tra và tự động cập nhật Next.js trong thư mục dự án:

npx fix-react2shell-next

Hãy dùng npx, không phải npm. Công cụ này sẽ kiểm tra dependency và hỗ trợ nâng Next.js lên bản phù hợp. Chẳng hạn, dự án đang dùng Next.js 16.0.1 có thể được nâng lên 16.0.7 theo bản vá được minh họa.

Terminal trong Visual Studio Code hiển thị kết quả chạy công cụ kiểm tra dependency
Chạy công cụ ngay trong thư mục dự án để xác định dependency có bị ảnh hưởng hay không.

Tuy nhiên, có một điểm bạn cần lưu ý: công cụ trên tập trung vào Next.js, không thay toàn bộ việc cập nhật React cho bạn. Sau khi chạy lệnh, hãy kiểm tra thay đổi trong Git và mở lại package.json để xác nhận các dependency liên quan.

Nếu React của bạn đang ở phiên bản bị ảnh hưởng, hãy cập nhật thủ công React và React DOM lên bản vá tương ứng. Trong ví dụ thực hành, React 19.0 được nâng lên 19.2.1. Sau đó chạy lại lệnh cài đặt dependency để cập nhật lockfile.

  1. Kiểm tra phiên bản Next.js, React và React DOM trong package.json.
  2. Chạy npx fix-react2shell-next tại thư mục gốc dự án.
  3. Kiểm tra Git để biết dependency nào đã thay đổi.
  4. Cập nhật thủ công React và React DOM nếu chúng vẫn ở phiên bản bị ảnh hưởng.
  5. Chạy lại npm để cài dependency mới.
  6. Chạy lại công cụ kiểm tra, bảo đảm không còn package bị ảnh hưởng.
Giao diện so sánh Git hiển thị thay đổi phiên bản dependency trong package.json
So sánh thay đổi trong Git giúp bạn xác nhận cả Next.js và React đã được cập nhật đúng.

Đừng triển khai phiên bản mới chỉ vì nó vừa phát hành

Một kinh nghiệm thực tế đáng cân nhắc là không phải lúc nào bản mới nhất cũng là lựa chọn phù hợp nhất cho hệ thống đang chạy ổn định. Các phiên bản mới thường cần thời gian để cộng đồng phát hiện, báo cáo và xử lý lỗi.

Điều đó không có nghĩa là bạn bỏ qua cập nhật. Cách làm hợp lý hơn là xây dựng quy trình theo dõi security advisory, kiểm tra dependency định kỳ và ưu tiên vá ngay các lỗ hổng critical. Với bản phát hành lớn, bạn có thể đánh giá kỹ mức độ ổn định trước khi đưa vào môi trường chính thức.

Nếu dự án chỉ chạy local để học tập, tác động thực tế không giống một ứng dụng đang mở ra Internet. Nhưng khi website đã triển khai lên VPS, việc cập nhật bản vá là cần thiết để giảm nguy cơ mất quyền kiểm soát hệ thống.

FAQ

Website dùng Next.js 13 hoặc 14 Stable có cần vá không?

Thông tin công bố nêu rằng Next.js 15 và 16 bị ảnh hưởng, còn Next.js 14 chỉ bị ảnh hưởng ở bản Canary. Các bản Stable của Next.js 14 và các bản cũ hơn được nêu là không thuộc phạm vi ảnh hưởng này.

Công cụ npx có tự cập nhật cả React không?

Không hoàn toàn. Công cụ được sử dụng để xử lý Next.js, vì vậy bạn vẫn cần kiểm tra và cập nhật thủ công React cùng React DOM khi các phiên bản này nằm trong danh sách bị ảnh hưởng.

Dự án chạy local có nguy hiểm như VPS không?

Dự án chỉ chạy local không có mức phơi bày giống ứng dụng đã triển khai công khai trên VPS. Dù vậy, bạn vẫn nên cập nhật dependency để môi trường phát triển nhất quán và an toàn hơn.

Nếu website của bạn đang vận hành bằng Next.js trên VPS, một quy trình kiểm tra dependency và cập nhật bảo mật rõ ràng nên là phần nền tảng của dịch vụ [thiết kế website chuyên nghiệp](https://mintstack.vn) tại MintStack.

 

Hotline Zalo Zalo
AI Avatar

Trợ lý ảo AI

Sẵn sàng hỗ trợ

AI Avatar
Xin chào! Em là trợ lý ảo của MintStack, sẵn sàng hỗ trợ anh/chị tìm hiểu về dịch vụ thiết kế website, SEO, content marketing và các giải pháp công nghệ phù hợp. Anh/chị đang quan tâm đến vấn đề gì ạ?
13:27