Lỗ hổng CVE nghiêm trọng CVE-2026-48095 trong 7-Zip

Lỗ hổng CVE nghiêm trọng CVE-2026-48095 trong 7-Zip

Lỗ hổng CVE mới trong 7-Zip phiên bản 26.00 cho phép kẻ tấn công đạt remote code execution thông qua heap buffer overflow trong bộ xử lý lưu trữ NTFS. Đây là một cảnh báo CVE đáng chú ý vì chỉ cần mở tệp được tạo đặc biệt là có thể kích hoạt lỗi.

Lỗ hổng CVE-2026-48095 Trong 7-Zip

Lỗi được theo dõi với mã CVE-2026-48095 và định danh tư vấn GHSL-2026-140. Vấn đề nằm trong hàm CInStream::GetCuSize() của tệp NtfsHandler.cpp, nơi kích thước bộ đệm nén NTFS được tính bằng phép dịch bit 32-bit:

(UInt32)1 << (BlockSizeLog + CompressionUnit)

Khi một ảnh NTFS được tạo thủ công đặt ClusterSizeLog >= 28 và thuộc tính dữ liệu nén có CompressionUnit == 4, số dịch đạt tới 32. Điều này gây ra undefined behavior trong C++.

Trên phần cứng x86, lỗi dịch bit này khiến _inBuf chỉ được cấp phát 1 byte do cơ chế masking của phần cứng với số lượng bit dịch. Từ đó, bộ nhớ quá nhỏ bị sử dụng ngay trong lời gọi ReadStream_FALSE, nhưng dữ liệu ghi vào có thể lên tới 256 MB do attacker kiểm soát.

Cơ Chế Khai Thác Và Ảnh Hưởng Hệ Thống

Do đối tượng stream CInStream chỉ nằm cách _inBuf khoảng 304 byte trên heap, lần đọc đầu tiên với kích thước 64 KB có thể ghi đè trực tiếp lên vtable pointer của đối tượng.

Ở lần lặp thứ hai, chương trình chuyển điều khiển qua vtable đã bị sửa đổi. Đây là một dạng vtable hijack, cho phép kẻ tấn công kiểm soát con trỏ bị ghi đè thông qua nội dung cluster NTFS được thiết kế sẵn.

Tác động của lỗ hổng CVE này phụ thuộc môi trường hệ thống:

  • 32-bit và 64-bit đều bị ảnh hưởng.
  • Trên hệ thống 64-bit có từ 16 GB RAM trở lên, lệnh _outBuf.Alloc(8 GB) có thể thành công, dẫn tới tràn bộ đệm và khả năng chiếm quyền điều khiển.
  • Trên hệ thống thiếu bộ nhớ, lỗi cấp phát có thể làm giảm tác động xuống DoS.

Điều Kiện Kích Hoạt

Điểm nguy hiểm của lỗ hổng CVE này là bề mặt tấn công không phụ thuộc mạnh vào phần mở rộng tệp. Bộ xử lý NTFS dùng cơ chế phát hiện dựa trên chữ ký, khớp chuỗi "NTFS " tại offset byte 3.

Vì vậy, một ảnh NTFS được tạo độc hại có thể mang bất kỳ phần mở rộng nào như .7z, .zip, .rar, hoặc thậm chí không có phần mở rộng. Chỉ cần mở tệp là đủ để kích hoạt trình xử lý dễ bị lỗi sau khi handler khớp theo phần mở rộng bị từ chối.

Thông Tin Kỹ Thuật Của CVE-2026-48095

CVSS 3.1 của lỗ hổng là 8.8 với vector AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H. Lỗ hổng được phân loại theo CWE-787 (Out-of-Bounds Write) và CWE-190 (Integer Overflow or Wraparound).

Tất cả các phiên bản 7-Zip đến 26.00 đều bị ảnh hưởng, vì logic tính toán GetCuSize() tồn tại từ khi hỗ trợ NTFS compressed stream được đưa vào sản phẩm.

Tham chiếu chính thức có thể xem tại GitHub Security Lab advisory GHSL-2026-140.

Phát Hiện Và Xác Minh Lỗi

Lỗ hổng CVE này được phát hiện và báo cáo có trách nhiệm bởi Jaroslav Lobačevski (@JarLob) của GitHub Security Lab. Việc xác minh được thực hiện bằng UBSan dưới Clang trên Linux x64.

Công cụ đã ghi nhận lỗi dịch bit gốc tại NtfsHandler.cpp:687, sau đó là lỗi dereference vtable không hợp lệ dẫn tới SIGSEGV. Chuỗi lỗi này cho thấy nguyên nhân gốc nằm ở phép tính kích thước bộ đệm không an toàn, sau đó lan sang ghi tràn heap và chiếm quyền luồng điều khiển.

Khuyến Nghị Khắc Phục

Để giảm rủi ro bảo mật từ lỗ hổng CVE-2026-48095, người dùng cần cập nhật bản vá lên 7-Zip v26.01 ngay khi có thể. Trong thời gian chưa vá, không nên mở các tệp nén hoặc ảnh đĩa không tin cậy, bất kể phần mở rộng là gì.

Các hệ thống xử lý tệp từ nguồn bên ngoài cần xem đây là một nguy cơ bảo mật ở mức cao vì chỉ một thao tác mở tệp có thể dẫn tới remote code execution hoặc DoS tùy điều kiện bộ nhớ.

Điểm Chính Cần Lưu Ý

  • CVE-2026-48095lỗ hổng CVE trong trình xử lý NTFS của 7-Zip.
  • Lỗi bắt nguồn từ phép dịch bit 32-bit trong CInStream::GetCuSize().
  • Nguyên nhân khai thác là heap buffer overflow dẫn đến vtable hijack.
  • CVSS 3.1: 8.8, mức High.
  • Tất cả phiên bản đến 26.00 đều bị ảnh hưởng; bản đã sửa là 26.01.

Trong bối cảnh an toàn thông tin, đây là một lỗ hổng CVE cần được ưu tiên kiểm tra tại các điểm xử lý archive, đặc biệt với quy trình mở tệp từ nguồn không đáng tin cậy và các hệ thống có cài đặt 7-Zip phiên bản cũ.