在一年前的JavaOne大会上,Fortify Software创始人兼首席<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,1, this);" id="key1" onmousemove="kwM(1);" oncontextmenu="return false;">科学家</nobr>Brian Chess作了一个标题为“Java的12个技术陷阱及其应对方法”的演讲。一年过去了,我们为这些内在的脆弱性作了什么呢?
这些弱点包括:XSS(跨站点的脚本)、SQL注射和允许引入C或者C++代码的本地方法――同它的BUG一起。
如今,它可能会变得更糟,Chess说,他有证据证明这一点。
Fortify――它的市场在于开源分析技术,已经涉及到了针对大型数据库的通用Java<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 0px dotted; color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,5, this);" id="key4" onmousemove="kwM(5);" oncontextmenu="return false;">程序</nobr>错误和弱点――不但来源于客户,而且来源于Java Open Review项目。
在这个项目中,Fortify使用FindBugs――一个静态分析工具,能够在Java代码中寻找Bugs,能够审查开源项目代码,如:Apache、Azureus和Tomcat。它能够在线发布它发现的问题,然后把这些问题分享给那些特定代码脆弱性的维护人员。
在这个项目中,Fortify所发现的开源系统代码缺陷密度是“天文数字”级别的。Chess指出,Fortify在去年的一个名为“Net Trust”的项目中所发现了大量错误――大约是每1000行代码有12215个错误。
“这样的错误量显然是是过大了。”Chess说。
更具有讽刺意义的是,Net Trust居然是Google用来为单点登陆和认证所建立的一个项目。“他们就像还是个没有做好作业的学生。” Chess说。
Net Trust 只是能够证明Java<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,3, this);" id="key3" onmousemove="kwM(3);" oncontextmenu="return false;">安全</nobr>陷阱的许多例证之一,虽然大家都对此有所了解,但是随着它应用的增长,还是会不断给那些使用它的程序员带来麻烦。
当Java专家William Pugh意识到Java安全陷阱变得更糟的时候,他完全同意Chess的意见。“Xss变成了一个大问题。”他说。虽然像Fortify这样的工具集可以寻找XSS问题,但是它不能驱除你代码中所有的XSS漏洞。如果不包括所有的Web攻击,据统计,目前XSS漏洞正在变成最大的漏洞。
Pugh是马里兰大学的<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,6, this);" id="key5" onmousemove="kwM(6);" oncontextmenu="return false;">计算机</nobr>科教授,同时还是FingBug工具的作者,这个工具被用在Java开放检查项目中。
举一个Sun说明书中的XSS漏洞的例子:
try { firstname = request.getParameter("firstname"); } catch (Exception e) {e.printStackTrace(); }
userName = firstname;
...
pw.print(" Thanks for your feedback, " + userName + "!");
这段代码允许黑客在应用程序中注入代码,它将在受害者的浏览器中运行。Chess说。
“这段代码期望用户输入像Bob这样的名字” Chess在email中写道。 “但是黑客能建立一个看起来像这样的数据:
and then the victim's browser would execute a function named sendDataToMotherShip()." ”
安全的<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 0px dotted; color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,2, this);" id="key2" onmousemove="kwM(2);" oncontextmenu="return false;">服务</nobr>器端代码会判断它只包含特定的字符集并且不包含可执行脚本。
为什么XSS会得到如此抨击?原因同10年前缓冲溢出的道理是一样的,这两个漏洞对黑客来说是十分重要的,因为这个漏洞允许黑客在系统中注入代码从而完全控制计算机。
过去的棘手问题是缓存溢出,目前是XSS。
“这两个漏洞的不同是,缓存溢出方法不太容易掌握,黑客需要对系统架构和本机上发生的各种情况十分精通。而XSS漏洞十分容易被利用――只要在当地的书店买本关于Java的书你就可以使用XSS了。”
如果这些都来源于Sun,我们还能信任谁呢?事实是:查找最普遍的Java安全漏洞陷阱的责任应该完全由开发人员承担。
这样情况就能够好转吗?也许会,但是也很困难,Chess说。一个解决方案是限制浏览器执行XSS。这就需要更改Web标准同时使得浏览器变得更大。
即使某些人说服了厂商来支持这个<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,0, this);" id="key0" onmousemove="kwM(0);" oncontextmenu="return false;">计划</nobr>,它也需要把新的浏览器推广给数百万的用户。“我们转换到这上面的时间最少也得几年,基础架构和语言的变化需要很长的时间才能完成。”Chess说。
“如果开发人员重视它的话,漏洞的数量会显著下降”Chess说。
或许更有效的方法是同框架所有者和<nobr target="_blank" onmouseout="kwL(event, this);" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onmouseover="kwE(event,10, this);" id="key6" onmousemove="kwM(10);" oncontextmenu="return false;">软件</nobr>制造商来交流,从而使得Web成为安全的程序执行场所,Chess说。当然,这也不是能很快的解决。
分享到:
相关推荐
东莞证券-计算机行业深度报告:数据安全赛道长坡厚雪-230427
"taobao-java-sdk-1.0.0"是Java开发者与钉钉平台进行深度集成的关键工具,它简化了开发流程,提高了开发效率。无论是在企业内部系统集成还是构建钉钉小程序,都能发挥出其强大的能力。掌握并熟练运用这个SDK,将有...
### 深度分析:移动互联网安全 #### 移动互联网概述 移动互联网是指通过移动设备(如手机、PDA、便携式计算机等)利用移动通信网络(如2G、3G、E3G等)或无线局域网等方式接入互联网的技术。它强调的是在任何地点...
总之,“dingtalk-sdk-java.zip”为Java开发者提供了一条便捷的途径,实现了与钉钉平台的深度集成,使得企业级应用能够充分利用钉钉的特性,提高办公效率,降低沟通成本。通过深入理解和熟练运用这个SDK,开发者可以...
深度研究:_认识CPI基期轮换-20210208-华泰证券-15页.pdf
20210218-开源证券-计算机行业深度报告:云安全专题报告,网络安全的未来在云端.pdf
巴黎银行-全球-投资策略-深度研究:巴黎银行R周期介绍-0405-15页.pdf
动保行业深度报告:从营销驱动走向研发创新-20200615-长江证券-27页.pdf
IBM Java PPC64 SDK 7.0-10.50是IBM专门为PowerPC64架构的AIX操作系统设计的一款Java开发工具包。这个版本的SDK(Software Development Kit)包含了运行和开发Java应用程序所需的全套组件,包括Java运行时环境(JRE...
银行深度分析:中国居民财富画像-国盛证券
电气设备行业深度研究:对特斯拉长期需求的思考-20191020-天风证券-32页.pdf
《基于OCR技术的图片文字识别——深度解析百度aip-java-sdk-4.1.0》 在当今数字化时代,图像中的文字识别(OCR,Optical Character Recognition)技术扮演着至关重要的角色,它使得计算机能够自动识别并转换图像中...
《深度学习搜索引擎开发:Java实现》是一本专著,它探讨了如何利用深度学习技术构建高效、智能的搜索引擎。本书的源代码包含了作者为阐述理论和技术而编写的Java程序,这些程序是理解并实践深度学习搜索引擎开发的...
机械行业深度研究:弱化短期波动,布局2-3年油服及设备上升通道.pdf
东北证券发布的这份关于钢铁行业深度报告,从宏观经济、产业供需、货币环境等多重维度,详细复盘了2007年至2019年钢铁市场的波动情况,并对未来钢铁股及相关投资的展望提出了深入的分析和建议。以下是对报告内容的...
半导体行业深度分析:国家集成电路产业基金二期成立,回顾大基金一期投资方向-20191027-广发证券-22页.pdf
计算机行业深度分析:网络安全内容审查迎来黄金发展期-1011-安信证券-20页.pdf
汽车行业特斯拉系列深度报告之二:特斯拉带给中国企业的机会-0107-华金证券-23页.pdf
计算机行业深度分析:企业级网络信息安全主要公司对比图谱-200220.rar
通用机械行业深度:疫情对自动化行业影响-疫情抑制短期需求,中长期利好自动化渗透率提升.pdf