漏洞挖掘技术

本文介绍了漏洞挖掘中的两种主要技术:动态测试中的Fuzz测试,如SPIKE,以及静态代码审计,包括Fortify、R.A.T.S等工具。Fuzz测试旨在引发软件崩溃,而静态分析侧重于源码层面的安全检查。SPIKE利用数据块理论进行Fuzz测试,并提供了API和数据结构。beSTORM作为静态代码审计工具,有助于发现潜在安全问题。
摘要由CSDN通过智能技术生成

漏洞挖掘概述

工业界主要采用Fuzz测试,Fuzz的主要目的是“crash”、“break”和“destroy”。

学术界则倾向于对源码进行静态分析,比如:数据流分析、类型验证系统、边界检验系统、状态机系统等。

一些通过源码审计检测漏洞的产品:

  • Fortify:在编译阶段扫描若干安全风险
  • R.A.T.S:分析C/C++语言的语法树,寻找存在潜在安全问题的函数调用
  • BEAM:使用数据流分析法
  • SLAM
  • Flaw Finder:Python语言开发
  • Prexis

动态测试技术

SPIKE

原理

数据内部之间的制约关系:如果增加某个数据域的长度,很可能需要同时修改另一个指示这个数据域长度的标志位。

引入了基于数据块的Fuzz理论,将数据的基本单位看作块,块可以是平行关系,也可以是嵌套关系:
在这里插入图片描述
为了构造Fuzz用例时仍能精确满足数据结构中这些相互制约的因素,实现了一套功能强大的API和数据结构用于定义数据块。

SPIKE运行在Linux下,使用时需要make文件。

示例

示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include "spike.h"

void main(){
   
	struct spike * p_spike = new_spike();     //生成结构体
	setspike(p_spike);                        //指定当前使用的
	s_string("Hello World!");                 //以字符串的形式向SPIKE结构体的缓冲区添加数据
	s_print_buffer();                         //用于以16进制形
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值