[CNNVD]Adobe Reader和Acrobat 内存损坏漏洞(CNNVD-201308-479)

Adobe Reader和Acrobat都是美国奥多比(Adobe)公司的产品。Adobe Reader是一款免费的PDF文件阅读器,Acrobat是一款PDF文件编辑和转换工具。
        Adobe
Reader和Acrobat中存在安全漏洞。攻击者可利用该漏洞执行任意代码或造成拒绝服务(内存损坏)。以下版本受到影响:Adobe
Reader和Acrobat 9.5.5之前的9.x版本,10.1.7之前的10.x版本,11.0.03之前的11.x版本。

测试环境是Adobe Reader11+Windows 7。挂载调试器打开poc后程序异常退出,但是并未中断在调试器中,在任务管理器中发现Adobe Reader存在2个进程,于是启用子进程调试,重新加载,并中断在调试器中,信息如下。

eax= ebx= ecx=64f7f4ea edx=04bb1078 esi=3ef2cc90 edi=
eip=64f7e84b esp=0016e540 ebp=0016e564 iopl= nv up ei pl nz ac po cy
cs=001b ss= ds= es= fs=003b gs= efl=
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Adobe\Reader .\Reader\AcroRd32.dll -
AcroRd32!DllCanUnloadNow+0x150524:
64f7e84b 8b06 mov eax,dword ptr [esi] ds::3ef2cc90=????????

我们往前面看一下会发现esi来自ecx,而由于ecx就是this指针,这里怀疑是对象指针。再后面看一下又有call    dword ptr [eax+364h]。于是重新加载启用堆分配记录。如下

:> !heap -p -a esi
address 3eaeac90 found in
_DPH_HEAP_ROOT @
in free-ed allocation ( DPH_HEAP_BLOCK: VirtAddr VirtSize)
3136171c: 3eaea000 0b2 verifier!AVrfDebugPageHeapFree+0x000000c2
ntdll!RtlDebugFreeHeap+0x0000002f
77737aca ntdll!RtlpFreeHeap+0x0000005d
77702d68 ntdll!RtlFreeHeap+0x00000142
768af1ac kernel32!HeapFree+0x00000014
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\system32\MSVCR100.dll -
6b41016a MSVCR100!free+0x0000001c
627e1325 AcroRd32!CTJPEGLibInit+0x0000f6d5
6290c2af AcroRd32!DllCanUnloadNow+0x0010df88
628b3381 AcroRd32!DllCanUnloadNow+0x000b505a
6294723b AcroRd32!DllCanUnloadNow+0x00148f14
628980b1 AcroRd32!DllCanUnloadNow+0x00099d8a
62e54bbf AcroRd32!CTJPEGRotateOptions::operator=+0x001b0aa3
628980b1 AcroRd32!DllCanUnloadNow+0x00099d8a
62cfabca AcroRd32!CTJPEGRotateOptions::operator=+0x00056aae
62cfb275 AcroRd32!CTJPEGRotateOptions::operator=+0x00057159
62cf93be AcroRd32!CTJPEGRotateOptions::operator=+0x000552a2
62da391e AcroRd32!CTJPEGRotateOptions::operator=+0x000ff802
62da3b7c AcroRd32!CTJPEGRotateOptions::operator=+0x000ffa60
62da3eca AcroRd32!CTJPEGRotateOptions::operator=+0x000ffdae
*** WARNING: Unable to verify checksum for C:\Program Files\Adobe\Reader .\Reader\plug_ins\Annots.api
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Adobe\Reader .\Reader\plug_ins\Annots.api -
64989a3a Annots!PlugInMain+0x00078015
6498a692 Annots!PlugInMain+0x00078c6d
6498af61 Annots!PlugInMain+0x0007953c
*** WARNING: Unable to verify checksum for C:\Program Files\Adobe\Reader .\Reader\plug_ins\EScript.api
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Adobe\Reader .\Reader\plug_ins\EScript.api -
66e2a8e8 EScript!PlugInMain+0x000392b6
66dfff65 EScript!PlugInMain+0x0000e933
66e19749 EScript!PlugInMain+0x00028117
66e157ec EScript!PlugInMain+0x000241ba
66e378e6 EScript!PlugInMain+0x000462b4
66e3786c EScript!PlugInMain+0x0004623a
66e36951 EScript!PlugInMain+0x0004531f
66e3626c EScript!PlugInMain+0x00044c3a
66e342da EScript!PlugInMain+0x00042ca8
64989e26 Annots!PlugInMain+0x00078401

很明显是已经释放的内存块,那我们来看下这个内存块是在哪里分配的。通过对分配函数下断向前摸到了这块内存的分配记录

:> !heap -p -a 04878de8
address 04878de8 found in
_DPH_HEAP_ROOT @ 45f1000
in busy allocation ( DPH_HEAP_BLOCK: UserAddr UserSize - VirtAddr VirtSize)
48f05e4: 4878de8 -
77888e89 verifier!AVrfDebugPageHeapAllocate+0x00000229
77774ea6 ntdll!RtlDebugAllocateHeap+0x00000030
77737d96 ntdll!RtlpAllocateHeap+0x000000c4
777034ca ntdll!RtlAllocateHeap+0x0000023a
6b7709ee MSVCR100!unlock+0x000000ba
6b771e32 MSVCR100!calloc_crt+0x00000016
6b771d93 MSVCR100!mbtowc_l+0x000001be
6b771e16 MSVCR100!mbtowc_l+0x00000241
7770af24 ntdll!LdrpCallInitRoutine+0x00000014
7770b511 ntdll!LdrpInitializeThread+0x0000015b
7770b298 ntdll!_LdrpInitialize+0x000001ad
7770b2c5 ntdll!LdrInitializeThunk+0x00000010

最后再看一下重用时的操作

:> kp
ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
001fe028 64f7e0d2 AcroRd32!DllCanUnloadNow+0x150524
001fe04c 64f7f3e3 AcroRd32!DllCanUnloadNow+0x14fdab
001fe054 64f7d996 AcroRd32!DllCanUnloadNow+0x1510bc
001fe0a0 64f7c68c AcroRd32!DllCanUnloadNow+0x14f66f
001fe0d0 64f7c50e AcroRd32!DllCanUnloadNow+0x14e365
001fe160 64f7c206 AcroRd32!DllCanUnloadNow+0x14e1e7
001fe170 64f7c1a1 AcroRd32!DllCanUnloadNow+0x14dedf
001fe17c 64ed712e AcroRd32!DllCanUnloadNow+0x14de7a
001fe1a8 64f7ae0e AcroRd32!DllCanUnloadNow+0xa8e07
001fe1d8 64f76d1d AcroRd32!DllCanUnloadNow+0x14cae7
001fe1fc 64f76bf1 AcroRd32!DllCanUnloadNow+0x1489f6
001fe214 64f7434c AcroRd32!DllCanUnloadNow+0x1488ca
001fe2ac 64e2e440 AcroRd32!DllCanUnloadNow+0x146025
001fe2d8 64f73a64 AcroRd32!DllCanUnloadNow+0x119
001fe300 653d38ef AcroRd32!DllCanUnloadNow+0x14573d
001fe37c 653d3b7c AcroRd32!CTJPEGRotateOptions::operator=+0xff7d3
001fe390 653d3eca AcroRd32!CTJPEGRotateOptions::operator=+0xffa60
*** WARNING: Unable to verify checksum for C:\Program Files\Adobe\Reader .\Reader\plug_ins\Annots.api
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Adobe\Reader .\Reader\plug_ins\Annots.api -
001fe39c 63009a3a AcroRd32!CTJPEGRotateOptions::operator=+0xffdae
001fe3b0 6300a692 Annots!PlugInMain+0x78015
001fe3c8 6300af61 Annots!PlugInMain+0x78c6d

CVE-2013-3346Adobe Reader和Acrobat 内存损坏漏洞分析的更多相关文章

  1. Linux Kernel 本地内存损坏漏洞

    漏洞名称: Linux Kernel 本地内存损坏漏洞 CNNVD编号: CNNVD-201310-663 发布时间: 2013-11-05 更新时间: 2013-11-05 危害等级:    漏洞类 ...

  2. Linux kernel 内存损坏漏洞

    漏洞名称: Linux kernel 内存损坏漏洞 CNNVD编号: CNNVD-201310-143 发布时间: 2013-10-11 更新时间: 2013-10-11 危害等级: 中危   漏洞类 ...

  3. PHP ‘asn1_time_to_time_t’函数内存损坏漏洞

    漏洞名称: PHP ‘asn1_time_to_time_t’函数内存损坏漏洞 CNNVD编号: CNNVD-201312-348 发布时间: 2013-12-18 更新时间: 2013-12-18 ...

  4. Linux Kernel 释放后重用内存损坏漏洞

    漏洞名称: Linux Kernel 释放后重用内存损坏漏洞 CNNVD编号: CNNVD-201307-305 发布时间: 2013-07-18 更新时间: 2013-07-18 危害等级:    ...

  5. CVE-2010-3971 CSS内存破坏漏洞分析

    看了仙果版主的议题演讲,其中提到cve-2010-3971是一个浏览器漏洞利用中的里程碑.于是找来POC,尝试分析一下. 1.漏洞重现 XP SP3+ie6.0环境 poc如下: poc.htm &l ...

  6. CVE-2013-2729 Adobe Reader和Acrobat 数字错误漏洞

    这个洞是在论坛里看到的,感觉很有意思,来学习一下.个人感觉IE或者说是浏览器的洞和Adobe洞都是比较难调的,主要是有大量的类难以摸清之间的关系. 这个洞是一个整数溢出的洞,这个不是重点.重点是利用的 ...

  7. 安装vs2013以后,链接数据库总是报内存损坏,无法写入的错误

    安装vs2013以后,链接数据库总是报内存损坏,无法写入的错误 这个错误几个月以前解决过一次,但是到又碰到的时候,竟然完全忘记当时怎么解决的了, 看来上了年纪记忆真是越来越不行了... 解决方案很简单 ...

  8. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析

       Adobe Acrobat和Reader都是美国Adobe公司开发的非常流行的PDF文件阅读器. 基于Window和Mac OS X的Adobe Reader和Acrobat 9.4之前的9.x ...

  9. PHP Fileinfo组件越界内存破坏漏洞

    漏洞版本: PHP PHP 5.x 漏洞描述: BUGTRAQ ID: 66002 CVE(CAN) ID: CVE-2014-2270 PHP是一种HTML内嵌式的语言. PHP的file程序在解析 ...

随机推荐

  1. lumen 使用 laravel-cors 的时候, 使用 dd 函数的解决方法

    if (! function_exists('dd')) { /** * Dump the passed variables and end the script. * * @param mixed ...

  2. Hadoop基础-Protocol Buffers串行化与反串行化

    Hadoop基础-Protocol Buffers串行化与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过很多种序列化文件格式,比如python中的pickl ...

  3. Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...

  4. java基础-BigInteger类常用方法介绍

    java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...

  5. Java并发编程原理与实战二十六:闭锁 CountDownLatch

    关于闭锁 CountDownLatch 之前在网上看到过一篇举例非常形象的例子,但不记得是出自哪里了,所以这里就当自己再重新写一篇吧: 例子如下: 我们每天起早贪黑的上班,父母每天也要上班,有一天定了 ...

  6. 【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值

    [题意]n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui].B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数.当有一 ...

  7. Hadoop/Spark环境运行过程中可能遇到的问题或注意事项

    1.集群启动的时候,从节点的datanode没有启动 问题原因:从节点的tmp/data下的配置文件中的clusterID与主节点的tmp/data下的配置文件中的clusterID不一致,导致集群启 ...

  8. Python练习-一辆购物车的寂寞都是Alex的错

    Alex大神的购物车需求: 商品列表,选择商品后加入购物车,扣款显示余额,如余额不足则提示购买此商品还需充值的金额,退出后自动结账显示余额; # 编辑者:闫龙 #弱鸡购物车程序,需求:定义金额,选择商 ...

  9. pywin32记录备忘

    项目地址:http://sourceforge.net/projects/pywin32/ 文档地址:http://docs.activestate.com/activepython/2.7/pywi ...

  10. oggMonitor是什么

    goldengate monitor是一套监控goldengate的软件,如果安装的ogg比较多,使用goldengate monitor可以清楚的看见全部OGG的每个进程运行状态,以及整个OGG的架 ...