KHUYẾN MÃI LỄ 30/4 – 1/5: GIẢM NGAY 20% DỊCH VỤ THIẾT KẾ WEBSITEKHUYẾN MÃI LỄ 30/4 – 1/5: GIẢM NGAY 20% DỊCH VỤ THIẾT KẾ WEBSITEKHUYẾN MÃI LỄ 30/4 – 1/5: GIẢM NGAY 20% DỊCH VỤ THIẾT KẾ WEBSITEKHUYẾN MÃI LỄ 30/4 – 1/5: GIẢM NGAY 20% DỊCH VỤ THIẾT KẾ WEBSITE
Tan Phat Media

Phân tích lỗ hổng DoS trong React Server Components & Next.js (2026)

29 tháng 1, 2026
3.764
Technology
Phân tích lỗ hổng DoS trong React Server Components & Next.js (2026) - Tấn Phát Digital

Sự chuyển dịch của ngành công nghiệp phát triển web hướng tới các mô hình kết hợp giữa xử lý tại máy chủ và máy khách đã đạt đến đỉnh cao với sự ra đời của React Server Components (RSC). Tuy nhiên, cuộc cách mạng này cũng mang lại những thách thức bảo mật chưa từng có. Trong giai đoạn từ tháng 12 năm 2025 đến tháng 1 năm 2026, một chuỗi các lỗ hổng nghiêm trọng đã được phát hiện, làm rung chuyển nền móng của các ứng dụng sử dụng React 19 và Next.js 15/16. Khởi đầu từ lỗ hổng thực thi mã từ xa (RCE) "React2Shell" (CVE-2025-55182), các nghiên cứu chuyên sâu sau đó đã tiếp tục lộ ra hàng loạt điểm yếu gây từ chối dịch vụ (DoS) nằm sâu trong giao thức truyền tải dữ liệu và các tính năng tối ưu hóa hệ thống. Bài báo cáo này cung cấp cái nhìn chuyên sâu về các lỗ hổng DoS gần đây nhất, bao gồm GHSA-83fc-fqcc-2hmg, CVE-2025-59471 và CVE-2025-59472.

1. Sự tiến hóa của các mối đe dọa bảo mật trong kỷ nguyên RSC

Để hiểu rõ tính chất cấp bách, cần xem xét bối cảnh lịch sử của sự kiện "React2Shell" (CVE-2025-55182). Vào cuối năm 2025, cộng đồng bảo mật xác định lỗi giải tuần tự hóa (deserialization) không an toàn trong giao thức "Flight" của React, cho phép RCE với điểm CVSS 10.0. Mặc dù các bản vá đã được triển khai, nhưng nỗ lực khắc phục RCE đã vô tình làm lộ ra những logic xử lý không hoàn thiện khác, dẫn đến các kịch bản kẻ tấn công có thể làm treo máy chủ hoặc tiêu tốn cạn kiệt tài nguyên mà không cần thực thi mã độc.

Các lỗ hổng DoS gần đây là kết quả của sự tương tác phức tạp giữa logic xử lý dữ liệu của React và môi trường Node.js. Khi ứng dụng chấp nhận các cấu trúc dữ liệu phức tạp từ người dùng để render phía máy chủ, nó đối mặt với rủi ro về quản lý tài nguyên.

Danh sách các lỗ hổng DoS chính (Cập nhật 26/01/2026):

  • GHSA-83fc-fqcc-2hmg: Ảnh hưởng đến các gói react-server-dom-*. Kẻ tấn công gửi yêu cầu HTTP đặc biệt đến Server Function endpoint gây treo máy chủ hoặc tràn bộ nhớ.

  • CVE-2025-59471: Lỗ hổng trong Next.js Image Optimizer. Xảy ra khi bật remotePatterns, cho phép hình ảnh từ xa quá lớn làm sập máy chủ do OOM (Out-of-Memory).

  • CVE-2025-59472: Lỗ hổng trong Next.js PPR (Minimal Mode). Ảnh hưởng đến resume endpoint, cho phép tấn công Zipbomb hoặc buffering không giới hạn.

  • CVE-2025-55184: Treo vòng lặp sự kiện (Event Loop) do tham chiếu Promise xoay vòng trong RSC.

2. Cơ chế kỹ thuật của lỗ hổng GHSA-83fc-fqcc-2hmg

Trọng tâm của các đợt cập nhật ngày 26 tháng 1 năm 2026 là GHSA-83fc-fqcc-2hmg. Các nhà nghiên cứu phát hiện ra rằng các bản vá DoS trước đó (như CVE-2025-55184) là không hoàn thiện. Vấn đề nằm ở các gói react-server-dom-webpack, react-server-dom-parcelreact-server-dom-turbopack.

Giải tuần tự hóa và vòng lặp vô hạn

Giao thức Flight của React chia dữ liệu thành các khối (chunks). Mỗi khối có thể tham chiếu đến khối khác. Lỗ hổng nảy sinh khi cơ chế giải mã gặp các cấu trúc tham chiếu xoay vòng (cyclical references). Kẻ tấn công có thể tạo yêu cầu HTTP chứa các tham chiếu Promise lồng nhau. Khi máy chủ cố gắng giải quyết (resolve) các Promise này, nó rơi vào vòng lặp vô hạn, làm treo luồng sự kiện duy nhất của Node.js, dẫn đến từ chối dịch vụ toàn diện.

Lỗ hổng này có điểm CVSS 7.5, cho phép khai thác từ xa không cần xác thực. Ngay cả khi lập trình viên không định nghĩa Server Function, framework (như Next.js App Router) vẫn có thể bị ảnh hưởng do hỗ trợ RSC mặc định.

3. Lỗ hổng Next.js Image Optimizer (CVE-2025-59471)

Lỗ hổng này ảnh hưởng đến các ứng dụng tự lưu trữ (self-hosted) Next.js sử dụng tính năng tối ưu hóa hình ảnh từ bên ngoài qua remotePatterns.

  • Cơ chế: Endpoint /_next/image tải hình ảnh từ nguồn xa vào bộ nhớ mà không kiểm tra giới hạn kích thước tệp tối đa.

  • Khai thác: Kẻ tấn công yêu cầu tối ưu hóa một ảnh cực lớn từ tên miền được phép. Khi Node.js nạp dữ liệu khổng lồ này, nó nhanh chóng vượt ngưỡng giới hạn bộ nhớ (JavaScript heap limit), gây sập tiến trình.

Phiên bản ảnh hưởng: Next.js >=10 đến <15.5.10 và >=16 đến <16.1.5. Các ứng dụng trên Vercel không bị ảnh hưởng do cơ chế bảo vệ hạ tầng của họ.

4. Lỗ hổng Next.js PPR và Minimal Mode (CVE-2025-59472)

CVE-2025-59472 liên quan đến tính năng thực nghiệm Partial Pre-Rendering (PPR) và "Minimal Mode" (NEXT_PRIVATE_MINIMAL_MODE=1).

  • Buffering không giới hạn: Máy chủ sử dụng Buffer.concat() để gộp request body vào vùng nhớ mà không kiểm tra kích thước.

  • Tấn công Zipbomb: Dữ liệu nén được giải nén bằng inflateSync() mà không giới hạn đầu ra. Một payload nén nhỏ có thể nở ra hàng GB trong bộ nhớ, vượt qua các giới hạn kiểm tra tại tầng proxy.

Kết quả là lỗi FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory, làm chấm dứt tiến trình Node.js ngay lập tức.

5. Tác động của Async Hooks và APM

Một chi tiết kỹ thuật được Tấn Phát Digital lưu ý là vai trò của async_hooks trong Node.js. React và Next.js sử dụng AsyncLocalStorage để theo dõi ngữ cảnh yêu cầu. Khi sử dụng các công cụ giám sát (APM) như Datadog hay OpenTelemetry, async_hooks luôn được kích hoạt. Trong môi trường này, các lỗi tràn ngăn xếp (stack overflow) do RSC sẽ khiến Node.js thoát hoàn toàn với mã lỗi 7 thay vì chỉ trả về mã lỗi 500, khiến cuộc tấn công DoS trở nên nghiêm trọng hơn.

6. Chiến lược giảm thiểu và nâng cấp

Việc giải quyết triệt để đòi hỏi cập nhật phần mềm và thay đổi cấu hình hạ tầng.

Cập nhật phiên bản (Ưu tiên hàng đầu)

Các tổ chức cần rà soát các tệp khóa (lockfiles) và nâng cấp lên các phiên bản an toàn phát hành ngày 26/01/2026:

  • React 19.0.x: Cập nhật từ các bản 19.0.0 - 19.0.3 lên phiên bản 19.0.4.

  • React 19.1.x: Cập nhật từ các bản 19.1.0 - 19.1.4 lên phiên bản 19.1.5.

  • React 19.2.x: Cập nhật từ các bản 19.2.0 - 19.2.3 lên phiên bản 19.2.4.

  • Next.js 15.x: Nâng cấp từ các phiên bản trước 15.5.10 lên phiên bản 15.5.10.

  • Next.js 16.x: Nâng cấp từ các phiên bản trước 16.1.5 lên phiên bản 16.1.5.

Biện pháp bảo vệ tạm thời

  1. Hạ tầng: Thiết lập client_max_body_size tại Proxy (Nginx/Apache) để ngăn chặn buffering không giới hạn.

  2. Cấu hình: Hạn chế hoặc xóa bỏ các tên miền không tin cậy trong remotePatterns của Image Optimizer.

  3. Vô hiệu hóa: Tắt tính năng PPR (experimental.ppr: false) hoặc Minimal Mode nếu không thực sự cần thiết.

  4. WAF: Cập nhật các luật tường lửa (như vWAF) để phát hiện và chặn các payload RSC bất thường hoặc các yêu cầu POST có tiêu đề Next-Resume: 1.

Sự xuất hiện liên tiếp của các lỗ hổng này cho thấy giai đoạn trưởng thành đầy thách thức của RSC. Tấn Phát Digital khuyến nghị các doanh nghiệp thực hiện rà soát và nâng cấp hệ thống ngay lập tức để đảm bảo tính sẵn sàng của dịch vụ trước các kịch bản tấn công DoS ngày càng tinh vi.

Câu hỏi thường gặp

Lỗ hổng DoS trong React Server Components (RSC) và Next.js thường xuất phát từ đâu?

Thường đến từ server-side rendering/streaming tốn CPU, truy vấn dữ liệu không kiểm soát, component tree quá sâu, hoặc route/Server Actions xử lý input lớn. Kẻ tấn công có thể tạo nhiều request “rẻ” nhưng khiến server làm việc “đắt”.

RSC “streaming” có thể bị khai thác DoS như thế nào?

Streaming giữ kết nối mở lâu và tạo nhiều đoạn render. Nếu có component chờ dữ liệu chậm, waterfall fetch, hoặc render phụ thuộc tham số ngẫu nhiên, attacker có thể giữ nhiều kết nối đồng thời, làm cạn worker, socket, và bộ nhớ.

Flight payload (RSC) có rủi ro DoS không?

Có. Nếu response RSC/Flight phình to do props quá lớn, danh sách dài, hoặc serialized data lặp lại, băng thông và CPU serialize/deserialize tăng mạnh. Khi kết hợp nhiều request song song, server dễ quá tải dù không có lỗi logic.

Những dấu hiệu nào cho thấy Next.js app đang bị DoS liên quan RSC?

P95/P99 latency tăng đột ngột, số kết nối đang mở cao, CPU/Memory spike theo request, log cho thấy cùng endpoint/route bị gọi dày, nhiều request không hoàn tất do timeout. Trên APM thường thấy thời gian render và data fetching chiếm đa số.

Các điểm nóng dễ bị DoS trong Next.js App Router là gì?

Route Handlers xử lý body lớn, Server Actions nhận FormData không giới hạn, generateMetadata chạy theo request, middleware xử lý phức tạp, dynamic routes gây cache miss liên tục, và image optimization hoặc parsing JSON nặng. Đây là nơi cần giới hạn và cache.

Server Actions có thể tạo bề mặt tấn công DoS ra sao?

Server Actions chạy trên server và thường dễ bị gọi lặp với input khác nhau để né cache. Nếu action thực hiện hashing, gọi DB/3rd-party, hoặc validate nặng mà thiếu rate limiting, attacker có thể bão request làm nghẽn tài nguyên.

Cách giảm rủi ro DoS khi dùng fetch trong Server Components là gì?

Tránh waterfall, dùng parallel fetch hợp lý, bật cache khi dữ liệu không cần realtime, đặt timeout/AbortController cho upstream chậm, và giới hạn kích thước dữ liệu trả về. Nên tách phần “đắt” sang background job hoặc precompute thay vì theo request.

Rate limiting và giới hạn tài nguyên nên đặt ở đâu trong Next.js?

Ưu tiên ở lớp gần biên nhất: CDN/WAF, reverse proxy, hoặc middleware/edge nếu phù hợp. Đồng thời giới hạn body size cho route handler, giới hạn concurrency cho tác vụ nặng, và dùng queue/circuit breaker khi phụ thuộc dịch vụ ngoài.

Có những lỗi cấu hình nào khiến Next.js dễ bị DoS hơn?

Bật dynamic rendering cho mọi route, vô hiệu cache không cần thiết, dùng regex/logic nặng trong middleware, render danh sách lớn trong Server Components, hoặc chạy image optimization cho nguồn không kiểm soát. Thiếu timeout và thiếu limit kích thước request/response cũng rất nguy hiểm.

Khi phát hiện nghi ngờ DoS liên quan RSC/Next.js, quy trình xử lý nhanh nên làm gì?

Khoanh vùng endpoint/route gây tải, bật chặn tạm thời bằng rate limit hoặc rule WAF, giảm tính động (force cache/disable feature đắt), thêm timeout cho upstream, rồi đo lại bằng trace. Sau đó cập nhật Next.js/React theo advisory và viết test tải để tránh tái diễn.

Bài viết liên quan

Hình ảnh đại diện của bài viết: Augment Code là gì? Hướng dẫn AI lập trình 2025

Augment Code là gì? Hướng dẫn AI lập trình 2025

Augment Code là gì? Công cụ AI hỗ trợ lập trình giúp developer tăng tốc độ code, giảm lỗi và tối ưu dự án. Phân tích chi tiết bởi Tấn Phát Digital.

Hình ảnh đại diện của bài viết: Cách Lấy Email Tên Miền Miễn Phí (2025) | Hướng Dẫn A–Z

Cách Lấy Email Tên Miền Miễn Phí (2025) | Hướng Dẫn A–Z

Hướng dẫn 2025 lấy email tên miền miễn phí: Zoho Mail (inbox thật), Cloudflare Email Routing/ImprovMX (chuyển tiếp), kèm SPF/DKIM/DMARC để tăng tỉ lệ vào inbox. Triển khai đồng bộ thương hiệu với Tấn Phát Digital.

Hình ảnh đại diện của bài viết: CDN Là Gì? Tại Sao Website Hiện Đại Cần Dùng CDN | Tấn Phát Digital

CDN Là Gì? Tại Sao Website Hiện Đại Cần Dùng CDN | Tấn Phát Digital

CDN (Content Delivery Network) là chìa khóa để tối ưu hiệu suất website hiện đại. Bài viết này Tấn Phát Digital sẽ giúp bạn hiểu rõ cách hoạt động của CDN và quy trình tích hợp các dịch vụ hàng đầu để nâng tầm trải nghiệm người dùng và vị thế trên công cụ tìm kiếm.

Hình ảnh đại diện của bài viết: Chi Phí Duy Trì Website Hàng Năm: Hosting, Tên Miền, Bảo Trì & Hơn Thế Nữa

Chi Phí Duy Trì Website Hàng Năm: Hosting, Tên Miền, Bảo Trì & Hơn Thế Nữa

Tìm hiểu chi tiết về các khoản chi phí duy trì website hàng năm, bao gồm hosting, tên miền, bảo trì, bảo mật, và nhiều hơn nữa. Khám phá cách Tấn Phát Digital có thể giúp bạn quản lý và tối ưu hóa website một cách hiệu quả.

Hình ảnh đại diện của bài viết: Danh Sách Dịch Vụ Miễn Phí Và Trả Phí Dành Cho Developers - Tấn Phát Digital

Danh Sách Dịch Vụ Miễn Phí Và Trả Phí Dành Cho Developers - Tấn Phát Digital

Bài viết tổng hợp các dịch vụ SaaS, PaaS, IaaS miễn phí và trả phí hữu ích cho infrastructure developers, được hỗ trợ bởi Tấn Phát Digital để giúp bạn tiết kiệm thời gian và chi phí.

Hình ảnh đại diện của bài viết: Domain Là Gì? Cách Chọn Tên Miền Đẹp, Chuẩn SEO

Domain Là Gì? Cách Chọn Tên Miền Đẹp, Chuẩn SEO

Tên miền không chỉ là địa chỉ website mà còn là tài sản chiến lược quan trọng nhất trong việc định hình danh tính số. Tìm hiểu ngay cách chọn domain tối ưu cùng chuyên gia Tấn Phát Digital.

Hình ảnh đại diện của bài viết: Everything Claude Code: Hệ sinh thái tối ưu hóa hiệu suất cho AI Agents

Everything Claude Code: Hệ sinh thái tối ưu hóa hiệu suất cho AI Agents

Everything Claude Code (ECC) đại diện cho một phương pháp luận mới trong lập trình AI, cung cấp hệ thống tác nhân phụ chuyên biệt, kỹ năng workflow và cơ chế tự học để nâng cao năng suất.

Hình ảnh đại diện của bài viết: Google Gemini 3.1 Pro Ra Mắt: Đột Phá Tư Duy Logic & Ứng Dụng Thực Tế

Google Gemini 3.1 Pro Ra Mắt: Đột Phá Tư Duy Logic & Ứng Dụng Thực Tế

Bước nhảy vọt từ Gemini 3 Deep Think đến 3.1 Pro: Khi trí tuệ AI không chỉ dừng lại ở câu trả lời mà trở thành giải pháp thực thi phức tạp.

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook