Lỗ hổng nghiêm trọng trên Next.js cho phép vượt qua cơ chế xác thực

WhiteHat Team

Administrators
Thành viên BQT
09/04/2020
112
1.080 bài viết
Lỗ hổng nghiêm trọng trên Next.js cho phép vượt qua cơ chế xác thực
Một lỗ hổng bảo mật cực kỳ nghiêm trọng vừa được phát hiện trên framework Next.js, đe dọa trực tiếp các ứng dụng web trên toàn cầu. Lỗ hổng này cho phép kẻ tấn công truy cập trực tiếp vào các khu vực quản trị và dữ liệu nhạy cảm mà không cần bất kỳ thông tin đăng nhập nào, đặt ra cảnh báo nghiêm túc cho các tổ chức dựa hoàn toàn vào middleware của Next.js để bảo vệ ứng dụng.

nextjs.png

Lỗ hổng mang mã định danh CVE-2025-29927 xuất phát từ cách Next.js xử lý header x-middleware-subrequest trong middleware. Ban đầu, header này được thiết kế để nhận diện các subrequest nội bộ và ngăn vòng lặp vô hạn trong middleware. Tuy nhiên, việc triển khai chưa đúng cách đã tạo ra kẽ hở: các yêu cầu bên ngoài có thể giả mạo header, khiến middleware nhầm nhận là subrequest nội bộ và bỏ qua toàn bộ kiểm tra authorization.

Kẻ tấn công có thể gửi các yêu cầu HTTP kèm header x-middleware-subrequest được tùy chỉnh. Khi middleware nhận header này, nó sẽ nhầm tưởng đây là subrequest nội bộ, cho phép truy cập trực tiếp vào các endpoint quản trị hoặc dữ liệu nhạy cảm mà không cần đăng nhập. Một ví dụ cơ bản về cách khai thác như sau:

Mã:
GET /admin HTTP/1.1
Host: vulnerable-app.com
x-middleware-subrequest: pages/_middleware

Cách khai thác thay đổi theo phiên bản Next.js. Với các phiên bản từ 12.2 trở xuống, header cần thiết là pages/_middleware để vượt qua middleware trong thư mục pages. Các phiên bản từ 12.2 đến trước 13.2.0 phải sử dụng middleware.ts làm giá trị header. Ngay cả với các phiên bản từ 13.2.0 trở đi, mặc dù có cơ chế bảo vệ độ sâu đệ quy, lỗ hổng cơ bản vẫn tồn tại nếu tin tặc lặp tên middleware trong header. Các nhà nghiên cứu bảo mật đã phát triển proof-of-concept scripts, tự động quét các endpoint quản trị phổ biến như /admin, /dashboard hay /settings, chèn header độc hại để nhanh chóng xác định các điểm truy cập dễ bị tấn công trên toàn bộ ứng dụng.

Hậu quả của lỗ hổng này đặc biệt nghiêm trọng đối với những ứng dụng chỉ dựa vào middleware Next.js để bảo vệ. Tin tặc có thể truy cập dữ liệu nhạy cảm của người dùng, thay đổi cấu hình ứng dụng hoặc thực thi các chức năng quản trị mà không cần thông tin xác thực. Tình huống càng nguy hiểm hơn khi ứng dụng sử dụng JWT hoặc cookie làm cơ chế xác thực chính, bởi header độc hại có thể hoàn toàn vượt qua các kiểm tra token, khiến lớp bảo vệ middleware trở nên vô hiệu. Điểm CVSS 3.1 của lỗ hổng này được đánh giá 9.8, cho thấy mức độ nghiêm trọng và khả năng khai thác thực tế cao.

Để giảm thiểu rủi ro, các tổ chức sử dụng Next.js cần:
  • Cập nhật bản vá bảo mật ngay khi có sẵn.
  • Đánh giá toàn bộ middleware đang triển khai, không dựa duy nhất vào một lớp bảo vệ.
  • Triển khai các lớp kiểm soát authorization bổ sung theo chiến lược defense-in-depth, đảm bảo quyền truy cập được kiểm soát ở nhiều tầng của ứng dụng
Phát hiện này nhấn mạnh tầm quan trọng của chiến lược bảo mật đa tầng (defense-in-depth), đảm bảo rằng các cơ chế kiểm soát authorization tồn tại ở nhiều lớp khác nhau, từ đó hạn chế nguy cơ khi một lớp bảo vệ bị lộ hoặc khai thác.

Tổng hợp
 
Chỉnh sửa lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
cve-2025-29927 next.js
Bên trên