Lỗ hổng NGINX Rewrite Module 18 năm tuổi cho phép RCE không cần xác thực

Các nhà nghiên cứu an ninh mạng vừa tiết lộ nhiều lỗ hổng bảo mật ảnh hưởng đến NGINX Plus và NGINX Open, bao gồm một lỗi nghiêm trọng đã tồn tại âm thầm trong suốt 18 năm qua. Lỗ hổng này, được phát hiện bởi depthfirst, là lỗi heap buffer overflow ảnh hưởng đến ngx_http_rewrite_module (CVE-2026-42945, điểm CVSS v4: 9.2) có thể cho phép kẻ tấn công thực thi mã từ xa (RCE) hoặc gây ra tình trạng từ chối dịch vụ (DoS) thông qua các yêu cầu được tạo đặc biệt.
NGINX Rift Vulnerability
Lỗ hổng NGINX Rift đe dọa hàng triệu máy chủ toàn cầu

Các nhà nghiên cứu an ninh mạng đã công bố nhiều lỗ hổng bảo mật ảnh hưởng đến NGINX Plus và NGINX Open, bao gồm một lỗi nghiêm trọng đã tồn tại âm thầm trong suốt 18 năm qua.

Lỗ hổng này, được phát hiện bởi depthfirst, là một vấn đề heap buffer overflow ảnh hưởng đến ngx_http_rewrite_module (CVE-2026-42945, điểm CVSS v4: 9.2), có thể cho phép kẻ tấn công thực thi mã từ xa (RCE) hoặc gây ra tình trạng từ chối dịch vụ (DoS) bằng các yêu cầu được tạo đặc biệt. Lỗ hổng này đã được đặt tên mã là NGINX Rift.

"NGINX Plus và NGINX Open Source tồn tại một lỗ hổng trong module ngx_http_rewrite_module," F5 cho biết trong một bản tin tư vấn được phát hành vào thứ Tư. "Lỗ hổng này xảy ra khi chỉ thị rewrite được theo sau bởi một chỉ thị rewrite, if hoặc set và một capture Perl-Compatible Regular Expression (PCRE) không tên (ví dụ: $1, $2) với một chuỗi thay thế bao gồm dấu chấm hỏi (?)."

"Một kẻ tấn công chưa xác thực, cùng với các điều kiện nằm ngoài tầm kiểm soát của nó, có thể khai thác lỗ hổng này bằng cách gửi các yêu cầu HTTP được tạo đặc biệt. Điều này có thể gây ra lỗi heap buffer overflow trong tiến trình worker của NGINX, dẫn đến việc khởi động lại. Ngoài ra, đối với các hệ thống đã tắt Address Space Layout Randomization (ASLR), việc thực thi mã là hoàn toàn khả thi."

Vấn đề đã được giải quyết trong các phiên bản sau đây sau khi được tiết lộ một cách có trách nhiệm vào ngày 21 tháng 4 năm 2026:

  • NGINX Plus R32 - R36 (Bản vá được giới thiệu trong R32 P6 và R36 P4)
  • NGINX Open Source 1.0.0 - 1.30.0 (Bản vá được giới thiệu trong 1.30.1 và 1.31.0)
  • NGINX Open Source 0.6.27 - 0.9.7 (Không có kế hoạch vá lỗi)
  • NGINX Instance Manager 2.16.0 - 2.21.1
  • F5 WAF cho NGINX 5.9.0 - 5.12.1
  • NGINX App Protect WAF 4.9.0 - 4.16.0
  • NGINX App Protect WAF 5.1.0 - 5.8.0
  • F5 DoS cho NGINX 4.8.0
  • NGINX App Protect DoS 4.3.0 - 4.7.0
  • NGINX Gateway Fabric 1.3.0 - 1.6.2
  • NGINX Gateway Fabric 2.0.0 - 2.5.1
  • NGINX Ingress Controller 3.5.0 - 3.7.2
  • NGINX Ingress Controller 4.0.0 - 4.0.1
  • NGINX Ingress Controller 5.0.0 - 5.4.1

Chi tiết về khả năng khai thác NGINX Rift

Trong bản tin tư vấn của riêng mình, depthfirst cho biết lỗ hổng cho phép kẻ tấn công từ xa, chưa xác thực có thể làm hỏng heap của tiến trình worker NGINX bằng cách gửi một URI được tạo đặc biệt. Điều làm cho lỗ hổng này trở nên nghiêm trọng là nó có thể tiếp cận được mà không cần xác thực, có thể được sử dụng một cách tin cậy để kích hoạt heap overflow và dẫn đến RCE trong tiến trình worker của NGINX.

"Kẻ tấn công có thể tiếp cận máy chủ NGINX bị lỗ hổng qua HTTP có thể gửi một yêu cầu duy nhất làm tràn heap trong tiến trình worker và đạt được thực thi mã từ xa," depthfirst cho biết. "Không có bước xác thực, không yêu cầu quyền truy cập trước và không cần một phiên làm việc hiện có."

"Các byte được ghi đè sau vùng cấp phát được lấy từ URI của kẻ tấn công, vì vậy sự hư hỏng dữ liệu được định hình bởi kẻ tấn công thay vì ngẫu nhiên. Các yêu cầu lặp đi lặp lại cũng có thể được sử dụng để giữ các worker trong một vòng lặp bị treo (crash loop) và làm giảm tính khả dụng cho mọi trang web được phục vụ bởi instance đó."

Các lỗ hổng bảo mật khác được khắc phục

Ngoài ra, ba lỗ hổng khác cũng đã được vá trong NGINX Plus và NGINX Open Source:

  • CVE-2026-42946 (CVSS v4: 8.3) - Lỗ hổng cấp phát bộ nhớ quá mức trong các module ngx_http_scgi_modulengx_http_uwsgi_module, cho phép kẻ tấn công chưa xác thực với khả năng AitM kiểm soát phản hồi từ máy chủ upstream để đọc bộ nhớ của tiến trình worker NGINX hoặc khởi động lại nó.
  • CVE-2026-40701 (CVSS v4: 6.3) - Lỗ hổng use-after-free trong module ngx_http_ssl_module, cho phép kẻ tấn công chưa xác thực có quyền kiểm soát hạn chế đối với việc sửa đổi dữ liệu hoặc khởi động lại tiến trình worker NGINX khi ssl_verify_client được bật.
  • CVE-2026-42934 (CVSS v4: 6.3) - Lỗ hổng out-of-bounds read trong module ngx_http_charset_module, cho phép kẻ tấn công chưa xác thực tiết lộ nội dung bộ nhớ hoặc khởi động lại tiến trình worker NGINX trong một số cấu hình nhất định.

Người dùng được khuyến cáo nên cập nhật lên các phiên bản mới nhất để được bảo vệ tối ưu. Nếu chưa thể vá lỗi ngay lập tức cho CVE-2026-42945, người dùng nên thay đổi cấu hình rewrite bằng cách thay thế các capture không tên bằng các capture có tên trong mọi chỉ thị rewrite bị ảnh hưởng.