悟空云课堂 | 第十七期:对象只定义了Equals和Hashcode方法之一的漏洞

96 阅读2分钟

中科天齐倾情打造《悟空云课堂》旨在科普软件安全相关知识,助力企业有效防范软件安全漏洞,提升网络安全防护能力。本期主题为违规的对象模型:对象只定义了Equals和Hashcode方法之一漏洞的相关介绍。

一、什么是“违规的对象模型:对象只定义了Equals和Hashcode方法之一”的漏洞?

也就是同一个对象没有同时包含equals和hashcode。因为Java对象需要遵守许多与相等相关的约束条件。其中一个约束条件是两个变量相等则两个变量必须具有相同的哈希值。换句话说,如果a.equals(b)== true,则a.hashCode()== b.hashCode()。

二、 “违规的对象模型:对象只定义了Equals和Hashcode方法之一”的漏洞构成条件有哪些?

满足以下条件,就构成了一个该类型的安全漏洞:

一个类中,只有equals或者hashCode方法中的一个。

三、 “违规的对象模型:对象只定义了Equals和Hashcode方法之一”的漏洞会造成哪些后果?

关键词:数据问题;程序执行异常

在集合中,相等的对象期望拥有相同的哈希值。若某个类定义了equals方法但是没有定义 hashCode方法,则相等的对象可能产生不同的哈希值。

四、“违规的对象模型:对象只定义了Equals和Hashcode方法之一”的漏洞的防范和修补方法有哪些?

在定义了equals方法的类中同时定义Hashcode方法。

五、 “违规的对象模型:对象只定义了Equals和Hashcode方法之一”的漏洞样例:

用Wukong检测上述程序代码,则可以发现代码中存在着“违规的对象模型:只定义了Equals和Hashcode之一” 导致的代码缺陷,如下图:

“违规的对象模型:只定义了Equals和Hashcode之一“在CWE中被编号为CWE-581: Object Model Violation: Just One of Equals and Hashcode Defined

软件安全 网络安全的最后一道防线

中科天齐公司是在中科院计算技术研究所的大力推动下

以中科院计算所国际领先的自主研究成果

“软件代码漏洞检测修复平台(Wukong悟空)”

为基础组建的高新技术企业