当前位置: 首页 > 科技观察

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

时间:2023-03-21 10:47:44 科技观察

如何保证应用程序的安全下面是他们之间关于开发一套新的微服务的对话。鲍勃说:“你听到通知了吗?客户交易已经完成。我们可以开始为他们在云平台上使用的金融服务开发分析应用程序。”爱丽丝:“太棒了!那么应该使用哪种编程语言来构建应用程序?”Bob:“还不确定。它可以基于任何软件编程语言,但更重要的是它必须是安全的。我们所有的系统及其应用程序都应该有最新的安全补丁,并且软件版本应该始终以正确的配置运行。我会通过电子邮件向您发送详细的业务用例和技术要求。简而言之,这将是持续集成和交付的快速发展。那么您推荐我们使用什么工具来进行端到端的安全扫描?”爱丽丝说:“当然,我会向您发送一份工具列表,让我们能够在生产部署之前检测和修复漏洞。我认为需要有一种有前途的方法来扫描和消除您的代码或应用程序可能带来的网络安全风险”Bob说:“很好,我们更喜欢开源扫描工具,但如果可用,您可以列出对流行的第3方专有工具的见解。”Alice开始探索有关代码扫描主题的各种现有资源。根据Bob提供的需求规范,她把代码的静态分析,面向互联网的用户界面(UI)和API端点的动态分析,以及依赖包的漏洞扫描等所有关键领域都考虑过了。几天过去了,她仍然一头雾水,难以做出一个决策,因为她获得的大部分信息是基于用户角色和软件可用性规范而不是以代码为中心,尽管从开发人员的角度来看这很有用,并且可以根据需求进行调整。下面是对每个安全性的深入了解scanner(应该足以帮助Alice做出决定)1.类别以下是各种安全扫描工具的分类:(1)SAST(StaticApplicationSecurityTesting)也称为静态扫描,是一种白盒测试过程,用于分析应用程序源代码以识别漏洞来源;实施了开发生命周期的编码/QA阶段,从而能够及早识别和缓解代码中的漏洞。确保应用程序从设计阶段就以稳健和安全的方式构建,并在投入生产之前遵守安全编码标准。一些提供SAST的工具包括SonarQube、AppScan、IBMCodeRiskAnalyzer、FortifyStaticCodeAnalyzer、WhiteSource等。在使用SAST工具之前,一个常见的评估标准是:支持所需的编程语言。误码率。漏洞检测的准确性。详细程度。清晰的代码安全分析结果。(2)SCA(软件组合分析),又名依赖扫描,跟踪代码库中的开源组件,以检测漏??洞、潜在的安全和许可合规性威胁,使团队能够及早解决冲突。静态扫描检测内部开发的专有源代码中的漏洞,而软件组合分析(SCA)执行依赖项扫描以识别开源依赖项中的漏洞、发现弃用的依赖项并评估数字签名。它几乎没有误报,扫描速度非常快。不需要访问源代码,并且可以在软件开发生命周期(SDLC)的任何阶段进行集成,甚至在部署之后。一些提供SCA/依赖扫描的工具有WhiteSourceSoftware、GitLab、GitHub、Snyk和JfrogXray。使用SCA工具之前的一个常见评估标准是:开源组件及其漏洞的知识库。支持各种编程语言。扫描速度。分析结果是易于使用的报告。跨开发生命周期所有阶段的集成能力。(3)DAST(DynamicApplicationSecurityTesting),又名DynamicSc??anning/WebApplicationScanning这是一个黑盒测试过程,用于通过渗透测试识别应用程序Web端点的漏洞,其源代码无法访问,通常在质量期间执行构建应用程序的保证(QA)和预生产阶段。它探索应用程序的健康状况并检查其对该工具进行的模拟攻击的响应,这将有助于确定应用程序是否易受攻击以及是否可能面临真正恶意攻击的风险。适用于检测身份验证和配置问题;独立于应用程序使用的语言和平台。一些提供动态扫描的工具是OWASPZAP、AppScan、Netsparker和Detectify。在使用DAST工具之前常用的评估标准是:支持API测试。身份验证扫描。DevSecOps(作为CI/CD管道的一部分完全自动化操作的能力)。(4)IAST(InteractiveApplicationSecurityTesting)IAST是一种结合了SAST和DAST优点的混合测试方法。IAST通过使用代理和传感器在运行时检测应用程序来分析漏洞。与DAST不同,IAST可以查看整个代码库,并可以指向代码的确切易受攻击位置。此外,与SAST不同,它能够以最低的误报率捕获运行时问题,例如错误配置。一些提供IAST的工具是Veracode和Netsparker。在使用IAST工具之前常用的评估标准是:支持的技术。便于报告和分析的详细程度。执行速度。结果的准确性非常低/没有误报。(5)数据库安全扫描是通过检查数据库的内部和外部配置,如身份验证、机密性、完整性和可用性,来识别数据库应用程序中的漏洞的过程。其中一些工具是Scuba、Zenmap和SQLRecon。2.工具(1)WhiteSourceScanWhiteSource有SAST和SCA函数来进行代码安全扫描。SAST能力可用于检测源代码中的漏洞,SCA可用于检测开源依赖项中的漏洞。WhiteSource帮助开发人员修复错误。它集成了Jenkins、Bamboo、AzureDevOps、GIT和TFS。(2)SonarQubeSonarQube是一个开源的代码质量检查平台,集成了GitHub、BitBucket、GitLab、Maven、Gradle、Travis、Jenkins、Bamboo、AzureDevOps。SonarQube可以测量关键指标,包括错误、代码缺陷、安全漏洞和重复代码。SonarQube支持创建SonarQube插件,这有助于自定义代码规则。(3)IBMCRACodeRiskAnalyzer获取所有基于Git的代码、配置和部署工件,构建依赖图,并运行合规性控制检查管道。它生成一个物料清单(BOM)文件,其中列出了所有第三方操作系统包和应用程序包依赖项。它在物料清单(BOM)文件中列出的包中发现漏洞。CodeRiskAnalyzer仅支持github.com存储库、Git存储库和由IBMCloud?ContinuousDelivery托管的问题跟踪存储库。它使CRA能够扫描拉取请求和合并。(4)HCLAppScanHCLAppScan是一个全面的、基于云的应用程序安全解决方案,它集成了构建环境、DevOps工具和IDE。AppScanonCloud提供全套测试技术(SAST、DAST、IAST和开源)以提供最广泛的覆盖范围。它可以使用AppScanUI设置误报。(5)GosecGosec是一款安全工具,可以对Golang项目的安全漏洞进行静态代码分析。Gosec的工作方式是将所有源代码加载到AST(抽象语法树)中,并应用一组内置规则来查找常见错误,例如代码中的秘密。它允许使用//#nosecG101G102识别误报。(6)OWASPZAPZedAttackProxy(ZAP)是一个免费、开源的动态扫描工具,由OpenWebApplicationSecurityProject(OWASP)维护。ZAP专为Web应用程序的渗透测试而设计。它设置警报过滤器以设置误报。3.工具对比工具名称用途支持的语言忽略列表优缺点WhiteSourceScanning开源库扫描工具。MITRE和NVD验证的漏洞Java、C#、C++、Golang、Node.js、Ruby、.Net、Dockerfiles、Javascript等的配置文件包含忽略列表的Whitesource漏洞影响详细信息清晰且可用于所有依赖项类型的许可证分类与Eclipse、VsCode、IntelliJ等集成,当问题在存储库中修复时自动关闭。不包括图像扫描(操作系统包)和源代码扫描。HCLASOCAndroid,Kotlin,Java,c/c++,Golang,Groovy,JS,Python,PHP,Scala,Ruby,TypeScript等源代码静态和动态扫描工具,在UI中标记误报一个涵盖用于代码和动态代码扫描的静态工具。扫描Dockerfile问题误报太多误报太多。误报设置适用于行号,因此您必须在每次行号更改时重置误报。主要关注SQL注入和CSRF相关漏洞,而不是广泛的源代码扫描。IBMCRA依赖扫描。不是源代码扫描。使用security.snyk.io作为CVE数据库Java,Node.js,Python,Golang,Dockerfiles,Kubernetes,Terraform.cra/.fileignore(可以排除开发依赖(--excludedev))执行基础镜像(OS包)扫描.可以集成到管道中。自动创建的问题没有很多细节(管道有细节但没有链接到问题)。修复的问题不会自动关闭。运行管道时可能会出现重复,如果Dockerfile需要传递ARG,需要确保将ARG设置为环境变量。您还可以使用DockerBUILDFLAG环境变量。仅支持IBMCloud?ContinuousDelivery托管的Github.com存储库、Git存储库和问题跟踪存储库。OWASPZAP开源渗透测试工具Java、Python、Node.js、.NET、PHP或Go可以在UI中设置误报。使用配置文件忽略警报。稳定的渗透测试/动态扫描解决方案。自动更新和拉取请求分析。提供四种不同的扫描模式。?安全?受保护?标准?攻击需要更好的报告格式。主动扫描是危险的,并且根据应用程序可能会创建/修改/删除数据。SonarQube源代码质量和安全扫描工具。Java(含Android)、C#、C、C++、JavaScript、TypeScript、Python、Go、Swift、COBOL、Apex、PHP、Kotlin、Ruby、Scala等漏洞均通过MITRE和NVD验证。没有Sonar可以用来排除扫描代码在一行中对Java、C、C++等语言进行广泛的源代码扫描,以检测代码中的:?错误?代码缺陷?安全漏洞?重复代码提供有关如何修复代码的详细信息跟踪项目安全性以OWASPTop10和CWETop25标准性。商业版不支持GitHub集成。企业版很贵。不扫描依赖项。这需要将插件集成到SonarQube中。定义政策/规则是一项挑战。测试覆盖率报告需要第三方覆盖率工具集成。GosecGoLang的代码分析工具。NVDGoLang//#nosecG101Gosec验证的漏洞可以自定义以排除或包含某些测试。gosec-track-suppressions可用于查看所有抑制。Gosec会在Go模块开启时自动获取被分析代码的依赖。支持多种输出格式,例如文本、json、yaml、csv、sonarqube、JUnitXML、html和golint。映射CWE而不是每个问题的CVE报告。结论尽管Alice以前没有操作安全扫描工具的经验,但她不想尝试每一种工具,因为它们会给环境带来集成成本问题,以制作新软件应用程序的原型。安全扫描工具的选择是团队必须做出的重要决定。调查结果将进一步导致关键决策,例如在安全扫描失败的情况下阻止代码交付,或者在动态代码扫描的情况下,记录可审核的可追溯性流程以确认测试的安全接受(即接受或忽略错误阳性)。在了解了这些工具对比的细节后,Alice向Bob推荐了这些工具,这些工具很快就会入围。对Bob来说,避免使用不良扫描工具比找到最好的扫描工具重要得多。Alice和Bob都很高兴,因为他们可以节省更多时间,让他们专注于开发满足真正业务需求的产品。原标题:掌控您的应用程序安全,作者:JosephineE.Justin、DeepikaKothamasu、SwathiPemmaraju