java 静态分析_静态代码分析与代码质量安全

HeartBleed Bug

Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。

25340043bcef50fa4f8b49e9870aecf9.png

d1fe7ecb25d6cbe1074810c7b77bb2bf.png

cb81dc41b5860ea1a1a9263434f01e2c.png

代码静态分析

• 定义:在不执行计算机程序的条件下,对源代码进行分析,找出代码

缺陷

• 执行方式:一般配合静态程序分析工具进行

• 采用技术:数据流分析、机器学习、语义精简...

• 可检测类型:死锁,空指针,资源泄露,缓冲区溢出,安全漏洞,竞态条件...

• 优点:

• 能够检测所有的代码级别的可执行路径组合,快速,准确

• 直接面向源码,分析多种问题

• 在研发阶段开始找到并修复多种问题,节省大量时间/人力成本

• 注意:静态分析不是万能的,测试是持续的过程,非一劳永逸

存在问题

• 编译器警告: 保证类型安全

– 最初级的静态分析,检测规则简单

• 中间语言分析: 检测字节码( Byte Code )的缺陷,将其重新映射到真实代码中

– 在转换与映射过程中易造成精度丢失

• 高误报率:目前静态分析产品的误报率普遍在30%以上。

• 缺陷种类较少,找到的问题级别不高:多数为代码规范或低级缺陷,非实际Bug

– 如命名规范、类定义规范,最佳实践.....

• 易用性较低:基本上都是一次性的使用工具,无法与SDLC集成

– SCM集成:如SVN,CVS,Perforce,Git

– Bug Tracking:如Bugzilla,Jira

改进型的静态分析方案

基于Meta Compilation的静态分析:

• 由斯坦福大

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值