应用安全测试:双面的黑盒

软件安全的最大风险是检验工具及过程不透明的本质,以及不同的检验技术(例如自动化动态测试)不能 覆盖假阴性错误的潜在可能性。

尽管安全软件开发生命周期(SDLC)有很多相关的最佳实践,但大多数 组织依然有一种倾向,那就是主要依赖测试去构建安全的软件。当前的测试方法有一个最严重的副作用,即组 织不太清楚哪些已经被其解决方案测试过,而(甚至更重要的是)还有哪些未被测试过。我们的研究表明,任 何单一的自动化保证机制最多可以检验44%的安全需求。NIST 静态分析工具博览会发现,Tomcat中有26个已知 的漏洞,但所有静态分析工具综合起来只报告了其中4个警告。因为依赖不透明的检验过程是一种普遍存在的 习惯,甚至已经成为行业标准,因此许多组织在构建安全的软件时,满足于把测试作为最主要的手段。

举个例子,假设你雇用一家咨询公司为你的软件执行渗透测试。许多人将这种测试称为“黑盒”(基 于同名的质保技术),测试人员没有详细的系统内部构件知识(比如系统代码)。执行测试之后,一成不变地 生成一份报告,概括你应用中的几类漏洞。你修复了漏洞,然后提交应用做回归测试,下一份报告反馈说“已 清除”——也就是说没有任何漏洞了。或者充其量仅仅告知你,你的应用在同一时间范围内不会被同样的测试 人员以同样的方式攻破。但另一方面,它不会告诉你:

你的应用中还有哪些潜在的威胁?

你的应用中哪些威胁“其实不易受到攻击”?

你的应用中有哪些威胁未被测试人员评估?从运行期的角度来看,哪些威胁无法测试?

测试的时间及其他约束如何影响了结果的可靠性?例如,如果测试人员还有5天时间,他们还将执行哪些其 他的安全测试?

测试人员的技能水平有多高?你能否从不同的测试人员或者另一家咨询公司手中取得一组相同的结果?

以我们的经验来看,组织无法回答以上大多数问题。黑盒是两面的:一方面,测试人员不清楚应用的内部 结构;而另一方面,申请测试的组织对自己软件的安全状况也缺乏了解。并不只是我们意识到了这个问题: Haroon Meer在44con上讨论了渗透测试的挑战。这些问题大多数都适用于任何形式的验证:自动化动态测试、 自动化静态测试、手工渗透测试以及手工代码审查。实际上, 近期有一篇论文介绍了源代码审查中类似的挑 战。

关于需求的实例

为了更好地说明这个问题,让我们看一些常见的高风险软件的安全需求, 以及如何将常见的验证方法应用到这些需求上。

需求:使用安全的哈希算法(如SHA-2)和唯一的混淆 值(salt value)去哈希(Hash)用户密码。多次迭代该算法。

在 过去的一年里,LinkedIn、Last FM和Twitter发生了众所周知的密码泄露事件,对于此类缺陷,本条需求是具 体地、合乎时宜的。

如何应用常见的验证方法:

自动化运行期测试:不可能访问已存的密码,因此无法使用此方法验证本需求

手工运行期测试:只有另一些开发导致已存密码转储时,才能使用此方法验证本需求。这并不是你所能控 制的,因此你不能依靠运行期测试去验证本需求。

自动化静态分析:只有满足以下条件时,才可以用此方法验证本需求:

工具清楚身份认证是如何工作的(例如,使用了标准的组件,就像Java Realms)

工具清楚应用程序使用了哪个特定的哈希算法

如果应用程序为每次哈希使用了唯一的混淆值,工具要清楚混淆算法和混淆值

时间: 2024-11-03 14:27:16

应用安全测试:双面的黑盒的相关文章

google测试分享-SET和TE

前端时间看了google测试之道,收获了一些,在此总结下并打算写一个系列blog,顺便分享给各位,也希望大家多交流,多讨论.另外需要强调的是我说到的一些google测试理论和淘宝的相关测试实践,并不代表所有淘宝测试团队都会这样去做,仅仅代表我的测试团队会做的一些思路上的改变和实践,肯定有不成熟的地方,欢迎讨论.最后需要强调的是,我这边得到的一些google做法仅限于google测试之道那本书,其他的我真不知道,如果有冲突不一致的地方,欢迎大家指出来. 为了让这些blog分享更有逻辑性,我打算分几

测试之道--阿里巴巴八年测试专家倾情奉献

一.  前言 我从事测试工作将近八年了,从起初的不懂测试,怀疑测试,到相信测试,再到坚定测试,其中经历的辛酸.煎熬无法言表.在从事测试工作的这八年里,有人质疑,也有人追捧,唇枪舌剑,没完没了,貌似测试永远都是个站在舆论风口浪尖的角色.本文乃在下之精血所作,是我对测试的高度概括,旨在帮助大家了解测试,新人可以更好地从事测试工作,老人可以进行测试探讨,交流思想.为了尽量让更多的人理解测试,本文重在述道,少说测试之术,相信看完之后,各位自有论断,功过是非留于各位看官说. 二.  测试的万能模型 为什么

非正规公共热点中超两成存风险:蹭网需谨慎

WiFi网络安全问题一直引人关注,在今年央视3.15晚会上,网络工程师演示了钓鱼WiFi是如何窃取用户信息的.直接为攻击而架设的高危热点占到12%,其中在非运营商和政府提供的第三方热点中,带有攻击性的Wi-Fi热点超过23%.业内人士称,实际情况或许更糟.除了之前被多次报道的钓鱼热点外,寄生虫热点.公然勒索信息热点首次出现在公众视野. "寄生虫"WiFi破坏性强 千万别乱蹭网 非官网公共热点中超两成存在安全风险 WiFi网络安全问题一直引人关注,在今年央视3.15晚会上,网络工程师演示

京沪广商业广告WiFi抽查超8%为钓鱼信号

调查提醒,移动设备用户连接陌生Wi-Fi信号时应当谨慎. 信息安全机构对北京.上海.广州三地机场.火车站.旅游景点.商业中心等6万多个Wi-Fi信号的调查显示,有8.5%的Wi-Fi信号为"钓鱼"Wi-Fi,可能存在修改并植入恶意软件,盗取账号密码等风险.这是澎湃新闻从"第五届上海市信息安全活动周"的活动上了解到的. 在活动周期间的中国信息安全用户大会上,信息安全组织"雨袭团"公布了"中国一线城市Wi-Fi安全与潜在威胁调查研究报告&q

蜗牛公司旗下双面魔幻网游《黑金》正式开放测试

在前期开放的预创角活动中,<黑金>创下了游戏预创角50万的成绩.蜗牛总裁石海和国际摇滚天后艾薇儿领衔的<黑金>电视广告片也将于明日起在全国各大电视台播出.石海将首次以卡通形象出现在蜗牛的广告中. 此外,在开放测试日到来之际,为了回馈玩家,官方特别准备了8大活动全力备战开测,海量道具.礼包.点券.VIP.苹果数码和金条大奖无门槛领取,将更好的福利送到玩家手中. 石海卡通形象现身电视广告 艾薇儿微博力荐黑金 石海在电视广告中的卡通形象 作为蜗牛公司继<九阴真经>之后推出的第

Web端PHP代码函数覆盖率测试解决方案

1. 关于代码覆盖率 衡量代码覆盖率有很多种层次,比如行覆盖率,函数/方法覆盖率,类覆盖率,分支覆盖率等等.代码覆盖率也是衡量测试质量的一个重要标准,对于黑盒测 试来说,如果你不确定自己的测试用例是否真正跑过了系统里面的每一行代码,在测试的完整性上总要打些折扣.因此,业界几乎对各种编程语言都有自己的一套代 码覆盖率解决方案.世界上最美的语言PHP当然也不例外.PHPUnit和Spike PHPCoverage提供了一套基于xdebug的代码覆盖率测试方案.在本文中,我将针对自己碰到的特定业务场景

测试Web应用程序是否存在跨站点脚本漏洞

到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议.如果您很精通 XSS 并且只想看看有什么好的测试方法可供借鉴,那么请直接跳到本文的测试部分.如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击."跨站点脚本"这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点的.所以,它就是一个在发现这种攻击时起的一个名字,并且一直沿用至今.从现在开始,我们将

渗透性测试解析

提起渗透性测试(模拟黑客进行"合法"的网络入侵测试),人们自然会想到黑客,好象做这种测试的只有真正的黑客才可以做到,但黑客通常是"虚拟网络"中的人物,与现实生活中的人很难对应,对于他们的行为感到神秘也是自然的.测试与攻击有什么不同呢?我刚从事安全研究时也很困惑,攻击是不按常理出牌的思维,遵循套路的只能是表演,不会实用,那么安全公司的专家们是如何进行渗透性测试呢? 一般来说,这种测试的过程都是半隐蔽的,不同的安全公司.不同的人做这种测试的结果差异巨大.我们最终看到的多

敏捷测试简介

时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就 写了一篇文章<什么是敏捷软件测试>(刊登在InfoQ网站上[1]), 就已经谈到这个话题,"敏捷软件测试更多的是一种 理念,而非过程".在2011年,我自己也写了一篇文章<敏捷测试的思考和新发展>,刊登在<程序员>杂志上,谈到"在 BDD.ATDD和TDD最根本的.共同的思想基础上,构成一个全新的.更完善的敏捷测试框架"[