我正在学习使用afl和新手。我使用此cve-2015-1788示例,但失败了。
我这样做:
git clone https://github.com/openssl/openssl
cd openssl
git checkout OpenSSL_1_0_1
CC=afl-gcc ./config no-ec2m
make
openssl版本:
root@597a0b42b8c6:/src/openssl# ./apps/openssl version
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
OpenSSL 1.0.1 14 Mar 2012
然后我测试fuzzing_openssl.c
#include <stdio.h>
#include <stdint.h>
#include <stdio.h>
#include <assert.h>
#include <openssl/ec.h>
int main(int argc, char **argv)
{
unsigned char buf[1024];
assert(argc == 2);
FILE *f = fopen(argv[1], "rb");
assert(f);
size_t r = fread(buf, 1, 1024, f);
printf("read = %zu\n", r);
unsigned char *ptr = buf;
EC_GROUP *ecg = d2i_ECPKParameters(NULL, &ptr, r);
if (ecg)
EC_GROUP_free(ecg);
return 0;
}
我编译了
我连续运行了许多天,但是没有崩溃,我怀疑然后再运行
./fuzzing_openssl broken-cert.der
它输出
root@597a0b42b8c6:/src/fuzzing# ./fuzzing_openssl broken-cert.der
read = 598
它不花费很多时间,有什么问题吗?首先谢谢你。
对于CVE-2015-1788
在处理ECParameters结构时,OpenSSL输入无限 如果指定的曲线在特殊格式的二进制文件上则循环 多项式字段。
这可用于对任何以下系统执行拒绝服务 处理公钥,证书请求或证书。这个 包括TLS客户端和具有客户端身份验证的TLS服务器 启用。
此问题影响OpenSSL版本:1.0.2和1.0.1。最近的1.0.0和 0.9.8版本不受影响。 1.0.0d和0.9.8r及以下版本会受到影响。
OpenSSL 1.0.2用户应升级到1.0.2b OpenSSL 1.0.1用户 应该升级到1.0.1n OpenSSL 1.0.0d(及更低版本),用户应该 升级到1.0.0s OpenSSL 0.9.8r(及更低版本),用户应升级到 0.9.8zg
约瑟夫于2015年4月6日向OpenSSL报告了此问题 比尔·皮克斯顿该修复程序由OpenSSL的Andy Polyakov开发 开发团队。
http://jbp.io/2015/06/11/cve-2015-1788-openssl-binpoly-hang/