1. > 电脑手机 >

coverity工具(coverity工具的用途)

本文目录一览:

Coverity 工具静态扫描 QT 项目实践

本文同样不讲述 Coverity 工具的安装和部署,只记录在扫描 QT 项目的过程和遇到的问题。 QT 项目的开发可以有多种方式,例如:在自带的 QT Creator 上,再者可在 Visual Studio 上配置相应的插件,本文所实践的项目即是采用的后者。

纯净的设备环境下,去扫描 QT 工程,并将结果上传到 Coverity 后台,因此需要配置 QT 项目的编译环境 qmake

这里以 Ubuntu 系统为例,直接使用命令行安装即可:

安装完成之后,输入 qmake -v 进行验证,如出现如下情况则安装成功:

1、生成 .pro 文件

2、根据 .pro 文件生成 Makefile

注意生成的 Makefile 文件中可能有些库文件没有链接进去,因此需要手动添加进入

3、编译项目

一切顺利的话,会根据 Makefile 中的规则生成对应的文件,至此编译成功

相关指令参数介绍,参见 Coverity 工具静态扫描Android项目实践

1、 Linux 系统下编译时链接的库为 .a 而不是 .lib

2、 qmake 根据 .pro 文件生成的 Makefile 中有些头文件和库没有包含进去,可以根据编译时打印的日志手动添加

3、一般在 LIBS 下指定链接库,形如包含与 Makefile 同级目录下的 lib64 文件夹下的 libslm_runtime.so/.a ,则可以表示为:

4、假如编译生成的是一个二进制可执行文件,名字为 authorize ,可以采用如下命令来检查该执行文件运行所需要的链接库是否完整:

假如出现: xxx.so:not found ,则表明 authorize 在运行时没有在系统环境中找到该 xxx.so 文件,因此需要在系统环境中配置 LD_LIBRARY_PATH :

在 /etc/profile 中追加如下命令:

coverity 代码检查 会检查出哪些问题

covertiry检测的编码规则并不多,也不全面,但相对来说检测的规则基本上是一些比较严重的问题。

就个人来说,国外的产品因为是按照老外的思维模式和使用习惯开发的,所以一般都不适用中国用户,coverity也一样。

就静态分析软件来说,目前有一款开推出的国产优秀的静态分析软件:雨田静态分析系统V2.1

比coverity更适合中国用户的使用习惯,检测的规则有300余条,还计算了代码、注释、循环、路径、操作对象、复杂度等类型的指标百余个,而且,还按照可读性、可测试性、可维护性、以及编码规则检查结果对代码进行了分类和综合的质量评估,感觉很好用。

安全开发你必须使用的28个DevSecOps工具

将安全融入开发过程,更早捕获并修复应用漏洞,你需要这五类共28款DevSecOps工具。

DevSecOps 是将安全集成到整个应用开发周期的过程,是从内到外强化应用,使其能够抵御各种潜在威胁的理想方式。因为很多公司企业不断开发应用以满足客户和商业合作伙伴的需求,DevSecOps的吸引力也与日俱增。

敏捷开发方法与DevOps操作帮助公司企业达成持续开发的目标。云原生应用架构也成为了DevSecOps运动的有力贡献者,推动采用公共云提供商、容器技术和容器平台为应用提供计算能力。DevSecOps将安全过程与工具集成进工作流并加以自动化,摆脱了传统方法按时间点进行的潜在干扰,是个无缝且持续的过程。

咨询公司 Data Bridge Market Research 称,鉴于网络安全威胁数量与危害性的持续上升,全球DevSecOps市场预计将从2018年的14.7亿美元增长至2026年的136.3亿美元。

市场繁荣之下,DevSecOps工具必将呈现百花齐放百家争鸣的局面。下面就按核心门类为您呈上多款优秀DevSecOps工具。

开发应用的时候很容易忽略掉安全漏洞。下面的工具为开发人员提供了潜在安全异常及缺陷的警报功能,可供开发人员及时调查并修复这些漏洞,不至于走得太远回不了头。有些工具专用于警报功能,比如开源的Alerta 。其他工具则兼具测试等别的功能,比如 Contrast Assess。

1. Alerta

()

该开源工具可将多个来源的信息整合去重,提供快速可视化功能。Alerta与Prometheus、Riemann、Nagios、Cloudwatch及其他监视/管理服务集成,开发人员可通过API按需定制Alerta。

2. Contrast Assess

()

作为一款互动应用安全测试(IAST)工具,Contrast Assess 与用户应用集成,在后台持续监视代码,并在发现安全漏洞时发出警报。据称即便是非安全开发人员也可使用 Contrast Assess 自行识别并修复漏洞。

3. Contrast Protect

()

该运行时应用自保护(RASP)工具采用了 Contrast Assess 同款嵌入式代理。Contrast Protect 在生产环境中查找漏洞利用程序和未知威胁,并将结果提交给安全信息及事件管理(SIEM)控制台、防火墙或其他安全工具。

4. ElastAlert

()

ElastAlert提供近实时接收警报的框架,可接收来自Elasticsearch数据的安全异常、流量激增及其他模式。ElastAlert查询Elasticsearch并根据一系列规则比较这些数据。一旦出现匹配,ElastAlert便发出警报并随附建议动作。

大多数DevSecOps工具都提供一定程度的自动化。此类工具自动扫描、发现并修复安全缺陷,只是自动化程度各有不同,从条件式事件驱动的自动化到运用深度学习技术的自动化都有。

1. CodeAI

()

旨在通过深度学习技术自动查找并修复源代码中的安全漏洞,号称可为开发人员提供可供参考的解决方案列表,而不仅仅是安全问题列表。其供应商QbitLogic宣称,已为CodeAI馈送了数百万个现实世界漏洞修复样本供训练。

2. Parasoft tool suite

()

Parasoft提供包括应用开发安全测试在内的多种自动化工具:

1)Parasoft C/C++test

()

用于开发过程早期缺陷识别;

2)Parasoft Insure++

()

可以查找不规范编程及内存访问错误;

3)Parasoft Jtest

()

用于Java软件开发测试;

4) Parasoft dotTEST

()

以深度静态分析和高级覆盖作为 Visual Studio 工具的补充。

3. Red Hat Ansible Automation

()

该工具包含三个模块——Ansible Tower、Ansible Engine 和 Red Hat Ansible Network Automation,可作为无代理IT自动化技术单独或联合使用。尽管不是专门的安全工具,Ansible Automation 却可供用户定义规则以确定自身软件开发项目中哪些部分是安全的。

4. StackStorm

()

该开源工具号称“可进行条件式运营”,其事件驱动的自动化能在检测到安全漏洞时提供脚本化的修复与响应,并附有持续部署、ChatOps优化等功能。

5. Veracode

()

该公司提供DevSecOps环境中广泛使用的一系列自动化安全工具,包括在代码编写时即时自动扫描的Greenlight;在沙箱中扫描代码漏洞的 Developer Sandbox;识别漏洞组件的 Software Composition Analysis (SCA);以及识别应用缺陷的 Static Analysis。

专用DevSecOps仪表板工具可使用户在同一图形界面中查看并共享从开发伊始到运营过程中的安全信息。有些DevSecOps应用,比如ThreatModeler和Parasoft已自带仪表板。

1. Grafana

()

该开源分析平台允许用户创建自定义仪表板,聚合所有相关数据以可视化及查询安全数据。如果不想自行构建,还可以在其网站上选用社区构建的仪表板。

2. Kibana

()

如果你使用Elasticsearch,该开源工具可在统一图形界面中集成成千上万的日志条目,包括运营数据、时间序列分析、应用监视等等。

威胁建模DevSecOps工具用以在复杂的攻击界面中识别、预测并定义威胁,以便用户可以做出主动安全决策。有些工具可根据用户提供的系统及应用信息自动构建威胁模型,并提供可视化界面以帮助安全及非安全人员 探索 威胁及其潜在影响。

1. IriusRisk

()

出自 Continuum Security 的解决方案,既可云部署,也可现场部署,能以基于问卷的界面自动化风险及需求分析,并设计出威胁模型和技术性安全要求。IriusRisk还可帮助用户管理代码构建及安全测试阶段。

2. ThreatModeler

()

该自动化威胁建模系统有两个版本:AppSec版和云版。在提供了用户应用或系统的功能性信息后,ThreatModeler会基于更新的威胁情报自动就整个攻击界面进行数据分析和潜在威胁识别。

3. OWASP Threat Dragon

()

一款基于Web的开源工具,提供系统图解和用于自动化威胁建模与缓解的规则引擎。Threat Dragon 承诺可与其他软件开发生命周期(SDLC)工具无缝集成,且界面易于使用。

在开发过程中测试应用以找出潜在漏洞是DevSecOps的关键部分,能够事先发现安全漏洞,避免漏洞被黑客利用。尽管其他工具往往包含了测试功能,比如Parasoft出品的那些,下列工具仍然在应用安全测试上表现强劲。

1. BDD-Security

()

该出自 Continuum Security 的开源框架可使安全人员在敏捷开发过程中测试行为驱动开发(BDD)语言编写的功能及非功能性安全场景。此BDD框架旨在使安全功能独立于应用特定的导航逻辑,让同样的安全要求能够更容易地应用到多个应用程序上。

2. Checkmarx CxSAST

()

可对25种编程及脚本语言进行未编译/未构建源代码扫描的静态应用安全测试(SAST)工具,能在SDLC早期发现成百上千种安全漏洞。CxSAST兼容所有集成开发环境(IDE),是Checkmarx软件暴露平台的一部分——该平台可在DevOps所有阶段植入安全。Checkmarx的交互式应用安全测试(IAST)工具可检测运行中应用的安全漏洞。

3. Chef InSpec

()

整个开发过程中的每一阶段都可以运用该开源工具自动化安全测试以确保针对传统服务器及容器和云API的合规、安全及其他政策要求。

4. Fortify

()

Micro Focus 出品,提供端到端应用安全,可供进行覆盖整个软件开发生命周期的现场及按需测试。Fortify on Demand 是 Micro Focus 的应用安全即服务产品,提供静态、动态和移动应用安全测试,以及生产环境中Web应用的持续监视。

5. Gauntlt

()

流行测试框架,旨在推动易操作的安全测试及安全、开发和运营团队间的沟通。GauntIt便于产生攻击测试用例,且能方便地钩入现有工具及进程。

6. Synopsys suite

()

Synopsys提供多个应用安全测试工具,包括:

1)SAST工具Coverity

()

自动化测试且融入持续集成/持续交付(CI/CD)管道;

2)SCA工具 Black Duck

()

采用容器及应用中的开源和第三方代码检测并管理安全;

3)SeekerIAST

()

识别可暴露敏感数据的运行时安全漏洞;

以及一系列用于应用安全测试的托管服务。

以下DevSecOps工具同样含有上述工具提供的功能,但或多或少略有不同。

1. Aqua Security

()

在整个CI/CD管道和运行时环境中管理端到端安全,可用于所有平台和云环境的容器及云原生应用。

2. Dome9 Arc

()

被 Check Point 收购,提供自动化测试及安全实施,使开发人员能够将安全及合规融入公共云应用的构建、部署及运营。

3. GitLab

()

该工具可将DevSecOps架构融入CI/CD过程,在提交时测试每一块代码,使开发人员能够在编程期间缓解安全漏洞,并提供涵盖所有漏洞的仪表板。

4. Red Hat OpenShift

()

为基于容器的应用提供内置安全,比如基于角色的访问控制、以安全增强的Linux(SELinux)实现隔离,以及贯穿整个容器构建过程的核查。

5. RedLock

()(前身为Evident.io)

Palo Alto Networks 出品,适用于部署阶段,帮助开发人员快速发现并缓解资源配置、网络架构及用户活动中的安全威胁,尤其是在亚马逊S3存储桶和弹性块存储(EBS)卷上。

6. SD Elements

()

出品自 Security Compass 的自动化平台,旨在收集客户软件信息,发现威胁及对策,突出相关安全控制措施以帮助公司企业实现其安全和合规目标。

7. WhiteHat Sentinel 应用安全平台

()

该解决方案提供贯穿整个SDLC的应用安全,适用于需将安全集成进工具中的敏捷开发团队,以及需持续测试以保证生产环境应用安全的安全团队。

8. WhiteSource

()

用于解决开源漏洞,可集成进用户的生成过程,无论用户采用什么编程语言、生成工具或开发环境。WhiteSource使用经常更新的开源代码数据库持续检查开源组件的安全及授权。

应用安全体系建设之路

只要提到应用安全,总是离不开一个概念——sdl建设,但是在大部分互联网公司并没有看到过哪家SDL做的好的,SDL强调安全流程,从业务需求的提出就介入进去,在整个业务的研发周期中,每一块都有相应的安全方法、安全制度来指导,安全作为业务的一个属性加入进去,SDL在过程中实施的是对业务的卡点、考核。

这块主要是对流程进行梳理,把安全与项目研发流程相结合形成项目的安全开发管控流程,安全贯穿到整个项目研发流程中,包括前期的需求分析,安全设计、代码编写、代码上线部署、测试环境测试、正式环境上线运行等,可以认为此时走传统的SDL流程。

这里有个问题,若是业务量增长的话对于人力成本是巨大的,这里很多公司就结合DevSecOps理念来解决一部分人手不足的问题,这个框架讲研发、运维、安全作为一个团队来对业务的安全负责,安全不单是安全团队的怎样,成了业务中每个人的责任。下面简要说下DevSecOps理念及落地实施。

对于DevSecOps的落地来说,这个只是个框架,是个方法论,具体的技术实施呢,都知道是将Sec融入到Dev和Ops的里面,对于怎么融入、怎样结合到起来,就需要根据不同公司的不同特点来定了。

对于安全来说,主要的任务就是保护公司的业务不会被外界入侵,不会被外界攻击,攻击能及时发现切断。

DevSecOps框架需要建设不同的安全体系,需要不断优化和完善对于的体系来覆盖框架的不同阶段。对于在真正的实施过程中,大部分公司都可能涉及到以下不同的能力建设,在具体落地过程中,笔者认为可以简单总结为几个能力建设:主动发现的能力、被动发现的能力、业务管控的能力、安全运营的能力。

主动发现的能力简单来说是能主动发现业务中的安全问题、安全漏洞、安全风险,业界中比较常用的技术有黑盒扫描、白盒扫描、安全评估与测试以及红蓝对抗。

这个是每个公司都会有的,也是初期重点建设的一块,有采用商业扫描工具:awvs、appscan等,也有采用自研方式进行。

这里不说商业的扫描工具,对于互联网公司,大部分都会采用自研扫描工具的方式进行,简单说下自研扫描器里面涉及到的一些需要重点考虑的地方:

白盒的话在互联网公司除了几个大厂有自研的引擎外,据了解都是采用了商业的工具,在具体的落地过程中也调研了不少白盒扫描工具:checkmarx、coverity、codeql、sonarqube。

checkmarx和coverity都有sonarqube的插件在,都可以作为sonar的一个引擎来工作,对于sonar来说,很多互联网公司都基于这个做代码质量的扫描,这个其实给做白盒能力有了很大的便利性。

checkmarx对于web来说效果比coverity要好些,并且对于用户的使用体验和操作都是比较不错,将checkmarx插件集成到sonar里面,这样业务不需要单独集成checkmarx,而是只需要按照以前的流程集成sonar就可加入安全扫描的能力。

但是有一点需要考虑,对于安全结果来说业务很多时候不知道是不是误报还是真实的安全风险,这就需要安全人员介入到流程里面,对代码扫描的结果进行审核,确定是漏洞的提交给业务,不是漏洞的直接忽略处理,这样前期需要大量的人工参与,需要不断优化规则,不断调整策略减少误报。前期可以通过对结果的分析可以将一些误报率较高的规则下掉,只留高威胁级别的规则在,保证人工在每天是可以覆盖的住流程的

后期的话由于sonar是带有api接口的,可以基于sonar包装一层,构建安全自己的代码扫描平台,可以提供api接入到CI中,可以将漏洞审核与漏洞管理平台打通,可以通过平台调整规则、新加规则等。这样在整个CI中,sonar+代码扫描平台两个,业务只要关心sonar上面的代码质量问题,安全只要登入代码扫描平台审核白盒扫描出来的漏洞即可。

这里涉及到一个白盒里面的子项目:白盒扫描插件,这个作为白盒检测,更加进行了左移,在业务编写代码的时候就直接进行扫描。可以基于: 来包装一层来做

还有一个白盒的子项目:第三方组件的漏洞发现,这个做起来可以通过采购商业软件来实现,比如Blackduck或者xray,对业务是透明的,只要安全人员控制好流程和策略。

红蓝对抗是一种能更深层次发现安全问题和安全风险的方式。每过一段时间组织一次蓝队行动,对着一个核心目标不限手段、不限方式地进行攻击,以获取核心目标为目的。可以更好地发现整个业务体系中存在的安全问题和安全风险点,帮助红队进行安全优化及建设,红蓝对抗在安全进行中一定程度后可以考虑重点进行建设,对于整个风险的发现和推动是巨大的。

被动发现安全风险的能力,可以采用的技术有:安全监控、蜜罐

监控可以分为两类:未发现风险的监控、风险之中的监控,风险之后的溯源

为了发现风险的监控,可以提前杜绝掉风险的发生,比如前面说的,若是资产梳理是没有问题的,可以每天将业务新增的资产进行扫描查看,比如:新上的域名是一个管理系统,他没有走内部的安全流程,就存在问题,直接要求整改。新上的域名、服务器直接进行扫描器的扫描,可以第一时间发现是否存在漏洞。

发生风险的时候的监控:

- 攻击流量监控 :这个就是有很多扫描器、很多测试的数据的特征进行流量监控,监控到了直接报警,也可结合SOC进行数据分析处理,利用WAF进行自动化封IP等防御措施,这样将内部各个防御能力打通,实现自动化编排,后期流量日志采用大数据建模方式来发现未特征化的攻击。

- DNS监控: 对于很多命令执行、SQL注入、SSRF等漏洞的探测大部分是通过DNS来的,内部系统发起DNS请求是可以在内部DNS服务器上捕捉到的,这样将DNS日志监控起来,初始先制定一些黑名单,观察是否有机器对外发现这些恶意DNS请求了,对这些机器进行分析,就有可能发现未知的存在的安全风险。

- SQL执行日志监控: 对于sql注入的发现还是比较有用的,SQL注入通常会有一些注入特征在,只要匹配到这些特征,就可以发现某个业务在遭受sql注入的攻击

除此之外,对外界代码仓库、文档仓库的监控也是属于监控体系的,包括GitHub监控、百度网盘监控等等,这个github好说,很多开源的工具系统存在,将业务的关键信息加入到监控中即可,对于百度网盘之类的监控就不太好做了。

这个也是发现攻击的一种很好的方式,不单可以发现外部使用到的poc、密码字典等等信息,也能发现一些未知的攻击方式和APT行为存在

业务管控能力,比较通用的是WAF,为啥把WAF能力放在安全管控上面,WAF是可以做到哪些ip能访问,哪些ip不能访问,哪些路径能访问,哪些路径不能访问到的,说起来也是对业务的访问做的管理。WAF有很多成熟的商业产品在用,也可以自研,自研的话前期是基于正则匹配来做的,通过匹配对应的参数位置上的参数值是否包含有关键字来做。后期的话要想准确性高、误报率小的话还是需要机器学习和语义分析来做。

现在对于业务管控比较热门的零信任体系的建设,比较常见的是安全网关的模式,有空说下零信任的一些内容,现阶段知识还不深,就不说了,再深入研究研究看。

提到安全运营,很多人的脑袋想到的都是举办些安全活动,打打杂之类的工作,在笔者看来,一个企业的安全运营能力才真正能体现出该企业的安全能力,安全运营是推动SDL流程不断优化、不断完善的动力,是为DevSecOps规划建设指明道路和方向的。

技术要是没有了运营,是无法进行后续的优化和改进的,运营没有了技术,是虚的空的,无法落地的,安全运营包括了外部运营、内部运营,不同的运营又可划分为非技术运营、技术运营两种

外部运营里面的非技术运营,主要包括了安全品牌的建设、宣传等,主要是提供公司在业界的影响力,这样可以更好的吸引外部的安全研究者为我们服务,更好的吸引外界安全人员以外部视角参与到公司的安全建设中来

外部的技术运营:组织技术人员参加外部的比赛、大会等,发表技术文章等,以技术能力展现出来,这样在行业中展示出公司的技术实力。

内部非技术运营:汇总每个能力方面的数据做分析,将各个能力的结果通过数据化的方式展示出来,一方面可以给老板看到能力的建设进展情况,也能使大家了解到自己做的工作的成果

具体的落地可采用:数据大屏的方式来展示出来,通过soc平台完成。

内部技术运营:通过非技术运营出来的结果反哺各个能力建设,通过内部、外部发现的安全问题,优化各个能力的建设,补充不足之处,推动流程优化和DevSecOps建设方向。

具体落地:主要是需要运营人员对每一部分的能力建设比较了解,通过看问题能发现更深层面的东西,然后对每个结果进行安全能力上面的推动。

最受欢迎的软件安全性测试工具有哪些?

之前在做 国内软件测试现状调查 之时,因为安全性测试工具太多,结果显示其分布比较广,填写“其它”占的比重很高(66%),为此专门做了一个调查 ,虽然收集的有效反馈不多(不到100),但基本反映了测试工具的使用现状。

1. 从总体看,(静态的)代码分析工具和(动态的)渗透测试工具应用还是比较普遍 ,超过60%,而且渗透测试工具(73.68%)略显优势,高出10%。模糊测试工具,可能大家感觉陌生,低至16%,但它在安全性、可靠性测试中还是能发挥作用的。从理论上看,代码分析工具应该能达到95%以上,因为它易用,且安全性已经是许多公司的红线,得到足够重视。 希望以后各个公司能够加强代码分析工具和模糊测试工具的应用。

2. Java代码安全性分析工具前三名是 : IBM AppScan Source Edition(42.11%)、Fotify Static Code Analyzer(36.84%)、Findbugs(26.32%) ,而JTest、PMD等没进入前三名,虽然和第3名差距不大,只有5%左右。也有公司使用Checkmarx,不在此调查中。Coverity也支持Java,可能Java的开源工具较多,人们很少用它。

3. C/C++代码安全性分析工具前三名是 : C++Test(38.89%)、IBM AppScan Source Edition(38.89%)、Fotify Static Code Analyzer(27.78%)、Visual Studio(27.78%) 。Coverity、CppCheck、LDRA Testbed 没能进入前三名,可能LDRA Testbed比较贵,关键的嵌入式软件采用比较多,而Coverity Cloud针对Github等上面的代码有免费服务(),大家可以尝试应用。

4. JavaScript代码安全性分析工具应用最多的是 Google's Closure Compiler,其次是JSHint,也有的公司用Coverity来进行JS的代码分析。

5. Python代码安全性分析工具应用最多的是Pychecker ,其次是PyCharm,而Pylint使用比较少,也有几个公司用Coverity来进行Python的代码分析。

6. Web应用安全性测试的商用工具中,IBM AppScan异军突起 ,高达70%的市场,其它商用工具无法与它抗衡,第2名SoapUI和它差距在50%以上,HP webInspect 不到10%。

7. Web应用安全性测试的开源工具中,Firebug明显领先 ,将近50%,比第2名OWASP ZAP高12%,第三名是Firefox Web Developer Tools,超过了20%。

8. Android App的安全性测试工具中,Android Tamer领先 ,将近30%,比第2、3名AndroBugs、Mobisec、Santoku高15%左右。也有用其它不在调查项中的工具,总体看,Android App安全性测试工具分布比较散。

9. 网络状态监控与分析工具中,Wireshark遥遥领先,超过70%。 其次就是Tcpdump、Burp Suite,占30%左右。网络状态监控与分析工具挺多的,但从这次调查看,越来越集中到几个工具中,特别是Wireshark功能强,覆盖的协议比较多,深受欢迎。

10. SQL注入测试工具排在前三位的:SQLInjector、SQL Power Injector、OWASP SQLiX, 三者比较接近,差距在6%左右。其它两项工具Pangolin、SQLSqueal也占了10%,而Antonio Parata、Blind SQL Injections、Bsqlbf-v2、Multiple DBMS Sql Injection、Sqlninja几乎没什么人用。

安全性测试工具很多,还包括黑客常用的一些工具,如暴力破解口令工具、端口扫描工具、防火墙渗透工具、渗透测试平台等。从某种意义看,它们超出软件范畴,更多属于网络空间安全、密码学等范畴,在此就不展开了。概括起来最受欢迎的软件安全性测试工具有:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息