CWE-583: finalize() Method Declared Public

Variant Incomplete Simple

CWE版本: 4.18

更新日期: 2025-09-09

弱点描述

The product violates secure coding principles for mobile code by declaring a finalize() method public.

扩展描述

A product should never call finalize explicitly, except to call super.finalize() inside an implementation of finalize(). In mobile code situations, the otherwise error prone practice of manual garbage collection can become a security threat if an attacker can maliciously invoke a finalize() method because it is declared with public access.

常见后果

影响范围: Confidentiality Integrity Availability

技术影响: Alter Execution Logic Execute Unauthorized Code or Commands Modify Application Data

潜在缓解措施

阶段: Implementation

描述: If you are using finalize() as it was designed, there is no reason to declare finalize() with anything other than protected access.

检测方法

方法: Automated Static Analysis

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.)

有效性: High

引入模式

阶段 说明
Implementation -

适用平台

编程语言
Java (Undetermined)

分类映射

分类名称 条目ID 条目名称 映射适配度
The CERT Oracle Secure Coding Standard for Java (2011) MET12-J Do not use finalizers -
Software Fault Patterns SFP28 Unexpected access points -
关键信息

CWE ID: CWE-583

抽象级别: Variant

结构: Simple

状态: Incomplete

相关弱点