HeartBleed Bug
Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。
代码静态分析
• 定义:在不执行计算机程序的条件下,对源代码进行分析,找出代码
缺陷
• 执行方式:一般配合静态程序分析工具进行
• 采用技术:数据流分析、机器学习、语义精简...
• 可检测类型:死锁,空指针,资源泄露,缓冲区溢出,安全漏洞,竞态条件...
• 优点:
• 能够检测所有的代码级别的可执行路径组合,快速,准确
• 直接面向源码,分析多种问题
• 在研发阶段开始找到并修复多种问题,节省大量时间/人力成本
• 注意:静态分析不是万能的,测试是持续的过程,非一劳永逸
存在问题
• 编译器警告: 保证类型安全
– 最初级的静态分析,检测规则简单
• 中间语言分析: 检测字节码( Byte Code )的缺陷,将其重新映射到真实代码中
– 在转换与映射过程中易造成精度丢失
• 高误报率:目前静态分析产品的误报率普遍在30%以上。
• 缺陷种类较少,找到的问题级别不高:多数为代码规范或低级缺陷,非实际Bug
– 如命名规范、类定义规范,最佳实践.....
• 易用性较低:基本上都是一次性的使用工具,无法与SDLC集成
– SCM集成:如SVN,CVS,Perforce,Git
– Bug Tracking:如Bugzilla,Jira
改进型的静态分析方案
基于Meta Compilation的静态分析:
• 由斯坦福大