GNU binutils bfd/archive.c文件do_slurp_bsd_armap函数拒绝服务漏洞(CNVD-2016-06949)
CVE编号
N/A利用情况
暂无补丁情况
N/A披露时间
2016-09-12漏洞描述
GNU binutils是个二进制工具集,用于执行基本二进制文件操作。 GNU binutils-2.23以及之前版本bfd/archive.c文件中的do_slurp_bsd_armap未能充分检测parsed_size,导致整数溢出,绕过异常检查代码,访问越界,程序崩溃。解决建议
我们发现2.23之后的2.24并没有对此问题进行修复,但是由于堆内存分配的原因,在我们的实验机器上2.24版本在分配parsed_size为零长度的内存时,由于待分配内存空间中的字节全部是0x00。导致分配后使用libbfd.c中的bfd_getl32解析转换为无符号长整型ardata->symdef_count的结果还是0。这个长度作为图 139第927行循环界限不会像上面的分析那样导致后续的数组访问循环时越界。2.25和2.26版本已经修复了该问题。修复该漏洞最简单的方式是在_bfd_generic_read_ar_hdr_mag 函数中sscanf获取parsed_size变量值后立即对该值进行检查,当值为0时做异常处理,更为可靠的方法是在后面使用parsed_size分配内存空间之前进行合法值的上下界限制。
参考链接 |
|
---|---|
https://www.cnvd.org.cn/flaw/show/CNVD-2016-06949 |
- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论