-
09/04/2020
-
141
-
1.897 bài viết
Lỗ hổng SSRF nghiêm trọng trong Next.js có thể bị khai thác để tấn công hệ thống nội bộ
Một lỗ hổng mã CVE-2026-44578 đang đe dọa cộng đồng phát triển web, đặc biệt với các hệ thống sử dụng framework Next.js theo mô hình tự triển khai (self-hosted). Đây là lỗ hổng dạng SSRF (Server-Side Request Forgery), một kiểu tấn công cho phép kẻ xấu “lợi dụng” máy chủ để gửi yêu cầu đến các hệ thống khác, kể cả những tài nguyên nội bộ vốn không được phép truy cập từ bên ngoài.
Lỗ hổng ảnh hưởng đến các phiên bản Next.js từ 13.4.13 đến trước 15.5.16 và từ 16.0.0 đến trước 16.2.5. Tin vui là nhà phát triển đã phát hành bản vá trong các phiên bản mới hơn. Tuy nhiên, các hệ thống chưa cập nhật vẫn đứng trước nguy cơ bị khai thác. Ngoài ra, các ứng dụng triển khai trực tiếp trên nền tảng Vercel không bị ảnh hưởng.
Về kỹ thuật, vấn đề nằm ở cách Next.js xử lý các yêu cầu nâng cấp kết nối WebSocket (WebSocket Upgrade). Khi trình duyệt hoặc client gửi truy vấn với các header như “Connection: Upgrade” và “Upgrade: websocket”, máy chủ cần kiểm tra chặt chẽ nguồn gốc và đích kết nối. Tuy nhiên, trong trường hợp này, việc kiểm tra không đầy đủ đã tạo ra backdoor.
Kẻ tấn công có thể gửi các truy vấn khiến máy chủ Next.js tự động kết nối tới các địa chỉ tùy ý. Điều nguy hiểm là những địa chỉ này có thể là hệ thống nội bộ như Redis, Elasticsearch, API nội bộ hoặc thậm chí là dịch vụ metadata trong môi trường cloud, nơi lưu trữ thông tin nhạy cảm như token truy cập. Nếu bị khai thác thành công, kẻ tấn công có thể thu thập dữ liệu, leo thang quyền truy cập hoặc làm bàn đạp cho các cuộc tấn công sâu hơn.
Khuyến nghị cho tổ chức và lập trình viên tại Việt Nam:
- Hãy kiểm tra ngay bạn đang dùng phiên bản Next.js nào và cập nhật lên bản mới đã sửa lỗi (từ 15.5.16 hoặc 16.2.5 trở lên) để tránh bị khai thác.
- Không nên để máy chủ có thể “tự do” truy cập vào các hệ thống nội bộ hoặc dịch vụ chứa thông tin nhạy cảm (như metadata trong cloud), vì đây là mục tiêu dễ bị tấn công.
- Thiết lập tường lửa và kiểm soát chặt các kết nối đi ra từ server, chỉ cho phép những kết nối thực sự cần thiết.
- Thường xuyên kiểm tra log để phát hiện các truy vấn WebSocket bất thường, đây có thể là dấu hiệu sớm của một cuộc tấn công.