CWE-400: Tiêu thụ tài nguyên không được kiểm soát

CWE-400 là gì?

CWE-400 là tiêu thụ tài nguyên không được kiểm soát. Lỗi phát sinh khi sản phẩm không kiểm soát đúng cách việc cấp phát và duy trì một tài nguyên có giới hạn. Hiện có 740 lỗ hổng trong kho dữ liệu liên quan đến CWE-400 và 1 trong số đó nằm trong danh mục khai thác thực tế của CISA.

Thứ hạng OWASP Top 10-
Tổng số CVE liên quan (365 ngày)740
Mức trừu tượngLớp
Khả năng khai thácCao

Số lượng lỗ hổng nằm trong CWE-400

740 lỗ hổngTăng 567% so với cùng kỳ

Số lượng lỗ hổng trong CISA KEV của CWE-400

1 lỗ hổng

Định nghĩa chính thức

TheoMitre CWE

Chi tiết kỹ thuật

Điểm yếu này xảy ra khi tác nhân có thể khiến sản phẩm cấp phát hoặc duy trì tài nguyên giới hạn mà không có giới hạn phù hợp về số lượng, kích thước, tốc độ hoặc thời gian sử dụng. Tài nguyên có thể bị tiêu thụ do các yêu cầu hợp lệ nhưng quá mức, do tài nguyên không được đóng hoặc hoàn trả, do mất tham chiếu trước khi giải phóng, hoặc do xử lý lỗi không an toàn. Hậu quả thường là suy giảm hoặc mất tính sẵn sàng, nhưng trong một số trường hợp việc cạn kiệt tài nguyên có thể khiến sản phẩm chuyển sang trạng thái không an toàn và làm suy yếu cơ chế bảo vệ.

Đặc điểm

Điểm yếu xuất hiện khi hệ thống không giới hạn số lượng hoặc kích thước tài nguyên được cấp phát, không giải phóng tài nguyên đúng thời điểm, hoặc làm mất mọi tham chiếu đến tài nguyên trước giai đoạn đóng. Các nguyên nhân thường gặp gồm thiếu điều tiết, không đóng hoặc hoàn trả tài nguyên sau khi xử lý, và xử lý sai các điều kiện lỗi hoặc tình huống bất thường do không rõ thành phần nào chịu trách nhiệm giải phóng. Vấn đề có thể phát sinh trong vận hành hoặc cấu hình khi giới hạn tài nguyên thấp hơn dự kiến, cũng như từ các quyết định thiết kế và triển khai không xử lý tốt các yêu cầu quá mức.

Hậu quả thường gặp

Hậu quả chính là ảnh hưởng đến tính sẵn sàng, bao gồm từ chối dịch vụ do sự cố, thoát, khởi động lại, hoặc tiêu thụ CPU, bộ nhớ và các tài nguyên khác. Người dùng hợp lệ có thể bị làm chậm hoặc bị khóa truy cập, đồng thời tình trạng cạn kiệt tài nguyên có thể ảnh hưởng đến môi trường máy chủ xung quanh. Trong một số trường hợp, sản phẩm có thể chuyển sang trạng thái không an toàn, cho phép vượt qua cơ chế bảo vệ hoặc làm tổn hại chức năng bảo mật.

Dữ liệu MITRE CWE chính thức
Tác độngPhạm viDiễn giải
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ừ chối dịch vụ: tiêu thụ tài nguyên khácTính sẵn sàngIf an attacker can trigger the allocation of the limited resources, but the number or size of the resources is not controlled, then the most common result is denial of service. This would prevent valid users from accessing the product, and it could potentially have an impact on the surrounding environment, i.e., the product may slow down, crash due to unhandled errors, or lock out legitimate users. For example, a memory exhaustion attack against an application could slow down the application as well as its host operating system.
Vượt qua cơ chế bảo vệ, KhácKiểm soát truy cập, KhácIn some cases it may be possible to force the product to "fail open" in the event of resource exhaustion. The state of the product -- and possibly the security functionality - may then be compromised.

Biện pháp giảm thiểu rủi ro

Thiết kế và giới hạn mức tiêu thụ. Đưa cơ chế điều tiết vào kiến trúc, giới hạn lượng tài nguyên mà người dùng chưa được ủy quyền có thể khiến hệ thống tiêu thụ, đồng thời đặt giới hạn quy mô rõ ràng cho các giao thức. Sử dụng xác thực và kiểm soát truy cập mạnh, bảo vệ chức năng đăng nhập trước tấn công từ chối dịch vụ, cân nhắc lưu đệm các tập kết quả truy vấn cơ sở dữ liệu, và theo dõi tốc độ yêu cầu để có thể chặn các yêu cầu vượt ngưỡng đã định.

Hệ thống có thể nhận diện cuộc tấn công rồi từ chối quyền truy cập tiếp theo trong một khoảng thời gian, hoặc điều tiết đồng đều mọi yêu cầu để tài nguyên không bị tiêu thụ nhanh hơn tốc độ giải phóng. Cách thứ nhất có thể tự gây từ chối dịch vụ đối với người dùng hợp lệ, đặc biệt khi kẻ tấn công giả mạo người dùng đó; cách thứ hai khó triển khai hiệu quả và chỉ làm tăng chi phí tấn công chứ không giải quyết hoàn toàn vấn đề. Bảo đảm mọi lỗi khi cấp phát tài nguyên đều đưa hệ thống về trạng thái an toàn.

Dữ liệu MITRE CWE chính thức
  1. Kiến trúc và thiết kếDesign throttling mechanisms into the system architecture. The best protection is to limit the amount of resources that an unauthorized user can cause to be expended. A strong authentication and access control model will help prevent such attacks from occurring in the first place. The login application should be protected against DoS attacks as much as possible. Limiting the database access, perhaps by caching result sets, can help minimize the resources expended. To further limit the potential for a DoS attack, consider tracking the rate of requests received from users and blocking requests that exceed a defined rate threshold.
  2. Kiến trúc và thiết kếMitigation of resource exhaustion attacks requires that the target system either: - recognizes the attack and denies that user further access for a given amount of time, or - uniformly throttles all requests in order to make it more difficult to consume resources more quickly than they can again be freed. The first of these solutions is an issue in itself though, since it may allow attackers to prevent the use of the system by a particular valid user. If the attacker impersonates the valid user, they may be able to prevent the user from accessing the server in question. The second solution is simply difficult to effectively institute -- and even when properly done, it does not provide a full solution. It simply makes the attack require more resources on the part of the attacker.
  3. Kiến trúc và thiết kếEnsure that protocols have specific limits of scale placed on them.
  4. Hiện thực hóaEnsure that all failures in resource allocation place the system into a safe posture.

Cách phát hiện trong hệ thống

Phân tích tĩnh tự động có hiệu quả hạn chế, chủ yếu với tài nguyên hệ thống như tệp, socket và tiến trình; có thể phát hiện tài nguyên không được giải phóng hoặc cấu hình thiếu giá trị tối đa, nhưng thường không nhận diện được tài nguyên tùy biến. Phân tích động tự động có hiệu quả trung bình đối với tiến trình, bộ nhớ và kết nối bằng cách tạo nhiều yêu cầu trong thời gian ngắn. Fuzzing có thể phát hiện vấn đề một cách tình cờ, đặc biệt khi nhiều ca kiểm thử được chạy mà không khởi động lại sản phẩm, nhưng đây không phải là phương pháp chuyên biệt.

Dữ liệu MITRE CWE chính thức
Phương phápCách làmHiệu quả
Phân tích tĩnh tự độngAutomated static analysis typically has limited utility in recognizing resource exhaustion problems, except for program-independent system resources such as files, sockets, and processes. For system resources, automated static analysis may be able to detect circumstances in which resources are not released after they have expired. Automated analysis of configuration files may be able to detect settings that do not specify a maximum value. Automated static analysis tools will not be appropriate for detecting exhaustion of custom resources, such as an intended security policy in which a bulletin board user is only allowed to make a limited number of posts per day.Hạn chế
Phân tích động tự độngCertain automated dynamic analysis techniques may be effective in spotting resource exhaustion problems, especially with resources such as processes, memory, and connections. The technique may involve generating a large number of requests to the product within a short time frame.Khá
Kiểm thử fuzzingWhile fuzzing is typically geared toward finding low-level implementation bugs, it can inadvertently find resource exhaustion problems. This can occur when the fuzzer generates a large number of test cases but does not restart the targeted product in between test cases. If an individual test case produces a crash, but it does not do so reliably, then an inability to handle resource exhaustion may be the cause.Tùy cơ hội

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

Các ví dụ dưới đây là những ví dụ đại diện, không phải danh sách đầy đủ:

  • CVE-2019-19911: thư viện Python xử lý hình ảnh có số lượng band rất lớn mà không giới hạn tài nguyên, dẫn đến tiêu thụ bộ nhớ quá mức hoặc tràn số nguyên.
  • CVE-2020-7218: bộ điều phối khối lượng công việc dựa trên Go không giới hạn tài nguyên trên các kết nối không xác thực, cho phép gây từ chối dịch vụ bằng cách làm ngập dịch vụ.
  • CVE-2020-3566: quản lý hàng đợi IGMP không đầy đủ trong hệ điều hành phân tán dẫn đến cạn kiệt tài nguyên.
  • CVE-2009-2874, CVE-2007-4103 và CVE-2008-2121: lần lượt minh họa việc mở quá nhiều kết nối, tạo nhiều lần bắt tay ba bước chưa hoàn tất, và làm tiêu thụ CPU bằng TCP SYN flood.
  • CVE-2009-1928 và CVE-2006-1173: yêu cầu hoặc dữ liệu lồng sâu gây cạn kiệt ngăn xếp do đệ quy không kiểm soát hoặc thông điệp MIME lồng sâu.
  • CVE-2009-2858 và CVE-2007-0897: rò rỉ bộ nhớ hoặc không đóng bộ mô tả tệp dẫn đến cạn kiệt tài nguyên và lỗi xử lý.
  • CVE-2009-2726, CVE-2009-2540 và CVE-2009-2299: đầu vào lớn hoặc giá trị độ dài không được giới hạn gây tiêu thụ ngăn xếp hoặc bộ nhớ quá mức.
  • CVE-2009-2054, CVE-2008-5180, CVE-2008-2122 và CVE-2007-0897: cạn kiệt bộ mô tả tệp, bộ nhớ, CPU hoặc tài nguyên phiên do số lượng lớn gói tin, yêu cầu, tiến trình hoặc phiên xử lý.
Dữ liệu MITRE CWE chính thức

Dưới đây là các lỗ hổng tiêu biểu liên quan đến CWE-400, dựa theo mức độ ưu tiên

Nguồn (2)

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.