CWE-122: Tràn bộ đệm heap

CWE-122 là gì?

CyStack AI

Trạng thái tràn heap xảy ra khi một vùng đệm được cấp phát trên heap bị ghi vượt giới hạn đã cấp phát. Điều này thường xảy ra khi vùng nhớ được cấp phát bằng các hàm như malloc bị truy cập với dữ liệu vượt quá giới hạn mà không được kiểm tra.

Phân tích của CyStack dựa trên nguồn MITRE CWE chính thức 4.20 (30/04/2026).

Định nghĩa MITRE gốc (tiếng Anh)

MITRE CWE

A heap overflow condition is a buffer overflow, where the buffer that can be overwritten is allocated in the heap portion of memory, generally meaning that the buffer was allocated using a routine such as malloc().

Mô tả chi tiết

Tràn heap xảy ra khi dữ liệu nhập từ bên ngoài hoặc quản lý kém ghi vượt quá ranh giới của các khối nhớ được cấp phát trên heap. Khác với tràn ngắn hạn ở ngăn xếp, tràn heap có thể làm hỏng metadata của bộ cấp phát, con trỏ hàm hoặc các cấu trúc điều khiển heap khác, có thể cho phép thực thi mã tùy ý hoặc làm cho chương trình treo. Lỗ hổng liên quan đến quản lý bộ nhớ và ngữ cảnh an ninh của cấp phát động, trong đó khai thác thường dựa vào làm hỏng dữ liệu trong khu vực heap và ảnh hưởng tới luồng điều khiển hoặc tính toàn vẹn dữ liệu.

Đặc điểm

Trừu tượng: Biến thể. Cấu trúc: Đơn giản. Khả năng khai thác: Cao. Giai đoạn giới thiệu: Triển khai. Thuật ngữ: Tràn đệm, heap. Nền tảng: Ngôn ngữ không an toàn với bộ nhớ như C/C++. Các đặc tính liên quan của lỗ hổng bao gồm ảnh hưởng đến sẵn sàng, tính toàn vẹn, bí mật và kiểm soát truy cập khi thực thi mã tùy ý xảy ra.

Giai đoạn hình thành

  • Hiện thực hóa

Tác động thường gặp

Phạm vi bao gồm Tính sẵn sàng, Tính toàn vẹn, Bảo mật thông tin, Kiểm soát truy cập. Tác động bao gồm từ chối dịch vụ do treo hoặc khởi động lại, tiêu hao tài nguyên CPU và bộ nhớ. Thực thi mã tùy ý có thể bypass cơ chế bảo vệ và sửa đổi bộ nhớ, có thể làm suy yếu dữ liệu người dùng và chính sách bảo mật. Trong một số trường hợp, khai thác có thể làm suy yếu các dịch vụ bảo mật khác bằng cách thay đổi luồng điều khiển hoặc cấu trúc bộ nhớ.

  • Tính sẵn sàng

    Từ chối dịch vụ: sập, thoát hoặc khởi động lại, Từ chối dịch vụ: tiêu thụ tài nguyên CPU, Từ chối dịch vụ: tiêu thụ bộ nhớ

  • Tính toàn vẹn, Tính bí mật, Tính sẵn sàng, Kiểm soát truy cập

    Thực thi mã hoặc lệnh trái phép, Vượt qua cơ chế bảo vệ, Thay đổi bộ nhớ

  • Tính toàn vẹn, Tính bí mật, Tính sẵn sàng, Kiểm soát truy cập, Khác

    Thực thi mã hoặc lệnh trái phép, Vượt qua cơ chế bảo vệ, Khác

Biện pháp giảm thiểu

Tiền thiết kế: Sử dụng ngôn ngữ hoặc trình biên dịch có kiểm tra giới hạn tự động. Kiến trúc và Thiết kế: Sử dụng thư viện trừu tượng để che chắn các API nguy hiểm. Vận hành/Build: Kích hoạt các cơ chế phát hiện tràn tự động trong trình biên dịch hoặc phần mở rộng (ví dụ GS của Microsoft, FORTIFY_SOURCE của GCC, StackGuard, ProPolice, hoặc D3-SFCV); mặc dù không phải là giải pháp đầy đủ, chúng cung cấp kiểm tra canary hoặc kiểm tra phạm vi. Vận hành/Build: Áp dụng các kỹ thuật ngẫu nhiên hóa không gian bộ nhớ như ASLR và PIE để gây khó cho việc nhảy tới mã độc hại. Triển khai: Áp dụng kiểm tra giới hạn cho đầu vào. Triển khai: Ưu tiên các hàm thư viện an toàn và tránh các hàm nguy hiểm như gets.

  • Kiến trúc và thiết kế
  • Vận hành, Xây dựng và biên dịch · Gia cố môi trườngHiệu quả: Phòng thủ nhiều lớp
  • Vận hành, Xây dựng và biên dịch · Gia cố môi trườngHiệu quả: Phòng thủ nhiều lớp
  • Hiện thực hóa
  • Hiện thực hóa · Thư viện hoặc framework
  • Vận hành

Phương pháp phát hiện

Fuzzing rất hiệu quả để kích hoạt treo và sự cố bộ nhớ, và phân tích động tự động với các công cụ như AddressSanitizer có thể phát hiện lỗi an toàn bộ nhớ trong quá trình biên dịch hoặc chạy. Các phương pháp này có giới hạn, vì có thể cần các đầu vào được thiết kế đặc biệt để tới được mã dễ bị tổn thương và một số công cụ có thể báo cáo lỗi mà không giải thích sai lầm cơ bản.

  • Kiểm thử fuzzingHiệu quả: Cao
  • Phân tích động tự độngHiệu quả: Khá

Lỗ hổng điển hình

Các ví dụ được ghi nhận chính thức bao gồm chuỗi lỗ hổng như: CVE-2025-46687 mô tả tràn heap do mất kiểm tra độ dài trong động viên JavaScript, CVE-2021-43537 nơi ép kiểu từ 64-bit sang 32-bit có thể gây hỏng bộ nhớ heap, CVE-2007-4268 liên quan đến lỗi chữ số dấu và dẫn tới tràn heap, CVE-2009-2523 nơi thiếu NULL termination gây tràn heap hoặc đọc tràn đệm, CVE-2021-29529 nơi giới hạn được suy ra từ làm tròn số thực dẫn tới tràn heap, và CVE-2010-1866 nơi tràn số nguyên bỏ qua kiểm tra và gây tràn heap.

Các ví dụ này chỉ minh họa cho mục CWE, không phải danh sách đầy đủ mọi lỗ hổng liên quan.

Nguồn và tài liệu tham khảo

Tham chiếu

CWE™ Program, operated by The MITRE Corporation. Copyright © 2006–2026, The MITRE Corporation. The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. CWE Terms of Use.

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