Next.js là một trong những framework web phổ biến nhất hiện nay, nên mỗi bản vá bảo mật của nó đều ảnh hưởng tới rất nhiều website. Ngày 25/8/2026, đội ngũ Next.js phát hành 16.3.3 và 15.5.24 để xử lý hai lỗ hổng được xếp mức Critical, đều cho phép thực thi mã từ xa (RCE) mà không cần xác thực. Điều đáng chú ý là bản vá được đẩy sớm hơn một ngày so với lịch công bố ban đầu vì nhóm phát hiện thêm một lỗ hổng nghiêm trọng thứ hai.
Chuyện gì đã xảy ra?
Ban đầu, Next.js thông báo sẽ phát hành bản vá bảo mật tháng 8 vào ngày 26/8 cho một lỗ hổng. Sau đó, nhóm phát triển cập nhật rằng bản phát hành được dời lên ngày 25/8 và sẽ xử lý hai lỗ hổng cùng lúc, để người dùng chỉ cần nâng cấp một lần. Theo tổng hợp từ Netlify, hai lỗ hổng gồm:
- CVE-2026-75604 (GHSA-p293-qw3h-jr36): thực thi mã từ xa không cần xác thực trên các máy chủ chạy Windows. Ảnh hưởng các phiên bản từ 13.4.0 tới trước 15.5.24, và từ 16.0.0 tới trước 16.3.3.
- GHSA-2xp9-vwfh-vxw4: thực thi mã từ xa không cần xác thực trong Image Optimization API khi xử lý file AVIF. Ảnh hưởng các phiên bản từ 10.0.0 tới trước 15.5.24, và từ 16.0.0 tới trước 16.3.3.
Cả hai đều được vá trong 15.5.24 và 16.3.3.
Ai bị ảnh hưởng?
Mức độ rủi ro phụ thuộc vào cách bạn triển khai ứng dụng:
- Tự host trên Windows (IIS, Windows Server, máy ảo Windows): chịu ảnh hưởng của CVE-2026-75604. Đây là nhóm có rủi ro cao nhất, và không hiếm ở các doanh nghiệp Việt Nam vốn dùng hạ tầng Windows nội bộ.
- Dùng tính năng tối ưu ảnh tích hợp (
next/imagevới endpoint/_next/imagedo chính server Next.js xử lý): chịu ảnh hưởng của lỗ hổng AVIF, bất kể hệ điều hành. - Nền tảng có cơ chế riêng: ví dụ, Netlify cho biết các site trên nền tảng này không bị ảnh hưởng vì hàm chạy trên Linux và yêu cầu
/_next/imageđược chuyển sang Image CDN riêng thay vì gọi API của Next.js. Tuy vậy, Netlify vẫn khuyến nghị nâng cấp.
Khoảng phiên bản bị ảnh hưởng của lỗ hổng AVIF rất rộng, kéo dài từ Next.js 10, nên nhiều dự án "cũ nhưng vẫn chạy" có thể đang phơi nhiễm mà đội ngũ không để ý.
Vì sao điều này quan trọng?
RCE không cần xác thực là loại lỗ hổng nguy hiểm nhất với ứng dụng web: kẻ tấn công chỉ cần gửi yêu cầu được chế tạo đặc biệt là có thể chạy mã trên máy chủ, từ đó đánh cắp biến môi trường, khóa API, truy cập cơ sở dữ liệu hoặc dùng máy chủ làm bàn đạp tấn công tiếp. Với Next.js, server thường giữ nhiều bí mật như chuỗi kết nối database hay token dịch vụ bên thứ ba, nên hậu quả có thể lan rộng.
Sự cố này cũng nhắc lại một thực tế: các tính năng "tiện lợi" như tối ưu ảnh tự động là bề mặt tấn công, vì chúng xử lý dữ liệu nhị phân phức tạp đến từ bên ngoài.
Nên làm gì tiếp theo?
- Kiểm tra phiên bản
nexttrong mọi dự án bằngnpm ls nexthoặc lệnh tương đương của pnpm, yarn. - Nâng cấp lên 16.3.3 trở lên (dòng 16) hoặc 15.5.24 trở lên (dòng 15), rồi build và triển khai lại.
- Với dự án ở dòng cũ hơn 15 không thể nâng cấp ngay, cân nhắc tạm tắt tối ưu ảnh tích hợp hoặc chuyển sang dịch vụ ảnh/CDN bên ngoài, đồng thời lên kế hoạch nâng cấp khẩn.
- Nếu tự host trên Windows, ưu tiên vá ngay và rà soát log truy cập để tìm dấu hiệu bất thường.
- Sau khi vá, cân nhắc xoay vòng các secret trên server nếu không chắc chắn hệ thống chưa bị khai thác.
- Bật cảnh báo bảo mật tự động (Dependabot, Renovate hoặc công cụ tương tự) để không bỏ lỡ các bản vá kế tiếp.
Kết luận
Hai lỗ hổng RCE trong cùng một bản vá là lời nhắc rằng việc cập nhật framework không nên chờ "đợt nâng cấp lớn". Hãy coi các bản vá bảo mật như việc cần làm ngay trong ngày, và xây dựng quy trình để việc nâng cấp một gói phụ thuộc chỉ mất vài phút thay vì vài tuần.






