继续对Fortify的漏洞进行总结,本篇主要针对 Privacy Violation(隐私泄露) 和 Null Dereference(空指针异常) 的漏洞进行总结,如下:

1.1、产生原因:

Privacy Violation 会在以下情况下发生:

1. 用户私人信息进入了程序。

2. 数据被写到了一个外部介质,例如控制台、file system 或网络。

示例 1以下代码包含了一个日志记录语句,该语句通过在日志文件中存储记录信息跟踪添加到数据库中的各条记录信息。在存储的其他数值中,getPassword() 函数可以返回一个由用户提供的、与用户帐号相关的明文密码。

pass =
getPassword();
...
dbmsLog.println(id+":"+pass+":"+type+":"+tstamp);

  在以上示例中,代码采用日志的形式将明文密码记录到了文件系统中。虽然许多开发人员认为文件系统是存储数据的安全位置,但这不是绝对的,特别是在涉及到隐私问题时。

1.2、修复方案:

  当安全和隐私的需要发生矛盾时,通常应优先考虑隐私的需要。为满足这一要求,同时又保证信息安全的需要,在项目上线时,应尽量将开发人员为方便开发时添加的一些log方法,out方法删除同时在操作系统时应在退出程序前清除所有私人信息

2、Null
Dereference(空指针异常)

2.1、产生原因:

  当违反程序员的一个或多个假设时,通常会出现 null 指针异常。如果程序明确将对象设置为null,但稍后却间接引用该对象,则将出现 dereference-after-store 错误。此错误通常是因为程序员在声明变量时将变量初始化为 null。

  大部分空指针问题只会引起一般的软件可靠性问题,但如果攻击者能够故意触发空指针间接引用,攻击者就有可能利用引发的异常绕过安全逻辑,或致使应用程序泄漏调试信息,这些信息对于规划随后的攻击十分有用。

示例:在下列代码中,程序员将变量 foo 明确设置为 null。稍后,程序员间接引用 foo,而未检查对象是否为 null 值。

Foo foo = null;
...
foo.setBar(val);
...
}

图2.1.1:引起Null Dereference漏洞的代码

2.2、修复方案:

  在间接引用可能为 null 值的对象之前,请务必仔细检查。如有可能,在处理资源的代码周围的包装器中纳入 null 检查,确保在所有情况下均会执行 null 检查,并最大限度地减少出错的地方。

图2.2.1:修复Null
Dereference漏洞后的代码

最新文章

  1. php计算字符串长度
  2. w3svc服务启动 不了,错误 1068:依赖服务或组件无法启动
  3. 大数据计算平台Spark内核解读
  4. Linux/Windows下如何退出telnet
  5. ecshop 活动-》红包
  6. U3D UGUI学习2 - Canvas
  7. Android开发之通过Intent启动其他App的Service
  8. 一个实例明白AutoResetEvent和 ManulResetEvent的用法
  9. codeforces 610B
  10. 【转】Ubuntu常用软件合集
  11. (1)前言——(10)jquery项目的历史(History of the jQuery project)
  12. Dump Checking
  13. C# SMTP发送邮件
  14. vue+webpack项目实际工作中需要生成一个配置文件供生产环境使用
  15. How to resolve the truncate/drop/delete/join hang issue in ADW
  16. maven入门(6)maven的生命周期
  17. C#面向对象基本概念总结
  18. java 垃圾回收总结(1)(转)
  19. Intellij IDEA创建git,maven的SpringMVC项目
  20. Maven:The parent project must have a packaging type of POM

热门文章

  1. Spring MVC JSON乱码问题
  2. JetBrainsIDEA-structure结构继承的图标说明
  3. Redis和Memcached的异同
  4. Java之变量和数据类型
  5. Redis哨兵(Sentinel)模式
  6. 【Luogu P2765】魔术球问题
  7. python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件
  8. Centos安装nodejs,并运行项目
  9. 在 SQL 中 快速 批量 插入数据的方法
  10. Java中遍历Map对象的4种方法