【应用安全】无论编程语言如何,都有4种保护代码的方法
没有必要过度思考哪种概念是最安全的编程语言。实际上没有一个,开发人员应该专注于如何用他们选择的语言编写最安全的代码。
这是软件安全公司WhiteSource的知识和研究小组负责人Tsaela Pinto的结论,该公司最近发布了一份关于不同语言的安全漏洞的报告。
“没有人会根据安全性或基于我们的调查结果选择或应该选择一种语言。您将根据自己的软件需求进行选择。在开源安全方面,您需要了解独特的挑战。每种语言。“
-Tsaela Pinto
在WhiteSource的调查结果中:C编程语言占过去十年公开披露的所有开源漏洞的47%,2018年漏洞中最大的漏洞发生在Linux操作系统的代码中,即网络协议扫描程序Wireshark,和ImageMagick图形套件。
这些数据可能会导致一些人最终避免使用C或Linux进行未来开发。但平托说,这样的决定将是轻率的。 “项目越受欢迎,报告的漏洞就越多。由于你拥有更大的社区,更多的人使用这些代码,他们可以发现更多的漏洞。” (无论您使用何种语言来创建应用程序,您仍然需要一个顶级的应用程序安全测试工具来帮助根除漏洞)。
底线:不要惊慌。无论您丢失什么语言,以下是提高代码安全性的四种方法。
1.语言选择基本上是安全中立的
开发人员应根据项目及其公司的需求选择编程语言和框架。虽然一些编程语言具有面向安全的功能,例如沙箱,垃圾收集和类型转换 - 所有这些都可以在Java中找到,例如,知识渊博的编码人员可以在大多数现代语言中创建安全代码。
生成最安全代码的最佳方法是使用建议安全模式的环境,并通过环境中的通知加强安全最佳实践,Sonatype副总裁兼DevOps倡导者Derek Weeks表示。
“如果你可以在他们构建应用程序的环境中获得开发人员所需的安全信息,那么这有助于他们采用安全的编码实践。当我使用Word时,我不需要成为拼写专家。同样原因是,每个开发人员都不应该成为安全专家。“
-Derek Weeks
2.教育自己安全编码
每种编程语言都有其变幻莫测和缺陷,经验丰富的程序员应该知道要避免的一般设计模式,以及产生漏洞的功能。
在其研究中,WhiteSource发现在Common Weakness Enumeration(CWE)框架下识别为CWE-119的缓冲区错误是用C和C ++创建的代码的最大漏洞。
跨站点脚本CWE-79是用PHP和Ruby编写的Web应用程序最常见的漏洞类,而Python程序最常遇到输入验证问题CWE-20。
WhiteSource营销副总裁Maya Rotenberg表示,意识是关键。
“我们看到的是每种语言都存在不同的挑战。因此,开发人员需要了解所选语言的优缺点,以便他们了解所面临的挑战。”
-Maya Rotenberg
但是语言之间存在差异。例如,JavaScript开发人员通常不会为标准软件漏洞标识符(称为公共漏洞枚举(CVE))分配漏洞。事实上,30%的JavaScript漏洞没有CVE,因此没有出现在国家漏洞数据库中,这是美国政府的软件漏洞集合。
3.使用可用的工具
当集成到开发生命周期中时,代码扫描工具可以帮助开发人员捕获由于不熟悉所选编程语言的弱点而导致的漏洞。
在其2018年的软件安全状态报告中,Veracode发现,增加漏洞扫描的数量会导致漏洞被更快地关闭。该公司发现,遵循DevSecOps节奏并进行每日扫描的公司 - 每年超过300次 - 产生了最重大的影响。
即使免费工具也可以提供帮工具随时可用于扫描GitHub上的代码,以确定代码中包含的任何开源软件包是否存在漏洞。
Sonatype's Weeks表示,定期更新代码包也有助于保护最终的软件产品。
“如果您使用最新的组件,那些已知漏洞较少,因此使用最新版本非常有意义。您可以采取非常具体的免费操作来改善您的安全卫生。”
-Derek Weeks
4.自动化使安全性变得简单
最后,开发人员应该自动化他们的流程,以便更容易采用安全最佳实践。目标是促使开发人员在自然开发流程中修复漏洞,而不是仅在流程结束时进行安全扫描。
在其2018年的软件供应链状态报告中,Sonatype发现,最成熟的DevOps从业者将自动化投资增加了15%,57%的公司在整个开发过程中进行自动化应用程序安全扫描。
WhiteSource的Pinto表示,公司需要帮助他们的开发人员加快编码软件的过程。她说,除自动扫描外,公司还应该使用问题跟踪系统。
“你可以做的最糟糕的事情是让你的程序员使用Jira门票。如果我收到安全警报,我也应该得到一个修复,我的系统应该优先考虑它们。”
-Tsaela Pinto
没有顶级语言
十多年来,程序员和开发人员一直在问这个看似简单的问题:哪种编程语言能够产生最安全的代码?完美的编程语言既功能丰富又优雅,可生成高效且安全的代码。
迄今为止,各种分析未能确定完美的语言。不同的安全公司提出了不同的语言安全指标。例如,2010年,网络应用安全公司WhiteHat Security研究了使用不同框架构建的网站,并用不同语言编写,以尝试确定哪种网络编程语言最安全。
WhiteHat专注于几个不同的指标,包括每个输入的漏洞数量,至少有一个漏洞的网站数量,以及严重未修补的漏洞数量。该公司从近1,700个企业网站评估中收集数据,包括使用Microsoft的ASP Classic和.NET框架,Adobe的Cold Fusion,Apache Struts,Java Server Pages,PHP和Perl构建的网站。
最后,公司无法明确指出平台或语言是最安全的。
确定最合适的编程语言安全度量标准已证明是困难的。在其2018年的软件安全状态报告中,Veracode测量了开发人员为每种编程语言修补代码所花费的时间。用Python编写的应用程序仅占Veracode测试程序的1%,其缺陷修复速度最快。 Android和JavaScript分别是第二和第三快修补。
另一方面,用PHP编写的应用程序具有开放时间最长的漏洞。用iOS和Java编写的程序分别是第二和第三缓慢修补的代码库。
这就是说安全性完美的开源编程语言与发现尼斯湖怪物或独角兽一样难以捉摸。相反,花点时间,按照上面的指导原则,用你能做的任何语言选择最好的语言。
原文:https://techbeacon.com/security/4-ways-secure-your-code-regardless-programming-language
本文:
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 38 次浏览