CWE-375: Returning a Mutable Object to an Untrusted Caller(将可变对象返回给不受信任的调用方)

探讨了在函数中返回可变数据引用可能导致外部代码修改数据的风险,强调了克隆数据的重要性,以防止数据篡改并确保软件的安全性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ID: 375

类型:基础
结构:简单

状态:草稿

描述

将非克隆可变数据作为返回值发送可能会导致调用函数更改或删除该数据。

扩展描述

在函数返回对可变数据的引用的情况下,调用函数的外部代码可能会对发送的数据进行更改。如果以前没有克隆此数据,那么类将使用修改过的数据,这可能会违反对其内部状态的假设。

关联视图

与“研究层面”视图(CWE-1000)相关

与“开发层面”视图(CWE-699)相关

引入模式

阶段

说明

实现

 

应用平台

语言

C (出现的可能性不确定)

C++ (出现的可能性不确定)

Java (出现的可能性不确定)

C# (出现的可能性不确定)

后果

范围

冲击

可能性

访问控制
完整性

技术冲击: 修改内存

数据可能被其它函数修改。

 

被利用的可能性:

一般

示例

例1

这个类有一个私有的病人列表,并提供了一个查阅病人列表的方法:

(问题代码)

Example Language: Java 

public class ClinicalTrial {

private PatientClass[] patientList = new PatientClass[50];
public getPatients(...){

return patientList;

}

}

虽然此代码只意味着允许读取患者列表,但getPatients()方法返回对类原始患者列表的引用,而不是对列表副本的引用。此方法的任何调用方都可以任意修改患者列表的内容,即使它是类的私有成员。

应对措施

阶段: 实现

声明返回的数据不应更改为常量或不可变。

阶段: 实现

在返回引用之前克隆所有可变数据。这是首选的缓解措施。这样,不管对数据做了什么更改,都会保留一个有效的副本供类使用。

种属

关系

类型

ID

名称

属于

849

The CERT Oracle Secure Coding Standard for Java (2011) Chapter 6 - Object Orientation (OBJ)

属于

963

SFP Secondary Cluster: Exposed Data

属于

1139

SEI CERT Oracle Secure Coding Standard for Java - Guidelines 05. Object Orientation (OBJ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值