Lỗ hổng CVE-2026-8711 nguy hiểm trong NGINX njs

Lỗ hổng CVE-2026-8711 nguy hiểm trong NGINX njs

Lỗ hổng CVE trong NGINX JavaScript (njs), được theo dõi là CVE-2026-8711, cho phép kẻ tấn công từ xa chưa xác thực kích hoạt heap-based buffer overflow. Trong một số điều kiện, lỗi này có thể dẫn đến denial-of-service hoặc remote code execution trong tiến trình worker của NGINX.

Tham chiếu chính thức trên NVD ghi nhận đây là một cảnh báo CVE liên quan đến thành phần xử lý JavaScript của NGINX.

Phân tích kỹ thuật lỗ hổng CVE-2026-8711

Vấn đề nằm ở cách directive js_fetch_proxy xử lý các biến do client kiểm soát khi kết hợp với thao tác ngx.fetch() trong NGINX JavaScript. Lỗi xuất hiện trong module ngx_http_js_module khi js_fetch_proxy được cấu hình với ít nhất một biến NGINX có thể bị điều khiển bởi client.

Khi một location gọi một hàm NJS sử dụng ngx.fetch(), kẻ tấn công có thể gửi các HTTP request được tạo sẵn để gây tràn bộ đệm heap trong tiến trình worker của NGINX. Đây là dạng lỗ hổng CVE có thể làm sập worker lặp lại và gây gián đoạn dịch vụ.

Điều kiện khai thác

Vector khai thác phụ thuộc vào cấu hình NJS, đặc biệt khi js_fetch_proxy tạo proxy URL từ dữ liệu do client cung cấp, chẳng hạn các header như $http_x_user$http_x_password. Nếu js_content trỏ đến một hàm NJS, ví dụ main.fetcher, và hàm này gọi ngx.fetch() với URL đó, bộ nhớ heap của worker có thể bị làm hỏng.

location /example {
    js_fetch_proxy http://backend.example.local/?u=$http_x_user&p=$http_x_password;
    js_content main.fetcher;
}

function fetcher(r) {
    ngx.fetch(r.variables.js_fetch_proxy)
        .then(res => r.return(res.status, res.responseText));
}

Tác động hệ thống và mức độ rủi ro

Lỗ hổng CVE này được phân loại là CWE-122: Heap-based Buffer Overflow và được F5 theo dõi nội bộ với mã ID 160 cho NGINX PlusNGINX OSS.

Tác động chính là tiến trình worker bị crash và tự khởi động lại, tạo ra tình trạng DoS trên data plane của NGINX. Trong các hệ thống có ASLR bị vô hiệu hóa hoặc cấu hình kém, overflow có thể bị khai thác để thực thi mã tùy ý trong ngữ cảnh worker.

F5 cho biết vấn đề chỉ ảnh hưởng đến data plane và không tác động đến control plane. Các sản phẩm và dịch vụ như BIG-IP, BIG-IQ, BIG-IP Next, F5OSF5 Distributed Cloud services được báo cáo là không bị ảnh hưởng trong các phiên bản đã đánh giá.

Phiên bản bị ảnh hưởng và bản vá

Lỗ hổng CVE ảnh hưởng đến NGINX JavaScript (njs) từ 0.9.4 đến 0.9.8. Bản sửa lỗi được đưa vào njs 0.9.9.

Người quản trị đang chạy các phiên bản njs bị ảnh hưởng cần nâng cấp lên 0.9.9 hoặc mới hơn. Với các môi trường mà cột Versions known to be vulnerable áp dụng, cần chuyển sang bản phát hành được liệt kê trong cột Fixes introduced in hoặc cao hơn.

Khuyến nghị cấu hình

Nếu chưa thể nâng cấp ngay, cần rà soát cấu hình có sử dụng js_fetch_proxy với biến do client kiểm soát và loại bỏ hoặc tái thiết kế các mẫu này. Đồng thời, bảo đảm ASLR được bật trên toàn bộ máy chủ NGINX để giảm khả năng khai thác thực thi mã.

# Ví dụ kiểm tra phiên bản njs trên hệ thống
nginx -V 2>&1 | grep -i njs

# Kiểm tra cấu hình có sử dụng js_fetch_proxy
grep -R "js_fetch_proxy" /etc/nginx/

Dấu hiệu cần chú ý khi phát hiện xâm nhập

Với lỗ hổng CVE này, dấu hiệu thường gặp là worker process của NGINX bị crash liên tục, sau đó hệ thống tự khởi động lại tiến trình. Trong môi trường giám sát, có thể quan sát các sự kiện liên quan đến lỗi bộ nhớ hoặc mất ổn định trên data plane.

  • Worker process thoát bất thường và khởi động lại liên tục.
  • Request HTTP bất thường nhắm vào location sử dụng ngx.fetch().
  • Các header đầu vào như $http_x_user, $http_x_password bị thay đổi với giá trị được tạo sẵn.
  • Gián đoạn dịch vụ do DoS trên NGINX data plane.

IOC và chỉ dấu kỹ thuật

Do dữ liệu gốc không cung cấp IOC malware hoặc payload cụ thể, chỉ có thể trích xuất các chỉ dấu kỹ thuật liên quan đến lỗ hổng CVE và mẫu khai thác cấu hình.

  • CVE-2026-8711
  • CWE-122 – Heap-based Buffer Overflow
  • ID 160 theo theo dõi nội bộ của F5
  • nginx_http_js_module
  • js_fetch_proxy
  • ngx.fetch()
  • $http_x_user
  • $http_x_password
  • njs 0.9.4 – 0.9.8
  • njs 0.9.9 – bản vá

Tham chiếu kỹ thuật

F5 Security Advisory K000161307 mô tả phạm vi ảnh hưởng, điều kiện khai thác và phiên bản đã sửa lỗi cho CVE-2026-8711.