Thank You For Reaching Out To Us
We have received your message and will get back to you within 24-48 hours. Have a great day!

Next.js bị tấn công bởi 13 lỗ hổng bảo mật mới: Tại sao việc triển khai tự lưu trữ cần được xử lý ngay lập tức

10 phút đọc

Tuần này tiếp tục là một tuần đầy thách thức đối với những người đang vận hành cơ sở hạ tầng tự lưu trữ. Vào ngày 7 tháng 5 năm 2026, Vercel đã công bố 13 lỗ hổng bảo mật mới ảnh hưởng đến môi trường tự lưu trữ và phát hành các bản vá bảo mật khẩn cấp cho các phiên bản Next.js 15.5.18 và 16.2.6. Trong số đó, CVE-2026-44578 đã thu hút sự chú ý từ cộng đồng bảo mật do phạm vi ảnh hưởng rộng lớn của nó.

Theo thông báo, lỗ hổng này cho phép kẻ tấn công lợi dụng việc xử lý nâng cấp WebSocket để kích hoạt hành vi giả mạo yêu cầu phía máy chủ (SSRF) bên trong các máy chủ Next.js dễ bị tổn thương.

Nếu bạn đang vận hành một ứng dụng Next.js tự lưu trữ, bạn cần phải hành động ngay bây giờ.

Tình hình

Bản cập nhật bảo mật tháng 5 năm 2026 của Vercel khắc phục 13 lỗ hổng CVE thuộc nhiều loại khác nhau, bao gồm bỏ qua phần mềm trung gian, tấn công từ chối dịch vụ, làm nhiễm độc bộ nhớ cache, tấn công XSS và các lỗ hổng SSRF mức độ nghiêm trọng cao. Đây không phải là các vấn đề lý thuyết mà ảnh hưởng đến hoạt động thực tế của các ứng dụng Next.js phía máy chủ, và hầu hết đều có thể bị khai thác mà không cần xác thực.

Nếu bạn triển khai Next.js trên nền tảng của Vercel, bạn đã được bảo vệ. Cơ sở hạ tầng biên của họ đã được vá lỗi trước khi thông tin được công khai. Nhưng nếu bạn tự lưu trữ, dù trên máy chủ riêng, Docker, Kubernetes hay VPS, bạn có trách nhiệm nhanh chóng áp dụng các bản vá lỗi.

Các phiên bản bị ảnh hưởng là tất cả các bản phát hành Next.js trước phiên bản 15.5.18 (đối với nhánh 15.x) và 16.2.6 (đối với nhánh 16.x).

Nguồn: Vercel Security Changelog – May 2026

Lỗ hổng bảo mật nghiêm trọng: CVE-2026-44578

Vấn đề nghiêm trọng nhất trong bản phát hành này là CVE-2026-44578, một lỗ hổng SSRF được kích hoạt trong quá trình xử lý thiết lập kết nối với WebSocket.

Cách thức hoạt động

Next.js xác thực sai tiêu đề X-Forwarded-Host khi xử lý các yêu cầu bao gồm các tiêu đề websocket Connection: Upgrade và Upgrade. Kẻ tấn công có thể tạo ra một yêu cầu như sau:

  1. GET /api/public HTTP/1.1
  2. Host: victim-app.com
  3. Connection: Upgrade
  4. Upgrade: websocket
  5. X-Forwarded-Host: http://169.254.169.254/latest/meta-data/

Nếu máy chủ không được vá lỗi, Next.js sẽ sử dụng ngữ cảnh mạng của chính máy chủ để chuyển tiếp các yêu cầu đến địa chỉ được chỉ định bởi X-Forwarded-Host. Điều này có nghĩa là kẻ tấn công bên ngoài có thể truy cập vào các tài nguyên nội bộ mà máy chủ không nên để lộ.

Tại sao điều này lại quan trọng

Rủi ro trước mắt là việc truy cập vào các điểm cuối siêu dữ liệu đám mây:

  • AWS IMDSv1: http://169.254.169.254/latest/meta-data/
  • Siêu dữ liệu GCP: http://metadata.google.internal/computeMetadata/v1/
  • Azure IMDS: http://169.254.169.254/metadata/instance

Các điểm cuối này thường trả về thông tin xác thực IAM, mã thông báo tài khoản dịch vụ hoặc dữ liệu cấu hình phiên bản. Với những thông tin đó, kẻ tấn công có thể di chuyển ngang, can thiệp đặc quyền hoặc đánh cắp dữ liệu. Các nhà nghiên cứu bảo mật ước tính hiện có khoảng 79.000 phiên bản Next.js tự lưu trữ đang được kết nối với internet công cộng. Nếu bạn đang sử dụng một trong số đó và chưa vá lỗi, bạn rất có thể dễ bị tấn công.

Ai bị ảnh hưởng?

Bạn có nguy cơ gặp rủi ro nếu:

  • Bạn chạy Next.js ở chế độ máy chủ (SSR, định tuyến API, middleware) trên cơ sở hạ tầng của riêng bạn.
  • Phiên bản Next.js của bạn thấp hơn 15.5.18 hoặc 16.2.6.
  • Ứng dụng của bạn chấp nhận lưu lượng HTTP từ bên ngoài (trực tiếp hoặc thông qua bộ cân bằng tải).

Bạn có thể an toàn nếu:

  • Bạn đang lưu trữ trên Vercel (đã được vá lỗi ở vùng biên).
  • Bạn sử dụng lệnh xuất tiếp theo để tạo một trang web hoàn toàn tĩnh.
  • Phiên bản Next.js của bạn không thể truy cập được từ internet và bạn có các quy tắc kiểm soát truy cập ra nghiêm ngặt.

Ghi chú: Việc sử dụng phần mềm trung gian để xác thực không làm giảm thiểu các lỗ hổng này. Một số lỗ hổng CVE đã được khắc phục cố tình bỏ qua logic của phần mềm trung gian.

Cách kiểm tra phiên bản của bạn

Chạy một trong các lệnh sau trong thư mục dự án của bạn:

Kiểm tra phiên bản đã cài đặt. Nếu thấp hơn 15.5.18 hoặc 16.2.6 (tùy thuộc vào phiên bản chính của hệ điều hành), bạn cần nâng cấp.Ngoài ra, hãy kiểm tra file package.json của bạn. Nếu bạn sử dụng các phạm vi có dấu mũ hoặc dấu ngã (^15.5.0 hoặc ~16.2.0), hãy đảm bảo rằng file lockfile của bạn thực sự trỏ đến một phiên bản đã được vá lỗi. Đừng giả định – hãy kiểm tra file node_modules/next/package.json.

Các hành động cần thực hiện ngay lập tức

Nếu nhóm của bạn tự quản lý Next.js, việc vá lỗi cần được xử lý khẩn cấp.

1. Cập nhật Next.js ngay lập tức

Nâng cấp lên:

  • Next.js 15.5.18
  • Next.js 16.2.6
  • Hoặc các bản phát hành được vá lỗi mới hơn

Nếu ứng dụng của bạn có liên quan đến internet, đừng trì hoãn việc này.

2. Chặn các điểm cuối siêu dữ liệu nội bộ

Ngay cả sau khi vá lỗi, các dịch vụ siêu dữ liệu đám mây không bao giờ được phép truy cập công khai từ các vùng chứa ứng dụng trừ khi thực sự cần thiết.

Hạn chế quyền truy cập vào:

  • 169.254.169.254
  • AWS IMDSv1
  • Điểm cuối siêu dữ liệu GCP
  • Azure IMDS

Người dùng AWS cũng nên vô hiệu hóa hoàn toàn IMDSv1 và bắt buộc sử dụng IMDSv2.

3. Xem lại các quy tắc về máy chủ proxy ngược.

Kiểm tra:

  • Cấu hình Nginx
  • Thiết lập Traefik
  • Bộ cân bằng tải
  • Quy tắc chuyển tiếp WebSocket

Các tiêu đề nâng cấp được cấu hình sai đôi khi có thể làm tăng nguy cơ bị tấn công.

4. Giám sát các yêu cầu nội bộ đáng ngờ

Hãy tìm kiếm các mô hình giao thông bất thường liên quan đến:

  • Địa chỉ IP siêu dữ liệu
  • Phạm vi RFC1918 nội bộ
  • Yêu cầu gửi đi không mong đợi
  • Các sự cố bất thường khi nâng cấp WebSocket

Điều này đặc biệt quan trọng đối với các cụm máy chủ sản xuất xử lý lưu lượng truy cập công cộng.

5. Bảo mật về môi trường đánh giá

Nếu có khả năng phiên bản của bạn đã bị lộ ra ngoài khi đang ở trạng thái dễ bị tổn thương:

  • Xoay vòng thông tin đăng nhập đám mây
  • Xoay vòng khóa API
  • Xem xét hoạt động IAM
  • Kiểm tra nhật ký đánh giá để tìm kiếm quyền truy cập bất thường.

Không nên chủ quan rằng những nỗ lực khai thác thất bại sẽ không để lại dấu vết.

Tại sao điều này lại xảy ra?

Next.js đang phát triển rất nhanh chóng. Các tính năng như middleware, server actions, WebSocket proxies và React Server Components mở rộng chức năng, nhưng cũng làm tăng diện tích bề mặt tấn công. Với việc tự lưu trữ, trách nhiệm theo dõi và áp dụng các bản cập nhật bảo mật thuộc về người dùng.

Không có gì có thể thay thế cho một quy trình vá lỗi có kỷ luật. Hãy đăng ký nhận thông báo bảo mật từ Vercel. Theo dõi kho lưu trữ GitHub của Next.js để biết các thẻ bảo mật. Coi các bản cập nhật lớn của framework là các sự kiện bảo mật tiềm ẩn, chứ không chỉ là các bản phát hành tính năng.

Vấn đề lớn hơn: Sự tiện lợi so với quyền sở hữu cơ sở hạ tầng

Sự việc này nêu bật một thực tế khó chấp nhận mà nhiều đội cuối cùng cũng đối mặt:

"Tự lưu trữ có thể giúp tiết kiệm chi phí" – cho đến khi việc bảo trì cơ sở hạ tầng trở thành vấn đề an ninh.

Các framework như Next.js đang phát triển với tốc độ rất nhanh. Mặc dù tốc độ này cải thiện trải nghiệm của nhà phát triển, nhưng nó cũng làm tăng gánh nặng vận hành đối với việc triển khai tự lưu trữ.

  • Áp dụng các bản vá lỗi bảo mật
  • Tăng cường bảo mật trong quá trình hoạt động
  • Bảo trì máy chủ proxy ngược
  • Quản lý phụ thuộc
  • Giám sát cơ sở hạ tầng

Đối với các nhóm nhỏ không có quy trình DevSecOps chuyên dụng, các bản vá lỗi quan trọng rất dễ bị bỏ sót.

Nếu bạn quản lý cơ sở hạ tầng trọng yếu và không có đủ nguồn lực để kiểm tra, vá lỗi và tăng cường bảo mật ngay lập tức, hãy cân nhắc thuê dịch vụ hỗ trợ.

Haposoft có thể giúp các nhóm:

  • Kiểm tra các triển khai Next.js để phát hiện các lỗ hổng bảo mật CVE đã biết.
  • Áp dụng các bản vá khẩn cấp với chiến lược không gây gián đoạn hoạt động.
  • Tăng cường bảo mật cơ sở hạ tầng đám mây chống lại các cuộc tấn công SSRF, rò rỉ siêu dữ liệu và vượt qua xác thực.
  • Thiết lập các quy trình bảo mật tự động để đảm bảo khả năng phục hồi lâu dài.

Nếu cần hỗ trợ, vui lòng liên hệ qua trang liên hệ hoặc để lại bình luận bên dưới. Chúng tôi sẽ phản hồi nhanh chóng đối với các vấn đề an ninh khẩn cấp.

Lời kết

Các framework hiện đại không còn chỉ là công cụ front-end; chúng đang phát triển để hoạt động như các nền tảng ứng dụng. Điều này làm thay đổi đáng kể kỳ vọng về bảo mật. Khi chạy Next.js trong môi trường sản xuất bên ngoài một nền tảng được quản lý, việc quản lý bản vá và tăng cường bảo mật cơ sở hạ tầng không còn được coi là các nhiệm vụ bảo trì tùy chọn; chúng trở thành một phần không thể thiếu trong vòng đời của ứng dụng.

cta-background

Đăng ký nhận bản tin hàng tháng của Haposoft

Nhận thông tin chuyên sâu về chuyển đổi số và cập nhật sự kiện trực tiếp vào hộp thư đến của bạn.
© Haposoft 2025. All rights reserved