Node.js của nodejs: gọi re-entrant trong HTTP/2 dẫn đến heap-use-after-free

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-56848 là gì?

Lỗ hổng CVE-2026-56848 là lỗ hổng Use After Free ảnh hưởng tới node (phiên bản bị ảnh hưởng: 26.5.0 – ≤ 26.5.0, 24.18.0 – ≤ 24.18.0 và các phiên bản bị ảnh hưởng khác). 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 việc xử lý HTTP/2 của Node.js cho phép nghttp2_session_mem_send() được gọi re-entrant trong khi nghttp2_session_mem_recv() đang thực thi, dẫn đến heap-use-after-free. Lỗ hổng này ảnh hưởng đến Node.js 26.x, 24.x, và 22.x.

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

Node.js của nodejs bị ảnh hưởng trong các ranh giới được hỗ trợ sau:

  • 26.5.0 và các bản trước đó trong nhánh 26.x bị ảnh hưởng. Node.js 26.5.1 là security release tương ứng.
  • 24.18.0 và các bản trước đó trong nhánh 24.x bị ảnh hưởng. Node.js 24.18.1 là security release tương ứng.
  • 22.23.1 và các bản trước đó trong nhánh 22.x bị ảnh hưởng. Node.js 22.23.2 là security release tương ứng.

Dữ liệu CNA đặt default status là unaffected bên ngoài các ranh giới affected được liệt kê. Advisory của Node.js xác định cả ba nhánh release đang hoạt động đều bị ảnh hưởng; bản ghi này không xác lập thêm nhánh nào khác.

Chi tiết kỹ thuật

Node.js có thể cho phép nghttp2_session_mem_send() được gọi re-entrant trong khi nghttp2_session_mem_recv() đang thực thi. Việc chồng lấn này có thể khiến implementation tiếp tục sử dụng vùng nhớ heap sau khi vùng nhớ đã được giải phóng, tạo ra lỗi use-after-free thuộc CWE-416. Đánh giá được cung cấp xác nhận khả năng tiếp cận qua mạng mà không cần xác thực hoặc tương tác của người dùng, nhưng không nêu rõ input HTTP/2 do kẻ tấn công kiểm soát, chuỗi frame, endpoint hoặc callback path chính xác gây ra việc gọi re-entrant. Phạm vi ảnh hưởng là subsystem HTTP/2 của Node.js trong ba nhánh release được nêu. Trạng thái allocator cụ thể và việc khai thác có luôn dẫn đến crash process hay không chưa được xác lập từ bằng chứng hiện có.

Khả năng khai thác

Theo đánh giá được cung cấp, lỗ hổng có thể bị tiếp cận từ xa qua mạng. Điều kiện khai thác được mô tả là không cần xác thực và không cần tương tác của người dùng, với độ phức tạp thấp. Bản ghi không nêu public exploit, còn dữ liệu enrichment được gán cho CISA ghi nhận trạng thái exploitation là none. Các trạng thái này không chứng minh rằng việc khai thác là không thể hoặc không có hoạt động nào xảy ra ngoài phạm vi được ghi nhận. Bằng chứng hiện có chưa công khai request hoặc chuỗi frame HTTP/2 chính xác cần thiết để kích hoạt lỗi.

Tác động kỹ thuật

Việc kích hoạt thành công có thể gây truy cập heap không hợp lệ và làm process Node.js bị kết thúc hoặc mất ổn định. Hậu quả kỹ thuật thực tế là mất tính sẵn sàng của dịch vụ bị ảnh hưởng, có thể cần restart hoặc failover. Đánh giá được cung cấp cho thấy không có ảnh hưởng đến tính bí mật hoặc tính toàn vẹn và security scope không thay đổi. Bản ghi không xác lập code execution, privilege escalation, lộ dữ liệu hoặc compromise kéo dài.

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

Một process Node.js bị ảnh hưởng có thể trở nên không ổn định hoặc bị kết thúc khi đạt đến trạng thái lỗi, gây gián đoạn dịch vụ cho các workload phụ thuộc vào process đó. Đây chủ yếu là rủi ro đối với tính sẵn sàng; đánh giá được cung cấp không xác định ảnh hưởng đến tính bí mật hoặc tính toàn vẹn. Các dịch vụ HTTP/2 có thể truy cập từ Internet hoặc từ mạng không tin cậy nên được ưu tiên kiểm kê và cập nhật. Bằng chứng hiện có không xác lập việc lộ dữ liệu, sửa đổi dữ liệu hoặc một kịch bản breach cụ thể.

Cách khắc phục

  1. Nâng cấp nhánh 26.x lên Node.js 26.5.1, nhánh 24.x lên 24.18.1, hoặc nhánh 22.x lên 22.23.2, tùy theo nhánh đang sử dụng.
  2. Redeploy hoặc restart các dịch vụ để process đang chạy không còn sử dụng runtime bị ảnh hưởng, sau đó xác minh binary hoặc package đang hoạt động khớp với fixed release của nhánh tương ứng.
  3. Nếu cần triển khai theo từng giai đoạn, ưu tiên các dịch vụ HTTP/2 có khả năng truy cập từ mạng và xác minh không còn runtime bị ảnh hưởng trong production. Bằng chứng hiện có không ghi nhận workaround cụ thể nào có mức bảo vệ tương đương với việc nâng cấp.

Cách phát hiện

  1. Kiểm kê các bản cài đặt Node.js, container image, base image và runtime được nhúng, đồng thời ghi lại version runtime chính xác của từng deployment.
  2. Đối chiếu từng version với các ranh giới affected và fixed trong phần affected summary, bao gồm cả các nhánh release song song thay vì giả định rằng bản sửa ở một nhánh áp dụng cho mọi nhánh khác.
  3. Xác định các deployment tiếp nhận hoặc xử lý HTTP/2 và liên kết chúng với inventory runtime để thấy rõ các hệ thống có khả năng bị truy cập từ xa.
  4. Kiểm tra telemetry của process supervisor và ứng dụng để tìm các lần Node.js thoát bất thường, restart hoặc lỗi liên quan đến heap xuất hiện cùng lưu lượng HTTP/2. Đây chỉ là biện pháp giám sát phòng ngừa, không phải indicator đã được xác nhận của lỗ hổng này; không thấy sự kiện như vậy cũng không chứng minh hệ thống an toàn.
  5. Sau khi khắc phục, xác minh version của process đang chạy, không chỉ kiểm tra package hoặc image tag.
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