译者
李睿
软件架构师Bob和安全开发工程师Alice是一家软件开发初创公司的成员。以下是他们之间关于开发一套新的微服务的对话。
Bob说:“你听到通知了吗?客户交易已经敲定。我们可以开始为他们在云平台上使用的金融服务开发分析应用程序。”
Alice:“太棒了!那么应该使用哪种编程语言构建应用程序?”
Bob:“还没有确定。它可以基于任何一种软件编程语言,但更重要的是它必须是安全的。我们所有的系统及其应用程序都应该打上最新的安全补丁,并且软件版本应该始终以正确的配置运行。
我会通过电子邮件给你发送详细的业务用例和技术要求。简而言之,它将是持续集成和交付的快速发展。那么你建议我们使用什么工具进行端到端安全扫描?”
Alice说:“当然,我会向你发送一份工具清单,这些工具将使我们能够在生产部署之前检测和修复漏洞。我认为需要有一种有前途的方法来扫描和消除代码或应用程序可能带来的网络安全风险。”
Bob说:“太好了,我们更喜欢采用开源扫描工具,但如果有的话,你可以列出对流行的第三方专有工具的见解。”
Alice开始探索关于代码扫描主题的各种现有资源。根据Bob提供的需求规范,她考虑了所有关键领域,例如代码的静态分析、面向互联网的用户界面(UI)和API端点的动态分析以及依赖包的漏洞扫描。
而几天过去了,她仍然感到困惑,难以做出决定,因为得到的大部分信息都是基于用户角色和软件可用性规范而不是以代码为中心的,虽然这从开发人员角度来看是有用的,并且可以适应需求。
以下将深入了解各个安全扫描工具内容(这足以帮助Alice做出决定)。
1.类别
以下是各种安全扫描工具的类别:
(1)SAST(静态应用程序安全测试),又名静态扫描
用于分析应用程序源代码以识别漏洞来源的白盒测试过程;通常在应用程序开发生命周期的编码/质量保证阶段实施,从而能够早期识别和缓解代码中的漏洞。
确保应用程序从设计阶段就以强大且安全的方式构建,并在投入生产之前符合安全编码标准。
提供SAST的一些工具包括SonarQube、AppScan、IBMCodeRiskAnalyzer、FortifyStaticCodeAnalyzer、WhiteSource等。
使用SAST工具之前,常用的评估标准是:
支持所需的编程语言。
误码率。
漏洞检测精度。
详细程度。
代码安全分析结果的清晰性。
(2)SCA(软件组合分析),又名依赖项扫描
跟踪代码库中的开源组件以检测漏洞、潜在的安全和许可证合规性威胁,使团队能够通过避免与IP、声誉和费用方面的冲突及早进行补救。
当静态扫描检测内部开发的专有源代码中的漏洞时,软件组合分析(SCA)执行依赖扫描以识别开源依赖中的漏洞、发现已弃用的依赖项,并评估数字签名。它几乎没有误报,扫描速度非常快。不需要访问源代码,可以在软件开发生命周期(SDLC)的任何阶段进行集成,甚至在后期部署。
一些提供SCA/依赖扫描的工具是WhiteSourceSoftware、GitLab、GitHub、Snyk和JfrogXray。
使用SCA工具之前常用的评估标准是:
开源组件及其漏洞的知识库。
支持各种编程语言。
扫描速度。
易于使用报告的分析结果。
开发生命周期各个阶段的集成能力。
(3)DAST(动态应用程序安全测试),又名动态扫描/Web应用程序扫描
这是一个黑盒测试过程,用于通过渗透测试识别应用程序Web端点的漏洞,并且无法访问其源代码,通常在构建应用程序的质量保证(QA)和预生产阶段执行。它探索应用程序运行状态,并检查其对由该工具进行的模拟攻击的响应,这将有助于确定应用程序是否易受攻击,以及是否可能面临真正的恶意攻击的风险。
适合检测身份验证和配置问题;独立于应用程序使用的语言和平台。
一些提供动态扫描的工具是OWASPZAP、AppScan、Netsparker和Detectify。
使用DAST工具之前常用的评估标准是:
支持API测试。
认证扫描。
DevSecOps(作为CI/CD管道的一部分完全自动化运行的能力)。
(4)IAST(交互式应用安全测试)
IAST是一种结合了SAST和DAST优点的混合测试方法。IAST通过在运行时使用代理和传感器检测应用程序来分析漏洞。与DAST不同,IAST可以查看整个代码库,并可以指向代码的确切易受攻击位置。此外,与SAST不同,它能够捕获错误配置等运行时问题,并且误报率最低。
提供IAST的一些工具是Veracode和Netsparker。
使用IAST工具之前常用的评估标准是:
支持的技术。
易于报告和分析的详细程度。
执行速度。
准确度极低/无误报的结果。
(5)数据库安全扫描
通过检查数据库的内部和外部配置(如身份验证、机密性、完整性和可用性)来识别数据库应用程序中的漏洞的过程。
其中一些工具是Scuba、Zenmap和SQLRecon。
2.工具
(1)WhiteSourceScan
WhiteSource具有SAST和SCA功能来执行代码的安全扫描。SAST能力可用于检测源代码中的漏洞,SCA可用于检测开源依赖项中的漏洞。WhiteSource帮助开发人员修复漏洞。它与Jenkins、Bamboo、AzureDevOps、GIT和TFS集成。
(2)SonarQube
SonarQube是一个用于检查代码质量的开源平台,并与GitHub、BitBucket、GitLab、Maven、Gradle、Travis、Jenkins、Bamboo和AzureDevOps集成。SonarQube可以测量关键指标,包括错误、代码缺陷、安全漏洞和重复代码。SonarQube支持创建SonarQube插件,这有助于自定义代码规则。
(3)IBMCRA
CodeRiskAnalyzer获取所有基于Git的代码、配置和部署工件,构建依赖关系图,并运行合规性控制检查管道。它会生成一个物料清单(BOM)文件,其中列出了所有第三方操作系统包和应用程序包的依赖关系。它会发现物料清单(BOM)文件中列出的包中的漏洞。CodeRiskAnalyzer仅支持IBMCloudContinuousDelivery托管的github.