开源软件安全现状分析报告
在调用AMF_Decode函数对数据进行解码之后,obj中就存储了解码后的数据。随后在3108行中,调用AMF_GetProp函数从obj中获取索引为3的prop属性数据,紧接着在AMFProp_GetObject函数中将prop中Union数据p_vu以AMFObject对象类型的方式取出,并存储到obj2中。在3109行中,再次调用AMF_GetProp函数从obj2中获取数据。在我们的poc中,obj2中实际上存储的是一个double数据,程序将其当作指针进行使用,可能会导致程序访问非法的内存地址。如图8所示。 图8 非法内存地址访问过程 三、结论与建议 从开源项目检测计划所得到的数据来看,当前开源软件的安全问题非常严重,代码中的安全缺陷密度较高。而据NVD数据统计,截至2017年2月,全球开源软件相关的已知安全漏洞已超过28000个。 随着软件开发过程中开源软件的使用越来越多,开源软件实际上已经成为软件开发的核心基础设施,开源软件的安全问题应该上升到基础设施安全的高度来对待,应该得到更多的、更广泛的重视。 而据我们目前观察到的情况,当前绝大多数企业在软件开发过程中,对开源软件的使用非常随意,管理者常常不清楚自己的团队在开发过程中使用了哪些开源软件,甚至程序员自己都无法列出完整的开源软件使用列表。这给信息系统安全风险的管控带来了极大的挑战,系统的运维者不清楚自己正在运行的软件系统中是否包含了开源软件,包含了哪些开源软件,这些开源软件中是否存在安全漏洞! 在此我们呼吁和建议,开发者在软件开发过程中使用开源软件时,不应仅仅关注开源软件的功能,还应把安全作为重要因素纳入考量,尽可能避免由于不当的使用开源软件而引入严重的安全隐患。“360开源项目检测计划”愿与国内广大软件开发者一起,关注和防范开源软件安全风险,为国内软件的安全开发水平提高贡献一份力量。开发者可以通过“360开源项目检测计划”网站(www.codesafe.cn)了解自己关注的开源软件的安全缺陷检测细节,360企业安全集团也可以提供专业的产品,帮助客户确定在自身软件开发过程中使用了哪些开源软件,并可以帮助客户持续跟踪这些开源软件的安全状况,及时防范安全风险。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |