为什么开发人员不为安全有“拼写检查”?
尽管有关成功的网络攻击的所有新闻报道,开发人员仍在编写充满安全漏洞的代码。
当然,没有人是完美的。我们都犯错误,随着软件项目越来越复杂,它很容易混合潜在的问题。
但这并不是解释为什么这么多的软件充满了最基本的错误。
根据本月由Veracode发布的一份报告,所有内部开发的应用程序中的61%都未在其首次通行证时遵守OWASP前10个列表的基本测试。和商业开发的软件甚至更糟糕,失败率为75%。
这些是基本的,众所周知的问题,如SQL注入和跨站点脚本。
或采取硬编码密码。谁仍然这样做?根据Veracode的说法,他们测试的所有应用中的35%。
获得您的所有日常安全新闻报名参加CSO的安全通讯消除这些基本漏洞将使软件更加安全。而在这个过程中,他们“重新抓住了,他们更容易解决。
COO在安全供应商Fasoo的COO表示,今天的集成开发环境已经捕获了遗漏的语法错误,如丢失的分号。
“如果你是一个函数你使用,它会显示参数,”他添加了。“但它赢了”T告诉你是否有一个SQL注射或跨站点脚本或类似愚蠢的东西。“
如果软件开发人员有类似咒语检查者,而不是捕捉错字和简单的语法错误,它不会很好,它捕获了基本的安全问题?
开发人员能够立即解决它们,并在此过程中学会在此过程中编写更安全的代码。
传统的方法是在写入之后测试漏洞软件。但是,今天测试正在发展到开发过程中的早期,当开发人员实际编写代码时,甚至更早地移动到开发过程中。
“我们真的需要在我们的软件开发阶段实施这种类型的应用程序安全性,”研究公司企业战略组分析师Doug Cahill说。“有一些组织可以将这些类型的安全最佳实践集成到他们的软件方法中,但不够。一部分只是缺乏意识,一部分是对自动化的需求。如果我们可以达到轻松的按钮,我们中的更多人会这样做。“
根据Veracode,有一些迹象表明在这种方向上移动。
虽然40%的应用程序只会扫描一次,但9%的应用程序得到了更频繁的扫描,这表明这些公司正在运行某种连续测试程序,其中一些应用程序在开发人员沙箱每天测试多达六次。
根据该报告,每个应用程序的漏洞数量可以通过这种方法显着提高。当应用扫描添加到开发过程时,缺陷率下降了46%。当添加电子学习功能时,缺陷的缺陷率降低了六倍的提高。
企业aren“t只是看着他们的内部开发流程,但也开始要求他们的软件供应商提高安全。
“它正在发生越来越多,因为供应链负责安全事件和违规行为,”卡希尔说。“以及他们问的一件事是,您是否可以进行软件扫描和安全分析?”
他说,该工具也越来越好,提供了许多供应商提供软件扫描和编排工具,以便公司可以将安全检查集成到开发过程中。
“但它应该是语境,”他补充道。“如果你刚刚得到”你做了一个编码错误,那就“不是特别有帮助。但如果你得到一个顾问,因为你的构思了代码的方式,它可以通过SQL注入利用,这里有一些方法来调整代码......我们可以提高我们的安全姿势。“
避免警戒疲劳,他补充说,或者有“Clippy”的安全 - 烦人和无益。
“这些类型的警报需要是规范性的,协商和可行的,”卡希尔说。
一位申请安全供应商团队,首先要在1999年查看安全“拼写检查”,但创造了另一个“Clippy”是一个严重关注的问题。
“Clippy普遍讨厌,”John Steven,Cigital的内部CTO。“它被讨厌,因为它在你的脸上,你在打字,它分散了你的注意力,它的建议总是愚蠢。这是一直告诉你错误的事情。“
对于应用程序安全性而言,这将是太容易的。
例如,他说,采取跨站点脚本。
“你写作的每一行代码可能会易于交叉边脚本,”他说。
但是,开发人员现在更愿意考虑帮助他们编写代码的工具。此外,新的早期软件安全工具不被用来找到所有可能的漏洞,而是用作培训工具。
例如,例如,开发人员正在考虑链接到不安全的开源库。Cigital提供了一种可以立即捕获该问题的工具,建议更好的库,甚至会自动转换现有代码。
“我们想找到扼流圈,以帮助他们做出良好的决定,”他说,“并削减了越来越多的后期机会来创造问题。”
事实上,安全教育方面是早期申请测试的最高益处之一。
根据今年早些时候发布的SANS报告,缺乏应用安全技能是提高软件安全的最大挑战,提前提供资金和管理层。
内置安全教育
CheckMarx是一些寻求解决这个问题的供应商之一。
“我们采取源代码,并在10或100行代码上进行分析,允许开发人员在早期阶段看到漏洞,”CheckMarx产品营销总监Amit Ashbel说。“然后我们将它们介绍一下,有关如何修复代码的五到10分钟。我们向他们展示如何破解代码,他们可以实时尝试。然后他们了解哪些漏洞可能会暴露于他们的代码。“
结果,当开发人员最需要它时,该学习是完全交付的。
“他们不必远离办公桌,他们不必花太多时间坐在房间里听,听讲座,”他说。“我认为这是做法律编码教育的方式。”
关于产品是否更乐于助人或更烦人的问题,他指向Gartner Peerinsights的页面,评论非常积极。
“我最喜欢的是我们的工程部门内的采用使用和影响的水平,”在一家大型制造公司写了一个CISO。
“我们开发人员的反馈非常积极,这使我们通过代码扫描作为常规活动,”一家大型金融公司的技术专家写道。
早期测试可能会错过大问题
在编写代码时发生的安全测试是一种静态分析。
通过静态分析,工具简单地查看代码所写的方式,而动态分析实际上遵循逻辑流。这意味着静态分析可能会错过许多问题。
“该工具只能防止具有它所知的某些模式的错误,”Immunio的Mike Milner,CTO Mike Milner和CTO表示,它提供了运行时应用安全检测。
同时,随着更多公司迁移到敏捷开发,动态分析工具正在更快地识别问题。
“你每天写几次并部署几次,”他说,“所以它成为一个开发工具。”
当公司首次开始从传统的瀑布发展转变为敏捷时,蔓延的安全性往往是缺陷的,即蔓延的首席创新官员Mike Kail表示,只要开发人员向Github或Bitbucket,使用Veracode或其他商业,提供了一项扫描代码的服务开源漏洞扫描仪。
他说:“目前,公司正在测试每周一次的SQL注射或跨场地脚本,或者每一季度。“我们需要使这一持续的过程是因为黑客不断攻击公司。”
拥有安全测试工具作为软件开发过程的一部分是有意义的 - 但在斯科特克的营销副总裁Brian娃娃表示,在写作阶段,这使得在建造过程中寻找开源安全漏洞的工具,反而。
“逻辑上讲,中断您的创作过程以获得从这些测试的反馈来获得反馈的耗时和痛苦,”他说。
他补充说,它几乎不可能得到良好的结果。
“直到你建立软件产品并了解组件之间的关系,你就是”重新猜测“,”他说。
他解释说,它是静态和动态分析之间的差异。
例如,如果开发人员调用特定的开源库,则在包管理器解析所有依赖项和依赖项的依赖项中,锁定在构建之前,锁定的库的确切版本
“我们可以获得更好的见解,并可以确切地告诉您软件中的位置,您将您”重新链接到易受攻击的方法或弱势库“,”他说。“你每次键入一个单词时都不会打算建立。它只是效率。“
但是,在商业阶段,在写作阶段检查问题的工具并不是为了捕获所有潜在的漏洞,CAHILL,ESG分析师表示。
“这只是第一步,”他说。“安全中没有银子弹,但你至少可以减少沿途的错误和攻击表面区域。”
他说,最佳方法是在其最佳工作的点使用各种安全工具。
“静态和动态分析应该在软件生命周期的适当阶段发生,”他说。“每个环境都应该扫描。如果您的图层,可以大大减少生产中的安全攻击面。“
这个故事,“为什么Doint开发人员有一个”拼写检查“的安全性”?“最初由CSO出版。