你需要知道的5个DevSecOps编码缺陷

将静态分析集成到开发周期中可以防止编码错误并更快地交付安全软件。

安全从业人员习惯于在软件开发过程结束时进行干预,以识别安全漏洞,而其中的许多漏洞可以通过早期干预来避免。为了解决这个问题,已经在压力之下以更快速度和更低成本交付复杂软件的开发人员,在开发周期的早期被招募到“左移”运动下以实现安全性。

想要了解开发人员在满足新的安全需求方面所面临的障碍,请考虑以下五种最常见的编码缺陷以及如何解决它们:

1、内存错误

读取内存的错误可能会导致泄露敏感信息从而影响机密性和完整性,而内存写入错误则有可能破坏执行流程,这可能会影响安全三元组的所有三个组成部分:机密性、完整性和可用性。常见的错误示例包括缓冲区溢出/欠载和释放后使用(UAF)。即使是最熟练的程序员也会在不经意间产生这些难以检测的潜在缺陷,甚至在经过良好测试、安全认证的代码中也能够发现这样的缺陷。尽管编码标准经常被用来减少内存错误,但它们是不够的。深入的静态分析、数据流分析和符号执行对于在开发周期的早期检测内存错误是绝对必需的。

2、编程错误

此类错误主要是由于对C / C ++的错误使用而引起的,例如未初始化的变量,指针的双重释放以及有符号和无符号变量之间的隐式转换。一些编码错误在功能测试和回归测试期间可能不会表现出来,即使它们会导致程序状态的损坏。然而,它们可能会导致已部署的系统出现严重问题。静态分析可以识别编程语言语义中的编码错误和误区。

3、危险的函数调用

某些API函数被认为是潜在有害和不安全的。C / C ++中的gets()函数就是一个很好的例子,因为它很容易产生目标缓冲区溢出的情况,从而影响完整性。其他函数调用可能有特定于实现的行为,从而使其变得很危险。使用可以搜索危险函数列表的静态分析可以轻松识别危险的函数调用。

4、滥用密码技术

密码函数是使数据处于移动或静止状态时保持数据机密性的重要部分。但是,很少有开发人员是密码学的专家,滥用C库中的加密函数会导致安全问题,尤其是使用数据加密标准(DES)和MD5等弱算法或者滥用密码。其他例子包括使用硬编码密钥或散列的salt数据。密码术的滥用会影响机密性和完整性。幸运的是,使用静态分析很容易识别这些问题。

5、数据污染问题

数据污染是开发人员面临的最具挑战性的问题之一,它也可能影响完整性和机密性。从本质上讲,受污染的数据是指流入系统的数据未经过验证以消除恶意元素并确保其在预期值范围内的情况。通过事后的人工检查来检测数据注入的漏洞是非常困难的。

为了检测数据污染的问题,通过任何形式的输入(例如用户,设备或套接字)流入到系统的数据需要从其来源(进入软件的位置)追踪到接收器(使用的位置)。在将这些数据用于API调用,访问数据结构或编程逻辑的任何部分之前,都需要对其进行验证。否则,它可能导致数据注入漏洞,如格式字符串注入,LDAP注入或SQL注入。静态分析可以通过这些流进行计算,并提供易于理解的警告,以帮助程序员预防危险情况。要做到这一点,静态分析必须执行数据流分析和抽象的执行以评估可能的执行流。

 

作者 - Walter Capitani

GrammaTech技术总监Walter Capitani是嵌入式和企业软件安全领域的权威专家。他领导了全球产品开发团队,致力于安全关键和安全软件、SaaS应用性能、广播电视和电影院的文件分发应用,以及3D视频压缩和传输技术等相关领域的技术研发。

更多信息请访问:http://www.softtest.cn/

posted @ 2021-01-21 16:55  旋极智能  阅读(105)  评论(0编辑  收藏  举报