上次介绍了用FindBugs辅助分析代码漏洞。这次换了一个工具:Fortify SCA Demo 4.0.0。Fortify是一个在安全方面挺出名的公司,这里就不多说了。先介绍一下主角:Fortify SCA Demo 4.0.0,尽管如今不知道Fortify SCA的版本号是多少,但能够肯定的是,Fortify SCA Demo 4.0.0是一个比較旧的Fortify SCA分析器了,而且还是Demo版的。所以不管是界面还是功能上都是比較简陋的。因为Fortify SCA不是开源的工具,这里就不提供下载了,大家能够上Fortify主页申请:>。

  这次演示的是用Fortify SCA静态分析Java代码。和FindBugs不同的是Fortify SCA还能够静态分析C/C++,.NET和PL/SQL等代码。

一.Fortify SCA静态分析原理

  因为我不是写这个东东的人。而且接触这个工具时间也有限。所以对它的工作原理认知比較浅,非常多是通过它的说明文档得来的。

  Fortify SCA静态分析分两个阶段:

  1.Translation:

    把各种语言的源码转为一种统一的中间语言代码。

  2.Analysis:

    依据中间代码分析代码漏洞。并得出报告。

  Fortify有非常多个语言转换器,但核心的静态分析引擎仅仅有一套。

二.Fortify SCA的使用

  先看看Fortify SCA Demo 4.0.0的文件夹:

  

  这个是Fortify SCA Demo 4.0.0的文件夹,这里主要有两个文件:auditworkbench.cmd和sourceanalyzer.exe。auditworkbench.cmd是查看静态分析报告的工具,sourceanalyzer.exe是静态代码分析器。这里我们还看到了一个FindBugs的文件夹。这是因为这个版本号的Fortify集成了此功能,你能够通过传參给sourceanalyzer.exe调用FindBugs(但我一般不这么做,能够直接使用FindBugs的话。为什么还要通过sourceanalyzer.exe调呢?)。

  開始扫描静态分析,首先CMD进入Java源码文件夹。然后“H:\Fortify\sourceanalyzer.exe -classpath "**/*.jar" -f test.fpr .”。在当前文件夹得到结果报告test.fpr。

  用auditworkbench打开test.fpr,效果例如以下图:

  

  这里auditworkbench主要分4部分:

  1.左上(Issues):是警告分类,这里Fortify分了3了,严重程度由高至低各自是:hot。warning。info。以下是本次扫描的问题列表,双击就可以定位问题代码。

  2.右上:源码。双击问题列表就可以自己主动定位代码。

  3.左下(analysis trace):问题处的Trace信息,告诉你问题出如今哪里文件第几行。

  4.右下(details):问题的具体说明。还有示范代码。

OK,如今看看其它地方,比方:menubar(Options)-->Show View-->Other,你会看到下图:

  

  这里我看到了一个非常像eclipse管理插件的窗体。噢,难道.....OK,让我看看再找找Fortify的文件夹看看,找到了这个东西:

  

  这里发现Fortify SCA真的是一个Eclipse插件,只是当我兴冲冲地把这个插件放进myeclipse插件库并重新启动后,发现这个不能识别:<,好像还是差了点东西。这个以后研究。

  这个工具还有非常多功能,但暂且先写这多。

三.Fortify SCA Demo 4.0.0与FindBugs(1.3.7.20081230)对照

  今天试着对同一份代码进行静态扫描,发现FindBugs找到的问题种类,数量都比Fortify SCA Demo 4.0.0多非常多:

  FindBugs发现问题种类有:20多种

  Fortify SCA Demo 4.0.0发现问题种类:5种

  在分析发现问题后。发现了一个有趣现象,Fortify SCA Demo 4.0.0和FindBugs发现的BUG类型是全然不同,能够说是互补的!

当中,FindBugs发现的问题相对照较重要。但FindBugs仅仅是针对Java代码的静态分析器,而Fortify SCA则支持很多其它的语言,而且Fortify SCA对发现问题的解释相对照较清晰。

  导致这个问题的解决办法可能是:Fortify SCA Demo 4.0.0这个版本号比較老,而且是试用版。规则库和静态分析引擎都不全......假设是最新的Fortify SCA商业版,应该是不错,8个分析不同类型问题的静态分析引擎。庞大的规则库.......但是俺这样的穷人还没机会试:<

  对照两个Java静态分析工具,Fortify SCA Demo 4.0.0和FindBugs(1.3.7.20081230),使用FindBugs是不错的选择,它相对照较强些,但假设能够两个都用当然效果更好:>

四.Fortify SCA的Bug类型及解释说明

  尽管Fortify SCA对问题已经有比較清晰的说明。但是还是决定自己总结,这样会更加清晰。(相关问题解释说明稍后补上)

Hot:

//...

Fortify SCA 分析代码漏洞全解的更多相关文章

  1. PHP漏洞全解

    针对PHP的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval注入(Eval Injection) 3.客户端脚本攻击(Script Insertion) ...

  2. PHP漏洞全解(详细介绍)

    转载  http://www.jb51.net/article/31898.htm 针对PHP的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval注入(E ...

  3. PHP漏洞全解(五)-SQL注入攻击

    本文主要介绍针对PHP网站的SQL注入攻击.所谓的SQL注入攻击,即一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返 ...

  4. web安全原理分析-SQL注入漏洞全解

    简介 靶场:榆林学院信息安全协会--入侵榆大实验靶场 数字型注入 1 字符型注入 1 布尔注入 1.布尔注入简介 mysql bool注入是盲注的一种.与报错注入不同,bool注入没有任何报错信息输出 ...

  5. PHP漏洞全解(九)-文件上传漏洞

    本文主要介绍针对PHP网站文件上传漏洞.由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 P ...

  6. PHP漏洞全解(七)-Session劫持

    本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...

  7. PHP漏洞全解(六)-跨网站请求伪造

    本文主要介绍针对PHP网站的跨网站请求伪造.在CSRF所有攻击方式中包含攻击者伪造一个看起来是其他用户发起的HTTP 请求,事实上,跟踪一个用户发送的HTTP请求才是攻击者的目的. CSRF(Cros ...

  8. PHP漏洞全解(四)-xss跨站脚本攻击

    本文主要介绍针对PHP网站的xss跨站脚本攻击.跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站 ...

  9. PHP漏洞全解(三)-客户端脚本植入

    本文主要介绍针对PHP网站的客户端脚本植入攻击方式.所谓客户端脚本植入攻击,是指将可以执行的脚本插入到表单.图片.动画或超链接文字等对象内.当用户打开这些对象后,黑客所植入的脚本就会被执行,进而开始攻 ...

随机推荐

  1. 382. Linked List Random Node(蓄水池采样)

    1. 问题 给定一个单链表,随机返回一个结点,要求每个结点被选中的概率相等. 2. 思路 在一个给定长度的数组中等概率抽取一个数,可以简单用随机函数random.randint(0, n-1)得到索引 ...

  2. jmeter导入csv压测

    压测csv数据源(设置为utf-8格式),jmeter不需要第一行参数名 新建一个线程组,根据压测数据调整设置需要的循环次数(测试数据有9行,设置循环次数为9) 添加http头信息 Content-T ...

  3. Java实现获取属性文件的参数值

    Java实现获取属性文件的参数值 1,属性文件内容(analysis.properties),路径必须在:src根目录下: #client data path analysis.client.data ...

  4. 20145328 《网络对抗技术》逆向及Bof基础实践

    20145328 <网络对抗技术>逆向及Bof基础实践 实践内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...

  5. ubuntu下各类快捷键汇总记录

    一.环境 Ubuntu 16.04 二.快捷键汇总如下 2.1 将图形界面下的terminal最大化:ctrl+super+向上的方向键 2.2 将图形界面下的terminal最小化:ctrl+sup ...

  6. [CF600E]Lomsat gelral

    题意翻译 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. 线段树合并板子题,没啥难度,注意开long long 不过这题$dsu$ $on$ $tre ...

  7. UVa 11374 机场快线

    https://vjudge.net/problem/UVA-11374 题意: 机场快线分为经济线和商业线两种,线路.速度和价格都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线 ...

  8. linuxI/O重定向

    假设有这么一段python3程序: import sys ")sys.stderr.write("stderr1 ") 现在想要把程序的输出以及错误信息都存在文件中. 一 ...

  9. [osg]osgDB的加载机制,使用3DS插件做参考(转,整理现有osgDB资料)

    参考:http://blog.sina.com.cn/s/blog_7cdaf8b60102uzu3.html http://blog.csdn.net/wang15061955806/article ...

  10. 10046event vs 10053event做了哪些操作

    10046 event 告诉我们oracle做了哪些事情,做的怎么样.10053 event 告诉我们oracle优化器怎么想的,再给出成本最低的最终的优化方案,考虑了哪些执行计划拿了哪些统计信息