Lỗi use-after-free trong mã hóa reactive của MongoDB Java Driver có thể làm kết thúc tiến trình ứng dụng

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

Lỗ hổng CVE-2026-88032 là lỗ hổng Use After Free ảnh hưởng tới Java Driver (phiên bản bị ảnh hưởng: 4.2.0 – < 5.11.1), org.mongodb:mongodb-crypt Maven package (phiên bản bị ảnh hưởng: 1.4.0 – < 5.11.1) và org.mongodb:mongodb-driver-reactivestreams Maven package (phiên bản bị ảnh hưởng: 4.6.0 – < 5.11.1). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.2. 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

Lỗi use-after-free trong thành phần mã hóa phía client theo reactive của MongoDB Java Driver có thể khiến các tài nguyên native bị giải phóng trong khi một thao tác mã hóa bị ảnh hưởng vẫn đang sử dụng chúng lúc thao tác bị hủy. Một bên có khả năng khiến thao tác đó bị hủy có thể làm tiến trình ứng dụng lưu trữ kết thúc. Để tiếp cận lỗi này, cần có cấu hình mã hóa reactive bị ảnh hưởng, trong đó thông tin xác thực KMS được lấy theo yêu cầu.

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

  • MongoDB Java Driver: các bản phát hành từ 4.2.0 đến trước 5.11.1 được đánh dấu affected. Default status là unaffected bên ngoài phạm vi này.
  • org.mongodb:mongodb-crypt Maven package: các bản phát hành từ 1.4.0 đến trước 5.11.1 được đánh dấu affected. Default status là unaffected bên ngoài phạm vi này.
  • org.mongodb:mongodb-driver-reactivestreams Maven package: các bản phát hành từ 4.6.0 đến trước 5.11.1 được đánh dấu affected. Default status là unaffected bên ngoài phạm vi này.
  • Bản ghi sự cố MongoDB liệt kê 5.11.1 là fix version. Bản ghi này cũng mô tả driver-kotlin-coroutinedriver-scala có thể bị ảnh hưởng theo đường truyền, đồng thời cho biết driver-sync không bị ảnh hưởng; các đường truyền này không có ranh giới version cụ thể trong dữ liệu affected chuẩn hóa.

Chi tiết kỹ thuật

Luồng mã hóa phía client theo reactive của MongoDB Java Driver giữ một context native libmongocrypt trong thời gian thao tác mã hóa. Khi thao tác bị hủy, quá trình dọn dẹp có thể giải phóng context từ doFinally trong lúc một thread khác vẫn đang thực hiện bước của state machine; bước đó sau đó có thể ghi vào vùng nhớ native đã được giải phóng. Đây là lỗi CWE-416, có thể làm tiến trình JVM bị crash hoặc gây hỏng dữ liệu trong thành phần đang giữ khóa mã hóa theo mô tả của bản ghi sự cố MongoDB. Điều kiện tiếp cận lỗi là cấu hình reactive encryption bị ảnh hưởng, trong đó credential KMS được lấy theo yêu cầu. Bản ghi sự cố nêu các ví dụ hủy do client ngắt kết nối hoặc operation timeout, nhưng cơ chế bên ngoài cụ thể dùng để buộc hủy thao tác không được bản ghi CVE mô tả đầy đủ. Bản ghi vendor cũng mở rộng phạm vi kỹ thuật tới các callback khác trên MongoCryptContextImpl, không chỉ một lời gọi cung cấp credential KMS.

Khả năng khai thác

  • Lỗi có thể được tiếp cận qua mạng; bản ghi chuẩn hóa mô tả không yêu cầu authentication hoặc user interaction, nhưng vẫn cần cấu hình reactive encryption có lấy credential KMS theo yêu cầu.
  • Điều kiện khai thác là làm cho một thao tác mã hóa bị hủy trong thời điểm tài nguyên native vẫn đang được sử dụng. Bản ghi sự cố MongoDB nêu client disconnect và operation timeout là các ví dụ về cơ chế hủy.
  • Bản ghi sự cố vendor cho biết lỗi đã được tái hiện trong một dịch vụ Spring Boot WebFlux sau một HTTP request bị hủy. Đây là bằng chứng về khả năng tái hiện, không phải bằng chứng về việc bị khai thác ngoài thực tế.
  • Bản ghi được cung cấp đánh dấu không có public exploit, đồng thời không xác định known exploitation hoặc ransomware campaign. Điều này không loại trừ các hoạt động chưa được ghi nhận.

Tác động kỹ thuật

Lỗi có thể làm tiến trình ứng dụng lưu trữ kết thúc do một thao tác native tiếp tục sử dụng context đã bị giải phóng. Tác động trực tiếp là gián đoạn dịch vụ và có thể làm các request mã hóa đang xử lý thất bại. Bản ghi chuẩn hóa không xác lập việc đọc dữ liệu, sửa dữ liệu hoặc leo thang đặc quyền; tác động được ghi nhận tập trung vào availability của tiến trình bị ảnh hưởng. Phạm vi tác động bị giới hạn bởi điều kiện phải dùng reactive encryption với cơ chế lấy credential KMS theo yêu cầu. Bản ghi sự cố MongoDB mô tả thêm khả năng hỏng dữ liệu trong thành phần giữ khóa mã hóa, nhưng bằng chứng được cung cấp không xác nhận một breach hoặc mất bí mật trên thực tế.

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

Hậu quả chính là mất tính sẵn sàng khi tiến trình lưu trữ bị kết thúc trong lúc xử lý một thao tác mã hóa. Dịch vụ bị ảnh hưởng có thể làm mất các request đang xử lý và cần cơ chế khởi động hoặc phục hồi tiến trình; đây là hệ quả vận hành có khả năng xảy ra, không phải bằng chứng về mất dữ liệu. Bản ghi sự cố MongoDB mô tả một crash được tái hiện trong dịch vụ Spring Boot WebFlux sau một HTTP request bị hủy và nêu khả năng hỏng vùng nhớ native trong thành phần mã hóa. Tuy nhiên, bản ghi CVE chuẩn hóa chỉ xác nhận việc tiến trình ứng dụng có thể kết thúc, không xác nhận data breach hoặc disclosure. Bằng chứng được cung cấp không xác lập ảnh hưởng đến tính bí mật hoặc tính toàn vẹn.

Cách khắc phục

  1. Nâng cấp: đưa MongoDB Java Driver, org.mongodb:mongodb-cryptorg.mongodb:mongodb-driver-reactivestreams lên 5.11.1, là fix version được dữ liệu affected và bản ghi sự cố MongoDB hỗ trợ. Xác nhận version này phù hợp với dependency graph của từng ứng dụng.
  2. Kiểm tra dependency resolution sau khi nâng cấp để bảo đảm runtime thực sự sử dụng artifact đã sửa và không còn bản artifact cũ được kéo vào transitively.
  3. Nếu chưa thể nâng cấp, loại bỏ cấu hình lấy credential KMS theo yêu cầu hoặc chuyển sang cung cấp credential trực tiếp nếu phù hợp với mô hình vận hành. Bản ghi vendor cho biết cách này chỉ thu hẹp cửa sổ dễ lỗi rộng nhất và không phải bản sửa hoàn chỉnh, vì các cửa sổ hẹp hơn vẫn có thể tồn tại.
  4. Nếu nghiệp vụ cho phép, tạm thời vô hiệu hóa các thao tác reactive encrypted liên quan để loại bỏ điều kiện cấu hình đã nêu. Đây là biện pháp containment có thể làm giảm chức năng, không thay thế bản sửa.
  5. Sau khi thay đổi, thực hiện regression test hủy thao tác ở giữa quá trình mã hóa và xác nhận tiến trình không bị crash. Bản ghi sự cố yêu cầu kiểm thử cancellation giữa operation và bao phủ toàn bộ các lời gọi native liên quan.

Cách phát hiện

  1. Kiểm kê dependency tree và version thực tế của MongoDB Java Driver, org.mongodb:mongodb-cryptorg.mongodb:mongodb-driver-reactivestreams, thay vì chỉ kiểm tra khai báo trực tiếp trong tệp build.
  2. Xác định các ứng dụng dùng reactive client-side encryption, đặc biệt cấu hình để lấy credential KMS theo yêu cầu như provider document rỗng kết hợp với kmsProviderPropertySupplier.
  3. Rà soát telemetry về client disconnect, operation timeout hoặc cancellation xảy ra đồng thời với encrypted operation. Đây là điều kiện liên quan, không phải IOC duy nhất.
  4. Kiểm tra process exit, JVM crash và native crash quanh các thao tác bị hủy. Lỗi trong mongocrypt_ctx_provide_kms_providers là tín hiệu tương quan được bản ghi vendor nêu, nhưng không phải IOC độc nhất.
  5. Kiểm tra cả các ứng dụng dùng driver Kotlin coroutine hoặc Scala theo đường truyền tiếp, vì bản ghi sự cố vendor mô tả chúng là có thể bị ảnh hưởng. Việc không thấy log hoặc crash không chứng minh hệ thống an toàn.
Nguồn (5)
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á CyStack VulnScan
CyStack VulnScan dashboard