Answers
我来班门弄斧一下,我所知道的软件漏洞挖掘方法主要有逆向分析技术以及Fuzz测试技术。
逆向分析技术是指通过分析汇编代码(或字节码)来理解其代码功能,如各接口的数据结构等,然后用高级语言重新描述这段代码,逆向推出原软件的思路,尽可能地将黑盒转化为白盒。
Fuzz 测试是一种特殊的黑盒测试, 通过输入随机构造的数据,使得软件出错甚至崩溃。Fuzz 测试的用例一般是大量的能引起软件产生异常的数据。Fuzz 工具触发异常并捕捉到该异常,记录当时系统的状况,包括异常的类型、错误报告、各寄存器的值、函数返回地址等。Fuzz 测试记录了大量的异常信息,为漏洞分析提供了原材料。 分析人员从这些信息中筛选出可能存在漏洞的信息, 并通过原测试用例再次进行测试、 分析, 最终确定漏洞是否存在。
另外还有一种常用手段就是基于补丁比对来挖掘漏洞,是一种更有针对性的漏洞挖掘技术,因为一般软件补丁没有被修复部分的代码是经过审计的,是安全的,而更新部分的代码更容易出现漏洞,这同样是一种非常有效的开发漏洞的手段。
用户作为软件的使用者,是软件漏洞攻击的最直接目标,最主要的防范措施就是应及时进行软件升级,以修补软件中存在的漏洞。
一起戳便便
answered 12 years, 11 months ago