CVE-2025-29927: Next.js Middleware Bypass Vulnerability
CVSS score: 9.1
Severity: Critical
CVSS: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L
Mô tả
Next.js là một framework React phổ biến để xây dựng các ứng dụng web toàn diện. Lỗ hổng CVE-2025-29927 cho phép kẻ tấn công bỏ qua các kiểm tra xác thực trong ứng dụng Next.js nếu các kiểm tra này được thực hiện trong middleware. Nguyên nhân xuất phát từ việc xử lý không đúng cách header nội bộ x-middleware-subrequest, cho phép kẻ tấn công gửi yêu cầu với header này để tránh các kiểm tra bảo mật quan trọng.
Lỗ hổng này được đánh giá với điểm CVSS 3.1 là 9.1 (Critical), cho thấy mức độ nghiêm trọng cao và cần được khắc phục ngay lập tức.
Lỗ hổng đã có POC được công khai tại https://github.com/aydinnyunus/CVE-2025-29927
Phạm vi ảnh hưởng:
- Các ứng dụng Next.js tự triển khai sử dụng middleware với lệnh next start và cấu hình output: 'standalone'
- Các phiên bản bị ảnh hưởng bao gồm:
- Next.js 15.x trước phiên bản 15.2.3
- Next.js 14.x trước phiên bản 14.2.25
- Next.js 13.x trước phiên bản 13.5.9
- Next.js 12.x trước phiên bản 12.3.5
Không bị ảnh hưởng:
- Các ứng dụng được lưu trữ trên Vercel hoặc Netlify.
- Các ứng dụng được triển khai dưới dạng xuất tĩnh (static exports), nơi middleware không được thực thi.
Tác động của lỗ hổng:
Nếu bị khai thác thành công, lỗ hổng này có thể dẫn đến:
- Bỏ qua xác thực: Kẻ tấn công có thể truy cập các khu vực giới hạn của ứng dụng mà không cần xác thực, dẫn đến rò rỉ thông tin nhạy cảm.
- Truy cập trái phép API: Nếu API của ứng dụng sử dụng middleware để xác thực hoặc ủy quyền, kẻ tấn công có thể gửi yêu cầu với header đặc biệt để bỏ qua các bước kiểm tra này.
- Leo thang đặc quyền: Trong một số trường hợp, kẻ tấn công có thể chiếm quyền điều khiển tài khoản hoặc thực hiện các hành động với quyền cao hơn mà không cần đăng nhập hợp lệ.
- Tấn công chuỗi cung ứng: Nếu ứng dụng Next.js bị ảnh hưởng là một phần của hệ thống lớn hơn, lỗ hổng này có thể bị lợi dụng để tấn công các hệ thống liên kết.
Biện pháp khắc phục:
- Cập nhật phiên bản Next.js:
- Đối với Next.js 15.x, cập nhật lên phiên bản 15.2.3 hoặc mới hơn.
- Đối với Next.js 14.x, cập nhật lên phiên bản 14.2.25 hoặc mới hơn.
- Đối với Next.js 13.x, cập nhật lên phiên bản 13.5.9 hoặc mới hơn.
- Đối với Next.js 12.x, cập nhật lên phiên bản 12.3.5 hoặc mới hơn.
- Biện pháp giảm thiểu tạm thời:
- Nếu việc cập nhật không khả thi ngay lập tức, cấu hình máy chủ web hoặc proxy của bạn để từ chối hoặc loại bỏ các yêu cầu chứa header x-middleware-subrequest.
//NGINX
proxy_set_header x-middleware-subrequest "";
//Apache
RequestHeader unset x-middleware-subrequest
Tham khảo:
- https://github.com/aydinnyunus/CVE-2025-29927
- https://github.com/vercel/next.js/security/advisories/GHSA-f82v-jwr5-mffw
- https://www.picussecurity.com/resource/blog/cve-2025-29927-nextjs-middleware-bypass-vulnerability
- https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware