文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何保证应用程序的安全性

2024-12-01 20:43

关注

审校 | 孙淑娟

软件架构师Bob和安全开发工程师Alice是一家软件开发初创公司的成员。以下是他们之间关于开发一套新的微服务的对话。  

Bob说:“你听到通知了吗?客户交易已经敲定。我们可以开始为他们在云平台上使用的金融服务开发分析应用程序。”    

Alice:“太棒了!那么应该使用哪种编程语言构建应用程序?”  

Bob:“还没有确定。它可以基于任何一种软件编程语言,但更重要的是它必须是安全的。我们所有的系统及其应用程序都应该打上最新的安全补丁,并且软件版本应该始终以正确的配置运行。  

我会通过电子邮件给你发送详细的业务用例和技术要求。简而言之,它将是持续集成和交付的快速发展。那么你建议我们使用什么工具进行端到端安全扫描?”

Alice说:“当然,我会向你发送一份工具清单,这些工具将使我们能够在生产部署之前检测和修复漏洞。我认为需要有一种有前途的方法来扫描和消除代码或应用程序可能带来的网络安全风险。”  

Bob说:“太好了,我们更喜欢采用开源扫描工具,但如果有的话,你可以列出对流行的第三方专有工具的见解。”  

Alice开始探索关于代码扫描主题的各种现有资源。根据Bob提供的需求规范,她考虑了所有关键领域,例如代码的静态分析、面向互联网的用户界面(UI)和API端点的动态分析以及依赖包的漏洞扫描。  

而几天过去了,她仍然感到困惑,难以做出决定,因为得到的大部分信息都是基于用户角色和软件可用性规范而不是以代码为中心的,虽然这从开发人员角度来看是有用的,并且可以适应需求。  

以下将深入了解各个安全扫描工具内容(这足以帮助Alice做出决定)。  

1.类别  

以下是各种安全扫描工具的类别:  

(1)SAST(静态应用程序安全测试),又名静态扫描  

  1. 支持所需的编程语言。
  2. 误码率。
  3. 漏洞检测精度。
  4. 详细程度。
  5. 代码安全分析结果的清晰性。

(2)SCA(软件组合分析),又名依赖项扫描  

  1. 开源组件及其漏洞的知识库。
  2. 支持各种编程语言。
  3. 扫描速度。
  4. 易于使用报告的分析结果。
  5. 开发生命周期各个阶段的集成能力。

(3)DAST(动态应用程序安全测试),又名动态扫描/Web应用程序扫描  

  1. 支持API测试。
  2. 认证扫描。
  3. DevSecOps(作为CI/CD管道的一部分完全自动化运行的能力)。

(4)IAST(交互式应用安全测试)  

  1. 支持的技术。
  2. 易于报告和分析的详细程度。
  3. 执行速度。
  4. 准确度极低/无误报的结果。

(5)数据库安全扫描  

2.工具  

(1)WhiteSource Scan

WhiteSource具有SAST和SCA功能来执行代码的安全扫描。SAST能力可用于检测源代码中的漏洞,SCA可用于检测开源依赖项中的漏洞。WhiteSource帮助开发人员修复漏洞。它与Jenkins、Bamboo、AzureDevOps、GIT和TFS集成。  

(2)SonarQube

SonarQube是一个用于检查代码质量的开源平台,并与GitHub、BitBucket、GitLab、Maven、Gradle、Travis、Jenkins、Bamboo和Azure DevOps集成。SonarQube可以测量关键指标,包括错误、代码缺陷、安全漏洞和重复代码。SonarQube支持创建SonarQube插件,这有助于自定义代码规则。  

(3)IBM CRA  

Code Risk Analyzer获取所有基于Git的代码、配置和部署工件,构建依赖关系图,并运行合规性控制检查管道。它会生成一个物料清单(BOM)文件,其中列出了所有第三方操作系统包和应用程序包的依赖关系。它会发现物料清单(BOM)文件中列出的包中的漏洞。Code Risk Analyzer仅支持IBM Cloud®Continuous Delivery托管的github.com存储库、Git存储库和问题跟踪存储库。它可以启用CRA来扫描拉取请求和合并。  

(4)HCL AppScan

HCL AppScan是一个全面的、基于云的应用程序安全解决方案,与构建环境、DevOps工具和IDE集成。AppScanon Cloud提供一整套测试技术(SAST、DAST、IAST和开源)以提供最广泛的覆盖范围。它可以使用AppScan UI设置误报。  

(5)Gosec

Gosec是一个安全工具,可以对Golang项目的安全漏洞进行静态代码分析。Gosec通过将所有源代码加载到AST(抽象语法树)中来工作,并应用一组内置规则来查找常见错误,例如代码中的秘密。它允许用//#nosecG101G102识别误报。  

(6)OWASP ZAP  

Zed Attack Proxy(ZAP)是一种免费的、开源的动态扫描工具,由开放式Web应用程序安全项目(OWASP)维护。ZAP专为Web应用程序的渗透测试而设计。它设置警报过滤器以设置误报。  

3.工具比较

工具名称

用途

支持的语言

忽略列表

优点

缺点

​WhiteSource Scanning​

开源库扫描工具。漏洞通过MITRE和NVD验证

Java、C#、C++、Golang、Node.js、Ruby、.Net、Dockerfiles、Javascript 等

Whitesource的配置文件以包含忽略列表

漏洞影响的细节很清楚,可用于所有依赖项的许可证类型分类与 Eclipse、VsCode、IntelliJ 等集成,问题在存储库中修复后会自动关闭

图像扫描(操作系统包)和源代码扫描不包括在内。

​HCL ASOC​

源代码静态扫描和动态扫描工具

Android、Kotlin、Java、c/c++、Golang、Groovy、JS、Python、PHP、Scala、Ruby、TypeScript等

在UI中标记误报

一款涵盖静态代码和动态代码扫描的工具。  

扫描Dockerfile问题误报太多  

误报太多。

误报设置适用于行号,因此每次行号更改时都必须重新设置误报。

主要关注 SQL 注入和 CSRF 相关漏洞,

不是广泛的源代码扫描。

​IBM CRA​

依赖扫描。

不是源代码扫描。

使用 security.snyk.io 作为 CVE 数据库

Java, Node.js, Python, Golang, Docker files, Kubernetes, Terraform

.cra/.fileignore(可以排除开发依赖项(--excludedev))

执行基本映像(操作系统包)扫描。

可以集成到管道中。

自动创建的问题没有很多细节(管道有细节但没有链接到问题)。  

修复后的问题不会自动关闭。  

运行管道时可能出现重复,如果Dockerfile需要传递ARG,需要确保将ARG设置为环境变量。还可以使用Docker BUILDFLAG环境变量。  

仅支持IBM Cloud® Continuous Delivery托管的Github.com存储库、Git存储库和问题跟踪存储库。

​OWASP ZAP​

开源渗透测试工具

Java, Python, Node.js, .NET, PHP或者Go

可以在 UI 中设置误报。

使用配置文件忽略警报。

稳定的渗透测试/动态扫描解决方案。  

自动更新和拉取请求分析。  

提供四种不同的扫描模式。  

•安全的  

•受保护  

•标准  

•攻击

需要更好的报告格式。  

主动扫描很危险,根据应用程序可能会创建/修改/删除数据。

​SonarQube​

源代码质量和安全扫描工具。漏洞通过MITRE和NVD验证

Java(包括 Android)、C#、C、C++、JavaScript、TypeScript、Python、Go、Swift、COBOL、Apex、PHP、Kotlin、Ruby、Scala 等

没有Sonar可以用来排除扫描代码中的一行

对Java、C、C++等语言进行广泛的源代码扫描,用于在代码中检测:  

•错误  

•代码缺陷  

•安全漏洞  

•重复代码  

提供有关如何修复代码的详细信息  

根据OWASPTop10和CWETop25标准跟踪项目安全性。

商业版不支持GitHub集成。  

企业版价格高昂。  

不扫描依赖项。这需要将插件集成到SonarQube。  

定义政策/规则是一项挑战。  

测试覆盖报告需要第三方覆盖工具集成。

Gosec

GoLang的代码分析工具。漏洞由NVD验证

GoLang

//#nosec G101

可以自定义Gosec以排除或包含某些测试。  

gosec-track-suppressions可用于查看所有抑制。  

Gosec将在Go模块打开时自动获取正在分析的代码的依赖关系。  

支持多种输出格式,如text、json、yaml、csv、sonarqube、JUnit XML、html和golint。

映射CWE而不是CVE报告每个问题。

结论  

尽管Alice之前没有操作安全扫描工具的经验,但她不想尝试每种工具,因为它们会为原型新软件应用程序环境带来集成问题的成本。  

安全扫描工具的选择是团队必须做出的重要决定。调查结果将进一步导致关键决策,例如在安全扫描失败的情况下阻止代码交付,或在动态代码扫描的情况下,记录可审计的可追溯过程以确认测试的安全接受(即接受或忽略错误正数)。

而了解这些工具比较的细节之后,Alice将这些工具推荐给Bob,而这些工具很快就能入围。

对于Bob来说,显著避免使用不良的扫描工具比找到最好的工具更重要。Alice和Bob为此都很高兴,因为可以节省更多的时间,让他们专注于实际业务需求开发产品。

原文Take Control of Your Application Security,作者:Josephine E. Justin,Deepika Kothamasu,Swathi Pemmaraju

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯