如何理解软件和数据完整性故障类漏洞
在程序开发过程中,难免会使用到三方库、插件、模块等,对应的文件很多可能是存储在公共平台上的,例如github、gitlab、gitee等,所以使用这些资源的时候校验它们的完整性尤为重要。
当程序中使用用户提交的数据或者从三方获取的数据时,如果缺少对数据完整性的校验,也很容易出现安全问题。
安装或更新软件,没有校验软件的完整性或签名,这种情况也是很容易出现安全问题的。
当程序中整合了三方库、插件、模块等资源时、使用关键数据时、在安装或更新软件时,因为没有校验完整性而导致的安全漏洞统称为软件和数据完整性故障类漏洞(Software and Data Integrity Failures)。
现在大多数公司采用的软件开发方式大都是敏捷式的,主要特点是快速开发和快速部署。这种情况下尤其要注意对核心组件的完整性校验,如果没有或忘记做完整性校验,攻击者就很容易注入恶意代码和数据。
避免出现软件和数据完整性故障类漏洞产生需要注意的点
使用数字签名或类似的机制来校验软件或数据的来源和完整性。
确保依赖库(如npm、Maven、go modules)使用的是可信的仓库。如果是私有的依赖库,确保托管在内网搭建的仓库。
确保使用可靠的工具来检查使用的组件不包含已知漏洞。
对代码和配置更改进行审计。
CI/CD流程具备访问控制功能,确保构建和部署过程中代码的完整性。
不反序列化不可信的、不完整的和格式错误的数据。
严格校验用户提交的数据或者从三方获取的数据。