CWE-682 là gì?
CWE-682 là tính toán không chính xác. Lỗi phát sinh khi sản phẩm thực hiện phép tính tạo ra kết quả sai hoặc ngoài dự kiến, rồi sử dụng kết quả đó trong các quyết định quan trọng về bảo mật hoặc quản lý tài nguyên.
CWE-682 là tính toán không chính xác. Lỗi phát sinh khi sản phẩm thực hiện phép tính tạo ra kết quả sai hoặc ngoài dự kiến, rồi sử dụng kết quả đó trong các quyết định quan trọng về bảo mật hoặc quản lý tài nguyên.
Chưa có dữ liệu về lỗ hổng cho CWE-682
Chưa có dữ liệu về lỗ hổng trong CISA KEV cho CWE-682
CWE-682 xảy ra khi chương trình tính sai, hoặc tạo ra kết quả ngoài dự kiến, rồi tin cậy kết quả đó trong một thao tác có ảnh hưởng đến bảo mật hay tài nguyên. Lỗi có thể nằm trong biểu thức, thứ tự toán tử, phép tính kích thước hoặc độ dài, phép cộng dồn, xử lý bit, hoặc quá trình chuyển đổi giữa các kiểu số. Khi kết quả sai được dùng để kiểm tra quyền, xác thực dữ liệu, tính kích thước bộ đệm hay phân bổ tài nguyên, một lỗi số học nhỏ có thể lan thành lỗi logic bảo mật, truy cập ngoài phạm vi, tiêu thụ tài nguyên hoặc thực thi mã trái phép.
Điểm yếu này xuất hiện khi kết quả của một phép tính không phản ánh ý định của chương trình nhưng vẫn được dùng để quyết định cấp phát tài nguyên, kiểm tra bảo mật hoặc trạng thái thực thi. Nguyên nhân có thể là sai thứ tự toán tử, bỏ sót thành phần trong công thức, lỗi lan truyền bit nhớ, tràn số, độ chính xác không phù hợp, chuyển đổi kiểu hoặc xử lý sai các giá trị ngoài phạm vi. Điểm yếu không phụ thuộc vào ngôn ngữ hay công nghệ cụ thể và được ghi nhận ở giai đoạn triển khai.
Tính toán sai có thể khiến chương trình chuyển sang trạng thái ngoài dự kiến, bị lỗi dừng hoặc làm suy giảm dịch vụ. Trong cấp phát tài nguyên, kết quả sai có thể góp phần gây thao tác ngoài phạm vi, dẫn đến lỗi dừng hoặc thậm chí thực thi mã trái phép; nó cũng có thể gây tràn số nguyên hoặc các vấn đề tiêu thụ tài nguyên khác. Trong việc gán quyền hoặc đặc quyền, lỗi có thể cấp quyền truy cập vào tài nguyên nhạy cảm. Nếu tạo ra phép so sánh không đủ chặt chẽ, lỗi có thể làm suy yếu cơ chế bảo vệ hoặc quy trình kiểm tra và cho phép vượt qua logic quan trọng về bảo mật.
| Tác động | Phạm vi | Diễn giải |
|---|---|---|
| Từ chối dịch vụ: sập, thoát hoặc khởi động lại | Tính sẵn sàng | If the incorrect calculation causes the program to move into an unexpected state, it may lead to a crash or impairment of service. |
| 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 khác, Thực thi mã hoặc lệnh trái phép | Tính toàn vẹn, Tính bí mật, Tính sẵn sàng | If the incorrect calculation is used in the context of resource allocation, it could lead to an out-of-bounds operation (CWE-119) leading to a crash or even arbitrary code execution. Alternatively, it may result in an integer overflow (CWE-190) and / or a resource consumption problem (CWE-400). |
| Chiếm đặc quyền hoặc mạo danh | Kiểm soát truy cập | In the context of privilege or permissions assignment, an incorrect calculation can provide an attacker with access to sensitive resources. |
| Vượt qua cơ chế bảo vệ | Kiểm soát truy cập | If the incorrect calculation leads to an insufficient comparison (CWE-697), it may compromise a protection mechanism such as a validation routine and allow an attacker to bypass the security-critical code. |
Trong giai đoạn triển khai, cần hiểu cách ngôn ngữ biểu diễn số và cách biểu diễn đó ảnh hưởng đến phép tính. Phải chú ý đến khác biệt về kích thước byte, độ chính xác, kiểu có dấu và không dấu, việc cắt ngắn, chuyển đổi và ép kiểu, cách xử lý NaN, cũng như các giá trị vượt quá phạm vi biểu diễn. Kiểm tra mọi đầu vào số để bảo đảm nằm trong cả giới hạn tối thiểu và tối đa; chọn kiểu dữ liệu phù hợp với thao tác và chỉ dùng kiểu không dấu cho các giá trị không thể âm, chẳng hạn kích thước hoặc số lượng. Nên chọn ngôn ngữ, thư viện hoặc framework hỗ trợ xử lý số an toàn hơn, chẳng hạn SafeInt cho C++ hoặc IntegerLib cho C hay C++. Cần xem xét kỹ cảnh báo của trình biên dịch và loại bỏ các vấn đề có ý nghĩa bảo mật, như không tương thích giữa kiểu có dấu và không dấu trong thao tác bộ nhớ hoặc sử dụng biến chưa được khởi tạo.
Có thể phát hiện bằng phân tích thủ công, phân tích tĩnh tự động và fuzzing. Phân tích tĩnh thủ công đặc biệt hữu ích để đánh giá tính đúng đắn của các phép tính cấp phát và phát hiện điều kiện tràn số; phương pháp này có thể hiệu quả hơn các kỹ thuật hoàn toàn tự động đối với các vấn đề thiết kế và quy tắc nghiệp vụ. Phân tích tĩnh tự động có thể lập mô hình luồng dữ liệu và luồng điều khiển để tìm các mẫu dễ bị tổn thương giữa nguồn dữ liệu đầu vào và nơi dữ liệu được sử dụng. Fuzzing tạo nhiều đầu vào đa dạng và gọi mã một cách động, có thể phát hiện kết quả bất thường như lỗi dừng, hỏng bộ nhớ hoặc tiêu thụ tài nguyên, đồng thời tạo các ca kiểm thử có thể lặp lại; tuy nhiên, phương pháp này không bảo đảm bao phủ mọi phép tính hoặc quy tắc nghiệp vụ.
| Phương pháp | Cách làm | Hiệu quả |
|---|---|---|
| Phân tích thủ công | This weakness can be detected using tools and techniques that require manual (human) analysis, such as penetration testing, threat modeling, and interactive tools that allow the tester to record and modify an active session. Specifically, manual static analysis is useful for evaluating the correctness of allocation calculations. This can be useful for detecting overflow conditions (CWE-190) or similar weaknesses that might have serious security impacts on the program.These may be more effective than strictly automated techniques. This is especially the case with weaknesses that are related to design and business rules. | Cao |
| Phân tích tĩnh tự động | Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.) | - |
| Kiểm thử fuzzing | Fuzz testing (fuzzing) is a powerful technique for generating large numbers of diverse inputs - either randomly or algorithmically - and dynamically invoking the code with those inputs. Even with random inputs, it is often capable of generating unexpected results such as crashes, memory corruption, or resource consumption. Fuzzing effectively produces repeatable test cases that clearly indicate bugs, which helps developers to diagnose the issues. | Cao |
Các ví dụ sau là những trường hợp đại diện được ghi nhận, không phải danh sách đầy đủ:
CVE-2026-7270: biểu thức tính toán không dùng dấu ngoặc để xử lý thứ tự toán tử, dẫn đến tính toán sai và sau đó là tràn bộ đệm.CVE-2020-0022: triển khai Bluetooth trên điện thoại di động bỏ qua độ lệch khi tính độ dài gói tin, dẫn đến ghi ngoài phạm vi.CVE-2017-8932: lỗi lan truyền bit nhớ trong triển khai mật mã trên kiến trúc x86-64 đưa bit nhớ từ một thao tác không liên quan vào phép tính hiện tại.CVE-2010-1378: tính toán sai cho phép kẻ tấn công vượt qua kiểm tra chứng chỉ.CVE-2004-1363: tràn do thay thế xảy ra khi biến môi trường được mở rộng sau khi kiểm tra độ dài đã hoàn tất, dẫn đến tràn bộ đệm.Dưới đây là các lỗ hổng tiêu biểu liên quan đến CWE-682, dựa theo mức độ ưu tiên
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.
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.
Đánh giá mức độ an toàn và các đề xuất tới từ CyStack cho các trang Web
Tìm hiểu các nghiên cứu của đội ngũ chuyên gia chúng tôi trong an ninh mạng
Tìm hiểu về giải pháp tình báo mối đe doạ và phát hiện lộ lọt dữ liệu tới từ CyStack
vi