Oracle希望您停止发送错误,这就是疯狂的原因

甲骨文本周因其安全主管玛丽·戴维森(Mary Davidson)撰写的博客帖子而陷入困境。该文章尽管涵盖了一系列主题,但主要是关于向Oracle报告可能的安全漏洞的做法。具体来说,您为什么不应该这样做。

“最近,我看到客户对我们的代码进行反向工程以试图在其中发现安全漏洞的情况大为增加。 这就是为什么我一直给客户写很多以“ hi,howzit,aloha"开头但以“请遵守您的许可协议并

Davidson解释说,越来越多具有安全意识的客户正在对Oracle软件进行逆向工程,以寻找安全漏洞(或聘请顾问来进行此工作)。为他们)。戴维森(Davidson)指责这些客户违反了他们的许可协议,没有采取平凡的安全预防措施,试图为他们做Oracle的工作,而且通常都是坏人。如果客户发现了真正的漏洞,而Oracle会修复它。

“我几乎不愿回答这个问题,因为我想重申客户不应也不应该对我们的代码进行反向工程。 […]我们不会为报告此类问题(通过反向工程发现)的客户提供针对该问题的特殊(一次性)补丁。我们也不会在我们可能发布的任何咨询中提供信誉。您真的不能指望我们说“谢谢您违反许可协议。"

在安全社区中,效果不佳,并且帖子很快

-Thorsten Sick(@ThorstenSick),2015年8月11日

但是,如果您不熟悉安全领域,则可以删除它。原始帖子为何如此被误导可能并不明显。因此,今天,我们将讨论Oracle的安全性哲学在哪些方面偏离了主流,以及它为什么会成为问题。

解释争议

那么,到底是什么反向工程,为什么戴维森如此关注它?基本上,当Oracle发布软件时,他们将其内部源代码“编译"为可执行文件,然后将这些文件交付给客户。编译是一种将人类可读的代码(如C ++)转换为更密集的二进制语言的过程,可以直接将其输入计算机处理器。

Oracle的源代码不是公开的。这旨在使其他人更难以窃取其知识产权。但是,这也意味着客户很难验证代码是否安全。这就是“反编译"的作用。基本上,反编译是朝另一个方向转换,将可执行文件转换回人类可读的代码。这并不能完全提供原始的源代码,但是可以提供功能相同的代码-尽管由于注释和组织结构的丢失,通常很难阅读。

这是“逆向工程",这是Davidson所指的。甲骨文对此表示反对,因为他们认为甲骨文将其知识产权置于危险之中。这至少有点愚蠢,因为使用许可协议禁止IP盗窃有点像使用严厉措辞的门垫来防止家庭入侵。那些试图克隆您的产品的人并不关心许可协议,而且通常不在您可以在任何情况下执行这些协议的司法管辖区。

— Cyber​​Anarchist(@ Cyb3rOps )2015年8月12日

该政策实际上仅影响合法客户。这种情况与视频游戏DRM相似,但效率甚至更高。

为什么客户要反编译这些可执行文件?一切都与安全有关。拥有对源代码的访问权限,您可以深入研究它来查找错误和潜在问题。通常,这是通过执行“静态代码分析"的软件完成的,该软件是对代码的自动读取,可以识别已知的错误以及可能导致错误的危险软件实践。虽然有一些工具可以直接分析可执行文件,但是对它进行反编译通常可以进行更深入的分析。这种静态分析是安全性交易的标准工具,并且大多数具有安全意识的公司都在内部使用此类软件来生成不太可能包含严重错误的代码。

Oracle针对此类问题的政策分析只是“不"。为什么?我会让戴维森解释一下。

“客户无法分析代码以查看是否存在能够防止扫描工具尖叫的攻击的控件(很可能是误报)[ …]现在,我要注意的是,我们不只是将扫描报告视为“证明那里存在,那里",部分原因是无论您是在进行静态分析还是动态分析,扫描报告都不能证明存在实际漏洞。 。 […]哦,我们要求客户/顾问销毁此类逆向工程的结果,并确认他们已这样做。"

换句话说,得出结果的工具并不能证明真正的错误–并且,由于Oracle在内部使用这些工具,因此客户没有必要自己运行它们。

最大的问题是,这些静态代码分析工具不仅仅用于带来错误注意。还应该将它们作为代码质量和安全性的目标。如果将Oracle的代码库转储到行业标准的静态分析工具中,并且吐出数百页的问题,那真是一个不好的信号。

当静态代码分析工具吐出时,正确的响应一个问题,不是看这个问题,而是说:“哦,不,那不会因为某某某物而引起错误。"正确的答案是解决该问题。通常,静态代码分析工具标记的东西通常是错误的做法,并且您确定给定问题是否实际导致错误的能力是容易犯错的。在成千上万的问题中,您会错过任何东西。最好不要一开始就在代码库中放这些东西。

Oculus首席技术官约翰·卡马克(John Carmack)在iD Software时就赞扬这些工具。 (请认真阅读整篇文章,这很有趣。)

“我们有一段时间,其中一个项目意外关闭了静态分析选项几个月,当我注意到并重新启用它后,在此期间引入了许多新错误。 […]这些表明正常的开发操作会不断产生此类错误,并且[静态代码分析]有效地使我们免受了很多错误的影响。"

总之,很可能有很多错误甲骨文的客户不一定要报告特定的错误-他们在问为什么甲骨文的编码实践如此糟糕,以至于他们的代码库充斥着成千上万的问题,这些问题是如此基础,以至于可以由自动化软件来挑选。

— Brad Neuberg(@bradneuberg),2015年8月15日

安全性贴标

那么,与安全相关的客户应该怎么做,而不是使用静态分析工具?幸运的是,戴维森(Davidson)的博客文章对此主题进行了非常详细的介绍。除了提倡一般的基本安全实践外,她还为那些关心所使用软件安全性的人们提供了具体建议。

“ [T]客户可以做很多事情,实际上,与供应商讨论他们的保证计划或检查产品的认证,这些产品带有通用管家认证或FIPS-140认证的“良好管家"印章(或“良好规范"印章)。大多数供应商-至少,我所知道的大多数大型供应商-现在都具有相当强大的保证程序(我们之所以知道,是因为我们都在会议上比较票据)。"

这真是令人恐惧来自Oracle这样大的组织的回应。计算机安全是一个快速发展的领域。总是会发现新的漏洞,将安全要求正规化为每隔几年更新一次的证书是荒谬的。安全性不是标贴。如果您相信一件重要的软件是在包装上加盖密封的基础上是安全的,那么您就是不负责任的愚蠢。

哎呀,静态分析工具的更新频率要比这些证书高得多–在某些情况下,每天都要消除所有可能仍然出现的问题,不足以使您对代码的安全性有足够的信心,因为大多数漏洞过于复杂,无法通过此类漏洞检测到自动化工具。

对自己的安全性有信心的唯一方法是将您的代码公开给他人,并要求黑客设法破坏它。大多数主要软件公司就是这样运作的:如果您发现他们的代码有问题,他们将不会因违反您的使用协议而屈服于您。他们会付钱给您。他们希望人们尽一切努力来破坏他们的软件。这是他们可以放心代码完全安全的唯一方法。

这些程序被称为“漏洞赏金"程序,它们是长期以来对企业级安全性的最佳保护。时间。碰巧的是,戴维森对此也有很强烈的看法。

“臭名昭著的赏金是新的男孩乐队(很好的人道文化,不是吗?)。许多公司都在尖叫,昏倒并向安全扔内衣。研究人员[…]在他们的代码中发现问题,并坚持认为这就是方法,请继续:如果您没有执行漏洞悬赏,那么您的代码就不安全。

嗯,我们发现我们自己有87%的安全漏洞,安全研究人员发现约3%,其余则由客户发现。 […]我不是在讨价还价,只是在严格的经济基础上,为什么我会花3%的钱投入大量资金。"

对于初学者,基于这些静态代码分析,如果您付钱给他们,结果可能会超过3%。但是我离题了。真正的意义在于:漏洞赏金不适合您,它们适合我们。如果您向内部安全专家花了相同的钱,您能否更有效地发现错误?是的,也许不是。但是,让我们把甲骨文扔掉,并假设他们可以做到。但是,他们也可以拿钱,存钱,然后什么也不做。如果由此产生的安全性低于标准,那么客户只能从现在起几年后才能在深层网络中神秘地看到他们的社会安全号。

— Schuyler St. Leger(@DocProfSky)8月11日,2015

Bug赏金之所以存在,一半是因为它们是识别错误的一种真正有效的方法,而另一半是因为它们是您无法伪造的一种安全形式。漏洞赏金可靠地告诉世界,发现代码中遗留的任何错误都比声明的赏金更昂贵。

为您方便起见,错误赏金并不存在,Oracle,因为我们不存在,相信您。

我们也不应该!许多大型公司都清楚地表明,许多大公司允许安全性被抛在一边。您是全球第二大软件制造商。要求我们只说您的产品是安全的,这是荒谬的。

戴维森做对的事情

对戴维森而言,公平的是,有一些因素在上下文中是合理的。可能,许多客户确实进行了对Oracle代码的野心勃勃的审核,而没有花时间从其系统中消除更多平凡的安全性问题。

“高级持久威胁" –熟练的黑客组织试图访问特定组织来窃取数据–确实令人恐惧,但从数量上看,它们比拥有自动化工具的数百万机会主义业余黑客要危险得多。在没有采取基本安全措施的情况下对商业软件进行这类静态分析,就像在没有锁前门的情况下安装应急室一样。

一次又一次地进行相同的自动化分析可能确实令人沮丧和无益。

但是,从总体上看,本文揭示了一些有关系统安全性以及开发人员之间关系的严重过时的想法。和客户。我很欣赏Davidson的工作令人沮丧,但是用户竭力验证自己使用的软件的安全性并不是问题。 Ira Winkler在这里担任安全意识总裁一职:

“ Oracle是一家非常庞大的公司,其产品被广泛分发并用于关键应用程序。期。他们有责任使自己的软件尽可能强大[...]可能会有很多误报和相关成本,但这是[他们出售]许多用户很多的软件的一个因素。这是做生意的成本。我确定所有软件公司都有相同的误报报告。我听不到Microsoft等人的声音。

如果Oracle不想继续收到由静态安全工具发现的成千上万个问题,也许他们应该修复这数千个问题。人们一遍又一遍地提交相同的非bug,也许他们应该有一个适当的bug赏金计划,该计划应具有处理重复提交的非问题机制。 Oracle的客户大声疾呼要求更高的安全性标准,并因此而羞辱他们。不是正确的答案。

即使Oracle已经撤职并普遍拒绝了该职位,但它仍然这篇文章完全揭示了Oracle内部深深误入歧途的安全文化。 Oracle的安全性方法优先考虑保护其自身的知识产权,而不是其客户的安全性和安心–如果您将重要信息委托给Oracle软件,那应该会吓倒您。

你怎么看? 您是否担心Oracle的安全理念?您认为戴维森受到的待遇太苛刻了吗?在评论中让我们知道!

标签: 在线安全 软件许可