3 phút đọc

Next.js vá khẩn hai lỗ hổng chạy mã từ xa, điểm 9,5

Next.js 16.4.1 và 15.5.28 vá hai lỗi cho phép chạy mã từ xa không cần đăng nhập, một ở bộ nhớ đệm `use cache`, một ở khâu xử lý ảnh SVG qua thư viện sharp. Kèm một lỗi làm treo server qua Server Actions.

Ngày 14/10, đội Next.js phát hành bản vá ngoài lịch 16.4.1 và 15.5.28. Bản vá sửa hai lỗi được chấm 9,5/10 theo CVSS v4, cả hai đều cho phép chạy mã trên server mà không cần đăng nhập. Ngày 20/10, Cơ quan An ninh mạng Singapore (CSA) phát cảnh báo yêu cầu vá ngay.

Nếu bạn nhờ AI dựng app bằng Next.js rồi tự chạy trên VPS hay Docker, hãy đọc kỹ bài này.

Mô phỏng lỗi: ảnh SVG chế sẵn đi qua bộ tối ưu ảnh của Next.js, thư viện sharp xử lý sai bộ nhớ và hacker chạy được lệnh

Lỗi 1: ảnh SVG làm hỏng bộ nhớ của sharp (CVE-2026-96889)

Next.js có sẵn API tối ưu ảnh, dùng thư viện sharp để thu nhỏ và đổi định dạng ảnh. Thư viện này có một lỗi về bộ nhớ khi xử lý ảnh SVG. Kẻ tấn công lợi dụng lỗi đó để chạy mã trên server.

  • Ảnh hưởng: Next.js từ 10.0.0 đến 15.5.27, và 16.0.x đến 16.4.0
  • Điều kiện được nêu: server chạy Linux dùng glibc, tức phần lớn VPS và image Docker phổ thông
  • Cách tạm thời nếu chưa nâng cấp được: bảo đảm bản sharp mà Next.js đang dùng là 0.35.5 trở lên

Lỗi 2: use cache trả về mảng nhị phân

Lỗi này chỉ có ở Next.js 16 (16.0.0 đến 16.4.0). Lỗi xảy ra với app dùng App Router bật Cache Components, khi một hàm use cache trả về nhiều typed array như Uint8Array. Kẻ tấn công chạy được mã trên server mà không cần đăng nhập.

Lỗi này chưa có mã CVE, chỉ có mã GitHub GHSA-673q-mjm6-r5xr. Đội Next.js không đưa cách vá tạm nào và khuyên nâng cấp ngay cả khi app của bạn không có hàm kiểu này.

Kèm theo: Server Actions làm treo server

Một lỗi mức cao (8,2) khác: request chế sẵn khiến server ngốn CPU tới mức không trả lời được nữa. Lỗi chỉ ảnh hưởng app dùng App Router có ít nhất một Server Action, từ bản 13.0.0 trở lên. App dùng Pages Router không bị.

Nên làm gì

Nâng cấp. Chạy lệnh này rồi build và deploy lại:

npm install next@16.4.1   # hoặc next@15.5.28 nếu đang ở nhánh 15

Kiểm tra sharp. Chạy npm ls sharp, bảo đảm không còn bản nào dưới 0.35.5. Nâng cấp Next.js thường kéo theo bản sharp mới, nhưng nếu dự án có lockfile cũ thì vẫn nên kiểm tra.

Đừng chỉ tin vào “đã update”. Kiểm tra package-lock.json trên server. Image Docker cũng phải build lại, vì image đã build trước đó vẫn chứa bản cũ.

Hiện chưa có báo cáo nào về việc hai lỗi này bị khai thác thực tế. Nhưng Next.js rất phổ biến, nên đây là thời điểm vá trước khi có người viết được mã khai thác.


App Next.js của bạn đang chạy trên Vercel hay tự host? Đã nâng cấp chưa? Kể trong cộng đồng Vibe Code & Bảo Mật nhé.

Nguồn

Chia sẻ lên Facebook

Bình luận

Đang tải bình luận…