written by h4ckmp http://www.BinVul.Com http://t.qq.com/h4ckmp 欢迎讨论各种漏洞问题.漏洞信息 发布日期:2012-08-14 更新日期:2012-08-16受影响系统: Adobe Flash Player 11.x描述: BUGTRAQ ID: 55009 CVE ID: CVE-2012-1535 Adobe Flash Player是一个集成的多媒体播放器。 Windows和Mac OS X平台上Adobe Flash Player 11.3.300.271之前版本,Linux平台上11.2.202.238之前版本,在实现上存在不明细节漏洞,可允许远程攻击者通过SWF内容执行任意代码或造成拒绝服务。 <*来源:Alexander Gavrun 链接: http://secunia.com/advisories/50285/ http://secunia.com/advisories/50286/ *>建议: 厂商补丁:Adobe 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: http://www.adobe.com/support/security/ 漏洞介绍 使用IE调用SWF,IE Crash信息如下 出错函数如下 查看SWF文件格式,文件包含DefineFont4 Tag,DefineFont4是在SWF10中添加的。DefineFont4仅支持新的Flash文本引擎,嵌入的字体数据是以CFF格式存储的。 本次漏洞产生原因为整型溢出, 恶意数据存在于FontData数据偏移0x8344中, 位于kern Table中。文件中出现的0x1000为version,0x10000000为nTables(subtables数量),正因为错误的nTables值导致了异常的产生漏洞分析 在TTF文件格式中有许多Table,其中有一处为'kern' Table,Adobe Flash Player在处理'kern' Table存在问题,也是本次漏洞的产生原因。程序中有牵扯到几个重要结构,在这里简单介绍其格式 'kern' Table struct kernTableInfo (sizeof=0x10) { +0 objBufAlloctor // 内存池对象 +4 kernStreamObj // kernStream对象 +8 nTables // kernTable中subtables数量 +C ptrSubtables // 存储subtables的buffer } subtable struct subtableInfo (sizeof=0x10) { +0 bKernFormatMask +4 start_offset // 当前table起始偏移 +8 data_offset // table中数据起始偏移 +C field_C } 进入kernTableHandler()函数内部,程序会读取'kern' Table中的nTables,并根据nTables申请内存,用于存放subtables 首先分配一块0x10的内存,存放kernTable信息 然后分配Size = nTable * 0x10 的内存,用于存放subtables,但由于nTables被恶意修改,致使nTable * 0x10产生整型溢出,分配了错误Size的内存 接下来程序会循环填充ptrSubtables,简单还原kernTableHandler函数代码 循环次数为nTables = 0x10000000,这个过程中会覆盖关键数据。在循环至第0x4F8次时,恰好覆盖至kernTableInfo.nTables,导致循环退出,之后进入vul_func()触发漏洞.
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)