五个需要注意的DevSecOps编码问题在过去的软件开发过程中,安全总是在开发的最后阶段进行——尽管此时发现的漏洞实际上可以在更早的阶段修复。如果他们想在当今复杂的开发环境中进一步加速,同时确保软件安全,开发人员需要将安全性左移,更早地将安全性融入开发周期。但是将安全性在开发周期中左移并不容易,开发人员面临着很多困难。以下是五个最常见的问题——所有这些问题都可以通过静态分析来解决。内存错误内存读取错误会泄露敏感信息,从而对机密性和完整性构成潜在威胁,而内存写入错误会通过改变工作流程来影响机密性、完整性和可用性。比较常见的内存问题是缓冲区溢出、缓冲区不足和释放重用。这些问题很难被发现,即使是在一些经过测试并被认为是安全的代码中,所以即使是最有经验的程序员也不可避免地会遇到这些问题。虽然启用了一些代码标准来尝试减少内存错误,但显然没有那么有效。因此,需要进行深度静态分析、数据流分析、符号执行等,以便在开发周期的早期检测内存错误。编程错误这类错误主要是由于C/C++的不正确使用引起的,例如未初始化的变量、重复释放指针、有症状和无症状数据之间的间接变化等。一些编程错误被利用,即使它们使程序崩溃,也可能不会在功能和回归测试中表现出来。但是,它们确实会在已部署的系统中引起严重的问题。静态分析可以识别编程语义中的代码错误和歧义。有风险的函数调用有些API函数被认为是有风险和不安全的。比如C/C++中的gets()函数,很容易造成目标地址的缓冲区溢出问题。其他函数调用也可能因某些动作而造成危害。这种有风险的函数调用很容易在静态分析中通过风险函数列表来识别。密码术的滥用在保证数据机密性的环境中,密码术尤为重要。但是,很少有开发人员是密码学专家;更糟糕的是,滥用C语言库本身的密码函数会导致安全问题,例如使用DES和MD5等弱算法进行加密,或者使用硬编码密钥和哈希盐数据。密码学的滥用会影响机密性和完整性,但它们也可以通过静态分析轻松识别。污染数据污染数据是指数据在进入系统时未经验证,有害内容被去除,无法保证数据值在合法范围内。污染数据是开发人员面临的最大挑战之一,它还会影响机密性和完整性。手动检查很难发现数据注入问题。如果要解决污染数据的问题,则需要对以任何形式(用户、设备、套接字等)进入系统的数据进行从源到目的地的跟踪。数据在被API调用、插入数据结构或输入任何编程逻辑之前需要进行验证。否则,可能会出现数据注入的攻击威胁。可以在工作流中计算静态分析,提供简明易懂的警报,使程序员远离这些危险情况。静态分析检测漏洞静态分析或静态分析安全测试(SAST)检查源程序的代码以检测可能的安全问题,例如上述五个代码问题。由于SAST可用于开发人员的CI/CD工作流,因此它不会减慢敏捷开发过程。事实上,因为它可以在开发人员编写代码时发现错误,从而降低发现问题的成本,并在应用程序上线之前修复它们——甚至在测试之前,它最终加快了软件开发。因此,SAST在提高代码安全性方面发挥着关键作用,需要成为DevSecOps安全左移流程的一部分。评论在安全向左转移的过程中,实时代码分析、测试和漏洞发现是一大重点。本文提到了SAST在DevSecOps中可以解决的一些代码问题,但SAST并不是DevSecOps过程中的唯一工具。还需要结合IAST、软件供应链管理等工具完善DevSecOps工具链,逐步加大自身的软件开发力度。循环安全。
