Next.js vá khẩn 2 lỗ hổng RCE nghiêm trọng trong use cache và xử lý ảnh SVG
Nội dung bài viết

Ngày 14/10/2026, nhóm phát triển Next.js đã phát hành một bản cập nhật bảo mật ngoài lịch để vá hai lỗ hổng nghiêm trọng cho phép thực thi mã từ xa (RCE) mà không cần xác thực, kèm theo một lỗ hổng từ chối dịch vụ (DoS) mức cao.

Vercel - đơn vị phát triển Next.js - chấm cả hai lỗ hổng RCE ở mức nghiêm trọng (critical) với điểm CVSS 9.5. Bản vá có trong Next.js 16.4.1 và 15.5.28, hai phiên bản hỗ trợ dài hạn (LTS) đang được duy trì.

Nếu website hoặc ứng dụng của bạn đang chạy Next.js 15 hay 16, hãy đọc phần "Cần làm gì" bên dưới và lên kế hoạch nâng cấp sớm.

Ba lỗ hổng được vá

Lỗ hổngPhiên bản bị ảnh hưởngĐã vá trongAi bị ảnh hưởng
Thực thi mã qua use cache (GHSA-673q-mjm6-r5xr)16.0.0 đến 16.4.016.4.1Ứng dụng App Router bật Cache Components, có hàm use cache trả về nhiều hơn một typed array
Thực thi mã qua ảnh SVG (CVE-2026-96889, GHSA-2464-fhr4-w9xw)10.0.0 đến 15.5.27 và 16.0.0 đến 16.4.016.4.1, hoặc 15.5.28 kèm sharp 0.35.5 trở lênỨng dụng đưa file SVG do người dùng gửi lên vào sharp, chạy trên Linux dùng glibc
Từ chối dịch vụ qua Server Actions (GHSA-p3m5-59mp-jv5r)13.0.0 đến 15.5.27 và 16.0.0 đến 16.4.015.5.28, 16.4.1Ứng dụng App Router có ít nhất một Server Action

Chi tiết từng lỗ hổng

1. Lỗ hổng trong React Server Components (use cache)

Lỗ hổng thứ nhất nằm trong React Server Components - tính năng của React cho phép chạy các thành phần giao diện ngay trên máy chủ. Theo cảnh báo của React, lỗi ảnh hưởng tới ba gói react-server-dom-webpack, react-server-dom-parcel và react-server-dom-turbopack, từ phiên bản 19.0.0 đến 19.3.0. React mô tả đây là lỗi chỉ xảy ra trong "những trường hợp cực kỳ hiếm, khi phản hồi mang nhiều typed array cùng một giá trị do kẻ tấn công kiểm soát".

Trong ứng dụng Next.js, lỗi bị kích hoạt khi một hàm use cache trả về nhiều hơn một typed array. Vì vậy chỉ những ứng dụng Next.js 16 có bật Cache Components (tính năng đứng sau use cache) mới bị ảnh hưởng. Dù vậy, Vercel vẫn khuyến nghị nâng cấp kể cả khi ứng dụng của bạn không có hàm nào như vậy.

2. Lỗ hổng trong librsvg khi xử lý ảnh SVG

Lỗ hổng thứ hai là lỗi bộ nhớ trong librsvg, thư viện mã nguồn mở dùng để vẽ ảnh SVG. Next.js dùng tới thư viện này thông qua gói sharp đi kèm. Theo cảnh báo, kẻ tấn công có thể thực thi mã khi Next.js chạy trên Linux dùng glibc.

Mặc định Next.js không tối ưu file SVG. Muốn phục vụ SVG qua bộ tối ưu ảnh, bạn phải tự bật tuỳ chọn dangerouslyAllowSVG. Tuy nhiên, cùng thư viện này còn được dùng để dựng ảnh cho next/og - tính năng tạo ảnh xem trước khi chia sẻ lên mạng xã hội - nếu tính năng đó chạy trên Node.js runtime.

3. Lỗ hổng từ chối dịch vụ qua Server Actions

Lỗ hổng thứ ba cho phép làm tê liệt máy chủ. Với ứng dụng App Router có ít nhất một Server Action, kẻ tấn công có thể gửi các request được chế tạo đặc biệt để đẩy một tiến trình máy chủ lên 100% CPU, khiến nó không xử lý được request nào khác. Ứng dụng dùng Pages Router hoặc không có Server Action nào thì không bị ảnh hưởng.

Mức độ ảnh hưởng còn tuỳ nơi bạn triển khai. Chẳng hạn Netlify cho biết nền tảng của họ không chạy đoạn mã tối ưu ảnh nên tác động khá hạn chế, nhưng vẫn khuyên khách hàng nâng cấp.

Cần làm gì ngay

Nâng cấp Next.js: lên 16.4.1 nếu bạn đang dùng bản 16, hoặc 15.5.28 nếu đang dùng bản 15. Sau đó build và deploy lại ứng dụng.

Kiểm tra phiên bản sharp, nhất là với Next.js 15:

  • Với Next.js 16.4.1, gói sharp bản đã vá được cài tự động vì phiên bản này bắt buộc sharp 0.35.5.
  • Với Next.js 15.5.28 thì không chắc chắn. Bản này vẫn chấp nhận sharp 0.34.x cũ (bản còn lỗi), và nâng cấp đè lên bản cài sẵn có thể giữ nguyên sharp cũ. Hãy kiểm tra bằng lệnh:
npm ls sharp

Nếu sharp thấp hơn 0.35.5, hãy cập nhật nó lên 0.35.5 hoặc mới hơn.

Nếu chưa thể nâng cấp Next.js ngay: riêng lỗ hổng ảnh SVG có cách tạm thời. Bạn có thể đảm bảo sharp từ bản 0.35.5 trở lên, hoặc chặn hẳn việc xử lý SVG trong sharp như cảnh báo của sharp hướng dẫn:

sharp.block({ operation: ["VipsForeignLoadSvg"] });

Hai lỗ hổng use cache và Server Actions không có cách khắc phục tạm thời, chỉ nâng cấp mới vá được.

Lưu ý về công cụ quét lỗ hổng: tính đến ngày 15/10, hai cảnh báo use cache và Server Actions chưa có mã CVE và chưa xuất hiện trong cơ sở dữ liệu mà npm audit sử dụng. Vì vậy các công cụ quét dependency có thể không báo hai lỗi này - đừng chỉ dựa vào chúng. Riêng lỗi ảnh SVG thì vẫn được phát hiện qua cảnh báo của chính sharp.

Lần thứ ba trong ba tháng lỗ hổng đến từ xử lý ảnh

Đây là lần thứ ba kể từ tháng 8 mà khâu xử lý ảnh của Next.js dẫn tới lỗ hổng thực thi mã:

  • Tháng 8: lỗi trong thư viện libheif (dùng qua sharp) cho phép thực thi mã khi bộ tối ưu ảnh xử lý một file AVIF được chế tạo đặc biệt.
  • Tháng 9: lỗi trong next/og cho phép văn bản do kẻ tấn công kiểm soát làm thay đổi file SVG được tạo ra.
  • Tháng 10: lỗi librsvg trong bài này.

Lần này Next.js không sửa mã xử lý ảnh của chính mình. Bản 16.4.1 vẫn dùng bộ tối ưu ảnh giống hệt 16.4.0, và vá lỗi bằng cách nâng sharp đi kèm lên 0.35.5 - bản có librsvg đã được vá (2.63.2).

Lỗ hổng librsvg (CVE-2026-96889) được công bố ngày 23/9 và được vá trong sharp ngày 27/9. Red Hat chấm lỗi này 7.8 điểm và cho rằng cần có tương tác của người dùng, ví dụ mở một file độc hại. Trong khi đó Vercel đánh giá mức phơi nhiễm trên Next.js là 9.5 điểm, có thể khai thác qua mạng.

Nhà nghiên cứu phát hiện lỗi librsvg, Rafael B. Dias, cho biết đây cũng chính là điểm yếu đứng sau lỗ hổng next/og hồi tháng 9 - lỗ hổng mà mã khai thác (dành cho một cấu hình máy chủ cụ thể) đã được công bố công khai. Người duy trì sharp còn cảnh báo rằng việc lỗi dẫn tới thực thi mã hay chỉ làm sập ứng dụng có thể phụ thuộc vào bản Node.js trên máy chủ, vì các bản Node.js chính thức không được gia cố trước kiểu tấn công bộ nhớ này.

Không phải React2Shell

Lỗ hổng React Server Components lần này nằm trong cùng ba gói với React2Shell - lỗ hổng mức nghiêm trọng tối đa được công bố tháng 12/2025 và từng bị khai thác trên diện rộng. Tuy nhiên phạm vi của lỗi mới hẹp hơn nhiều, chỉ xảy ra trong những trường hợp rất đặc thù như đã nêu ở trên.

Tính đến ngày 15/10, chưa có báo cáo công khai nào về việc ba lỗ hổng này bị khai thác trong thực tế. Nhưng với lịch sử của React2Shell, đây không phải lý do để trì hoãn việc nâng cấp.

Web99 khuyến nghị

  • Kiểm tra ngay phiên bản Next.js và sharp của mọi website, ứng dụng đang vận hành.
  • Ưu tiên nâng cấp các ứng dụng Next.js 16 có bật Cache Components, và các ứng dụng cho phép người dùng tải ảnh SVG lên.
  • Sau khi nâng cấp, build và deploy lại; đừng chỉ cập nhật file package.json trên máy dev.

Nếu bạn cần hỗ trợ kiểm tra hoặc nâng cấp website Next.js, hãy liên hệ Web99 qua hotline hoặc Zalo ở góc phải màn hình.


Nguồn tham khảo: The Hacker News, thông báo bảo mật của Next.js.