Lỗi tính bộ nhớ HTTP/2 của nodejs Node.js gây cạn kiệt bộ nhớ từ xa

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-56846 là gì?

Lỗ hổng CVE-2026-56846 là lỗ hổng Uncontrolled Resource Consumption ảnh hưởng tới node (phiên bản bị ảnh hưởng: 24.18.0 – ≤ 24.18.0 và 22.23.1 – ≤ 22.23.1). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.5. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

Một lỗi trong cơ chế xử lý HTTP/2 của Node.js có thể khiến các khối header được giữ lại của HTTP/2 né tránh maxSessionMemory và cho phép làm cạn kiệt bộ nhớ từ xa. Lỗ hổng này ảnh hưởng đến Node.js 24.x và 22.x.

Sản phẩm và phạm vi ảnh hưởng

  • nodejs Node.js 24.18.0 và các phiên bản nhỏ hơn hoặc bằng 24.18.0 được CNA ghi nhận là bị ảnh hưởng. Bản phát hành upstream chứa bản sửa tương ứng là 24.18.1.
  • nodejs Node.js 22.23.1 và các phiên bản nhỏ hơn hoặc bằng 22.23.1 được CNA ghi nhận là bị ảnh hưởng. Bản phát hành upstream chứa bản sửa tương ứng là 22.23.2.
  • Dữ liệu affected đặt trạng thái mặc định là unaffected ngoài các phạm vi được liệt kê, nhưng không tự xác nhận ranh giới của mọi gói downstream hoặc bản dựng tùy biến.

Chi tiết kỹ thuật

Thành phần bị ảnh hưởng là cơ chế xử lý HTTP/2 của Node.js. Trong quá trình xử lý phiên HTTP/2, các retained header blocks có thể không được tính đầy đủ vào maxSessionMemory, khiến bộ nhớ liên quan đến phiên vượt quá giới hạn dự kiến. Đây là dạng tiêu thụ tài nguyên không được kiểm soát, phù hợp với CWE-400. Điều kiện được xác nhận là dịch vụ HTTP/2 có thể truy cập qua mạng; bản ghi không nêu chuỗi frame, mẫu header hoặc đường đi cấp phát bộ nhớ nội bộ cụ thể, nên các chi tiết triển khai đó vẫn chưa rõ.

Khả năng khai thác

Lỗ hổng có thể bị tiếp cận qua mạng đối với các dịch vụ Node.js xử lý HTTP/2. Bản ghi đánh giá rằng không cần xác thực, không cần người dùng tương tác và độ phức tạp tấn công thấp. Trạng thái khai thác thực tế chưa được xác lập trong bản ghi; phần đánh giá CISA được cung cấp ghi nhận exploitation là none, còn trường public_exploit được đánh dấu false. Điều này mô tả bằng chứng hiện có, không chứng minh rằng mọi môi trường đều không bị nhắm tới.

Tác động kỹ thuật

Kẻ tấn công từ xa có thể khiến các header block được giữ lại trong phiên HTTP/2 không bị tính đầy đủ vào cơ chế accounting bộ nhớ. Kết quả kỹ thuật có thể là tiêu thụ bộ nhớ ngoài dự kiến, làm suy giảm hoặc làm gián đoạn tiến trình Node.js và các dịch vụ cùng máy chủ. Tác động được giới hạn ở tính sẵn sàng theo dữ liệu hiện có; không có bằng chứng trong bản ghi cho thấy lỗi trực tiếp dẫn đến đọc dữ liệu hoặc thay đổi dữ liệu. Mức độ ảnh hưởng thực tế còn phụ thuộc vào việc dịch vụ có bật và công khai HTTP/2 hay không cùng tài nguyên bộ nhớ được cấp cho workload.

Tác động đến tổ chức

Lỗi có thể làm tăng mức sử dụng bộ nhớ của tiến trình Node.js vượt quá giới hạn dự kiến của một phiên HTTP/2. Hệ quả có thể gồm suy giảm hiệu năng, worker bị khởi động lại hoặc gián đoạn dịch vụ khi tài nguyên bộ nhớ cạn kiệt. Các dịch vụ Internet-facing xử lý HTTP/2 có nguy cơ gây ảnh hưởng đến tính sẵn sàng của API, gateway hoặc ứng dụng phụ thuộc vào chúng. Bằng chứng hiện có tập trung vào availability và không xác nhận việc tiết lộ dữ liệu hoặc sửa đổi dữ liệu.

Cách khắc phục

  1. Nâng các triển khai thuộc nhánh bị ảnh hưởng lên Node.js 24.18.1 đối với nhánh 24.x, hoặc lên Node.js 22.23.2 đối với nhánh 22.x. Đây là các bản phát hành bảo mật upstream được xác định là chứa bản sửa cho lỗi này.
  2. Khởi động lại hoặc thay thế các tiến trình Node.js đang chạy để bảo đảm mã đã sửa được nạp vào runtime phục vụ HTTP/2.
  3. Nếu sử dụng gói do hệ điều hành hoặc nhà phân phối khác cung cấp, áp dụng bản cập nhật bảo mật tương ứng của nhà phân phối và kiểm tra mapping gói thực tế. Các số phiên bản upstream không tự xác định ranh giới gói downstream.
  4. Nếu chưa thể cập nhật ngay, giảm tạm thời khả năng tiếp cận các dịch vụ HTTP/2 bị ảnh hưởng như một biện pháp giảm rủi ro. Bản ghi không cung cấp workaround cụ thể đã được vendor xác nhận, nên biện pháp này không được xem là bản sửa lỗi.

Cách phát hiện

  1. Kiểm kê các runtime Node.js đang triển khai và xác định tiến trình nào cung cấp endpoint HTTP/2 hoặc chấp nhận phiên HTTP/2.
  2. Đối chiếu phiên bản runtime thực tế với các nhánh và mốc bị ảnh hưởng, đã sửa trong phần affected_summary.
  3. Ưu tiên rà soát các dịch vụ HTTP/2 có thể truy cập từ Internet và không yêu cầu xác thực.
  4. Theo dõi tăng trưởng bất thường của bộ nhớ tiến trình, áp lực bộ nhớ hoặc việc worker khởi động lại trong lúc xử lý lưu lượng HTTP/2. Đây chỉ là tín hiệu giám sát phòng ngừa, không phải IOC đã được xác nhận.
  5. Sau khi cập nhật, xác minh bằng inventory rằng tiến trình đang phục vụ HTTP/2 thực sự chạy bản sửa lỗi. Bản ghi không cung cấp log signature hoặc IOC cụ thể.
Nguồn (19)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.

Khám phá các giải pháp khác liên quan