Next.js 'Hở Sườn': Lỗ Hổng Này Khiến Các Trang Bảo Mật Bị 'Đi Qua' Như Không!
Lê Lân
0
Lỗ Hổng Logic Trong Next.js Middleware Làm Lộ Các Route Bảo Vệ Trong Ứng Dụng AI Phổ Biến
Mở Đầu
Lỗ hổng bảo mật trong các framework phổ biến có thể gây ra hậu quả nghiêm trọng, đặc biệt khi ảnh hưởng đến hệ thống xác thực và bảo vệ route.
Next.js, một framework web full-stack được phát triển bởi Vercel, đang ngày càng được ưa chuộng trong các ứng dụng sử dụng SSR, SSG và Edge Functions. Tuy nhiên, vào tháng 3 năm 2025, một lỗ hổng nghiêm trọng (CVE-2025-29927) đã được công bố, liên quan đến middleware xử lý xác thực và bảo mật trong Next.js. Lỗ hổng này cho phép tin tặc giả mạo header nội bộ, dẫn đến việc bỏ qua kiểm tra xác thực và bảo vệ các route nhạy cảm như trang quản trị hay API.
Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết về nguyên nhân, cách khai thác, tác động của lỗ hổng, cũng như hướng xử lý để bảo vệ ứng dụng một cách hiệu quả.
Tổng Quan Về Lỗ Hổng
Tóm Tắt Lỗ Hổng
Next.js middleware xử lý một header nội bộ là x-middleware-subrequest, nhưng không kiểm tra tính hợp lệ của header này khi nhận các yêu cầu bên ngoài. Điều này tạo cơ hội cho kẻ tấn công giả mạo header, từ đó bypass toàn bộ logic xác thực, chuyển hướng hoặc các bộ lọc bảo mật middleware khác.
Phạm Vi Ảnh Hưởng
Ứng dụng sử dụng Next.js middleware cho nhiệm vụ xác thực, chuyển hướng hoặc lọc yêu cầu.
Middleware chạy theo chế độ Edge Function (mặc định trên các phiên bản gần đây).
Header x-middleware-subrequest có thể được gán tùy ý trong các yêu cầu bên ngoài.
Các Phiên Bản Next.js Bị Ảnh Hưởng
Khoảng phiên bản
Tình trạng
11.1.4 đến 13.5.6
Bị ảnh hưởng
14.0.0 đến 14.2.24
Bị ảnh hưởng
15.0.0 đến 15.2.2
Bị ảnh hưởng
Phiên Bản Đã Sửa
Phiên bản
Ghi chú
14.2.25
Phiên bản đã vá
15.2.3
Phiên bản đã vá
Nguyên Nhân Gốc Rễ
Next.js tin tưởng header x-middleware-subrequest khi được gửi đến mà không kiểm tra nguồn gốc hay tính xác thực của nó. Header này vốn chỉ dùng cho mục đích nội bộ, nhằm phân biệt các sub-request của middleware trong quá trình xử lý.
Việc thiếu xác thực header này dẫn đến việc kẻ tấn công có thể chèn thủ công header giả mạo, khiến hệ thống tin là yêu cầu đã được xử lý và bỏ qua bước middleware quan trọng.
Điều Kiện Để Lợi Dụng Lỗ Hổng
Ứng dụng Next.js sử dụng middleware cho xác thực hoặc kiểm duyệt truy cập.
Middleware chạy trên Edge Function mode (mặc định trên phiên bản mới).
Kẻ tấn công có thể gửi request từ bên ngoài với header x-middleware-subrequest giả mạo.
Tác Động Của Lỗ Hổng
Bypass Xác Thực
Tin tặc có thể truy cập trực tiếp các trang và API được bảo vệ như:
Trang quản trị
Thông tin người dùng
API nhạy cảm
mà không cần token hay đăng nhập.
Bỏ Qua Các Bộ Lọc Bảo Mật
Các chính sách bảo mật thiết lập trong middleware như:
Content Security Policy (CSP)
Header injection
Phân quyền truy cập
cũng có thể bị vượt qua, tạo điều kiện cho các cuộc tấn công XSS hoặc truy cập trái phép khác.
Không Cần Tương Tác Người Dùng
Lỗ hổng có thể bị khai thác hoàn toàn từ xa, không yêu cầu đăng nhập hay tương tác của người dùng.
Cách Khắc Phục Và Giảm Thiểu Rủi Ro
Nâng Cấp Phiên Bản Next.js
Cách hiệu quả và tối ưu nhất là nâng cấp Next.js lên phiên bản đã vá ngay lập tức:
Lỗ hổng CVE-2025-29927 trong Next.js middleware cho thấy tầm quan trọng của việc xác nhận và kiểm tra mọi header trong yêu cầu, đặc biệt là các header dùng nội bộ. Việc bỏ sót bước này khiến các route bảo vệ dễ dàng bị truy cập trái phép, đe dọa nghiêm trọng đến an toàn ứng dụng.
Để giữ an toàn: Luôn cập nhật framework lên phiên bản mới nhất, và triển khai các biện pháp phòng thủ bổ sung tại tầng hạ tầng mạng như WAF hoặc reverse proxy.
Hãy hành động ngay hôm nay bằng cách kiểm tra phiên bản Next.js bạn đang sử dụng và thực hiện nâng cấp hoặc áp dụng các biện pháp giảm thiểu phù hợp.
Về Tác Giả
Hi, tôi là Sharon, quản lý sản phẩm tại Chaitin Tech – đội ngũ phát triển SafeLine, một Web Application Firewall mã nguồn mở được thiết kế chống lại các mối đe dọa thực tế. Trong khi SafeLine tập trung bảo vệ tầng HTTP, trung tâm ứng phó khẩn cấp của chúng tôi cũng theo dõi và xử lý các lỗ hổng RCE, xác thực trên toàn bộ stack để hỗ trợ các nhà phát triển giữ an toàn tuyệt đối.