51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4012|回复: 0
打印 上一主题 下一主题

针对Fortify工具扫描出几大漏洞的解决办法总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-16 13:28:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
         Fortify是一款能扫描分析代码漏洞的强大工具,这里就不详细介绍,有兴趣了解的同学可以自己找些相关
资料来看看。

本人在实际工作中遇到以下漏洞,结合他人经验及自己的理解总结出一些相关解决方式,如有不足之处还望批
评指正。

1.System Information Leak

系统信息泄露:当系统数据或调试信息通过输出流或者日志功能流出程序时,就会发生信息泄漏。

看下面两段代码:


[java] view plain copy
</pre><pre name="code" class="java">out.println("("+exception.getMessage()+")");  


print.write(errorMessage);  
根据选定屏幕的配置,此信息可转储到屏幕,也可以直接发送到打印机。在某些情况下,版本信息正好可以准
确地告诉攻击者入侵此系统的可能性有多大。同样,错误消息也可以告诉攻击者入侵此系统的可能性究竟有多
大。例如,一个数据库错误消息可以揭示应用程序容易受到 SQL Injection 攻击。其他的错误消息可以揭示有关
该系统的更多间接线索。

解决方法:以上是Fortify的解释,个人认为如果没必要输出或是记入日志的系统信心就简单print.write("系统出
错");就行了,当然如果这样做了系统真的出错对维护来说确实是个困难。



2.Cross-site Scriptingersistent

基于存储的跨站脚本攻击(XSS): 传送到 Web 浏览器的恶意内容通常采用 JavaScript 代码片段的形式,但也
可能会包含一些 HTML、Flash 或者其他任意一种可以被浏览器执行的代码。基于 XSS 的攻击手段花样百出,几
乎是无穷无尽的,但通常它们都会包含传输给攻击者的私人数据(如 Cookie 或者其他会话信息)。在攻击者的
控制下,指引受害者进入恶意的网络内容;或者利用易受攻击的站点,对用户的机器进行其他恶意操作。

解决方法:其实这个xss攻击还是很好解决的,对web安全业务熟悉的同学可能知道ESAPI这个工具。

ESAPI很适合一个新的开发项目的安全组件,各版本的ESAPI包含如下基本设计:
具有一个安全接口集;
对每一种安全控制有一种参考实现;
对每一种安全控制可以有你自己的实现方法。
很多著名的大公司开始将ESAPI作为自己保障Web应用程序安全的手段,包括美国运通公司,Apache基金会,
世界银行等。

大家可以下载它的源码了解一下,其中有一个方法可以很简单的解决 这个基于存储的跨站脚本攻击,代码如下:

[java] view plain copy
String newStr=ESAPI.encoder().encoderForHTML(str);  
[java] view plain copy

3.Insecure Randomness
不安全的随机数:电脑是一种具有确定性的机器,因此不可能产生真正的随机性。伪随机数生成器 (PRNG)
近似于随机算法,始于一个能计算后续数值的种子。
PRNG 包括两种类型:统计学的 PRNG 和密码学的 PRNG。统计学的 PRNG 可提供有用的统计资料,但其输出
结果很容易预测,因此数据流容易复制。若安全性取决于生成数值的不可预测性,则此类型不适用。密码学的
PRNG 通过可产生较难预测的输出结果来应对这一问题。为了使加密数值更为安全,必须使攻击者根本无法、
或极不可能将它与真实的随机数加以区分。通常情况下,如果并未声明 PRNG 算法带有加密保护,那么它有
可能就是一个统计学的 PRNG,不应在对安全性要求较高的环境中使用,其中随着它的使用可能会导致严重的
漏洞(如易于猜测的密码、可预测的加密密钥、会话劫持攻击和 DNS 欺骗)。

解决方法:ESAPI的确是个不错的工具,使用它提供的方法可以规避该漏洞,代码很简单:


[java] view plain copy
var random=ESAPI.randomizer().getRandomInteger(0,100);  
[java] view plain copy
这里简单解释下,参数0和100可以随意设置,意思是生成0到100之间的随机数,如果你想随机数被预测到概率
更低,不妨将两个参数的差值设置足够大。  


结尾:其实解决Fortify工具提供的扫描出的漏洞是一件很头疼的事,程序有时候你根本无法猜测它在想什么,
常常我认为某种方法可以解决漏洞,但是Fortify并不认可。因此每一种漏洞的规避方法都是背后无数次实验
的结果,让人抓狂,但是没办法,工作还得继续......

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 20:46 , Processed in 0.064564 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表