随着软件成为现代商业的支柱,网络攻击已成为无处不在的威胁,应用程序安全成为确保业务连续性的必要条件。本文研究了四个常见的软件安全开发问题以及如何解决它们。管理和维护安全软件的过程可能会给寻求尽快交付功能的开发人员带来意想不到的障碍。研究表明,59%的公司现在每天多次、每天一次或每隔几天部署一次代码。然而,随着软件成为现代企业的支柱,网络攻击已成为一种无处不在的威胁,使得应用程序安全成为确保业务连续性的必要条件。左移运动——在开发过程的早期进行安全测试和修复缺陷——增加了开发人员在应用程序安全方面发挥作用的需求,但受过安全培训的开发人员仍然存在很大的技能差距。有兴趣提高安全知识的开发人员可以从了解一些常见的DevSec问题开始。挑战#1:修复错误的时间缓慢开发人员和安全团队面临的最常见挑战之一是安全债务——代码中长期存在的安全错误,例如旧的信用卡余额,现在需要比以前更长的时间来修复被介绍的要贵得多。为避免增加安全债务,开发人员可以实施自动扫描和测试。自动化程度越高越好:在一份年度软件安全状况(SoSS)报告中,我们发现将动态分析(DAST)与静态分析(SAST)结合使用的组织修复50%的安全漏洞的时间平均缩短了24.5天。另一种更快地发现和修复新缺陷的方法是更频繁地扫描。更频繁的扫描使该组织能够在22.5天内达到一半,并且通过API运行SAST扫描将修复50%的缺陷的时间缩短了17.5天。研究还表明,稳定的扫描节奏可以帮助您的团队看到缺陷类型比率的有意义变化,并随着时间的推移减少安全债务。将安全测试视为一场马拉松,而不是短跑:在赛事开始前每周仅跑50英里并不能为您做好马拉松比赛的准备。挑战二:常见代码安全漏洞的引入了解哪些缺陷对您的应用程序构成最大风险以及它们是如何引入的,对于防止这些常见缺陷可能导致的破坏性网络攻击至关重要。我们的SoSS报告发现,信息泄露(65.9%)、CRLF注入(65.4%)、密码问题(63.7%)和代码质量(60.4%)是应用程序中最常见的缺陷。为了解决这些常见的陷阱,开发人员应该考虑以下几点:对于信息泄露,依靠安全编码最佳实践并在编写代码时实施安全测试程序。为防止CRLF注入,不要信任用户输入,使用适当的验证和编码来清理用户提供的数据,并确保输出在HTTP标头中正确编码。可以通过良好的安全编码实践来防止密码漏洞。此外,大多数主要语言天生就支持良好的密码实践,对不正确实现的担忧通常只会在个案基础上出现。通过使用一致的编码模式、在您的SDLC中自动进行安全测试并通过有效培训保持最新状态,防止代码质量不佳的问题。值得注意的是,这四个缺陷年复一年地排在报告的前10位,表明开发人员意识和培训存在差距。事实上,对开发人员的安全培训可能是最大的挑战。不仅大学没有定期教授安全编码,而且在职培训也同样难以获得,因为大多数应用程序安全是安全团队的责任。为了使开发人员能够预防、发现和修复代码中的缺陷,组织需要提供可操作的、真实世界的培训,开发人员可以立即应用这些培训来巩固他们所学的知识,并使其成为日常工作的一部分。挑战#3:依赖开源库,但只扫描内部编写的应用程序代码开源代码几乎无处不在。当您考虑到许多开源库不是由开发人员直接选择时——应用程序中46.6%的不安全开源库是可传递的,由正在使用的另一个库引入应用程序——很容易看出开源如何扩展攻击面在应用程序中。事实上,我们的研究发现71%的应用程序在初始扫描时在开源库中存在缺陷。集成软件成分分析(SCA)等扫描工具有助于更准确地检测开源漏洞。这个过程可以有效地缓解,因为74%的开源缺陷可以通过补丁、修订或主要/次要版本更新来修复。使用正确的工具来掌握您的代码是降低风险和确保您可以自信地使用开源库的关键。挑战四:代码中存在大量高风险和非常严重的缺陷无论您喜欢哪种软件语言,了解对它们影响最大的缺陷将有助于您在错误成为更大的问题之前预防错误。我们的数据表明,某些语言比其他语言具有更多的高风险缺陷,这意味着应该仔细设计和测试用特定语言编写的代码。一些示例包括:C++应用程序:将近60%的应用程序具有高和非常高的严重性缺陷;常见缺陷包括错误处理、缓冲区管理错误、数字错误和目录遍历缺陷。PHP应用程序:52.6%的PHP应用程序存在高和非常高严重性缺陷;最常见的缺陷包括跨站点脚本(XSS)、加密问题、目录遍历错误和信息泄露漏洞。Java应用程序:Java以CRLF注入缺陷、代码质量问题、信息泄露和密码学问题领先;97%的Java应用程序是第三方代码,并带有更大的看不见的风险。通过检查各种通用语言的缺陷频率趋势,开发人员可以更好地了解他们在编码时面临的日常风险,并可以利用这些知识在这些缺陷成为问题之前解决它们。实施安全编码实践并利用实践培训来增加专业知识将有助于确保应用程序安全与现代开发需求保持同步。当开发人员不仅能够发现而且能够修复代码中的缺陷时,他们将在成为更精通安全的开发人员的道路上顺利前进。
