SV.EXPOSE.STORE
public 方法存储对 mutable 对象的引用时,会检测到该错误。
漏洞与风险
恶意小程序可以通过修改返回的结果来修改对象的内部状态。
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
缓解与预防
通过不在 public 方法中存储对 mutable 对象的引用、改用 immutable 对象或避免使用 static 字段,可以预防该漏洞造成的危害。
示例 1
复制
private Collection users;
public void setUsers(Collection users) throws AuthorizationException {
for (Iterator iter = users.iterator(); iter.hasNext();) {
String user = (String) iter.next();
if (!authorized(user)) throw new AuthorizationException();
}
this.users = users;
}
// ...
void maliciousUserCode() throws AuthorizationException {
Collection myUsers = new ArrayList();
myUsers.add("goodUser");
setUsers(myUsers);
myUsers.add("anotherUser");
}
针对第 26 行报告 SV.EXPOSE.STORE:方法存储对 mutable 对象“users”的引用。恶意用户可以修改对象的内部状态。