欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

Adobe Flash Player远程代码执行漏洞分析(CVE-2012-1535)

Adobe Flash Player远程代码执行漏洞分析(CVE-2012-1535)

written by h4ckmp
http://www.BinVul.Com
http://t.qq.com/h4ckmp
欢迎讨论各种漏洞问题.
漏洞信息
发布
更新
受影响系统:
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内容执行任意代码或造成拒绝服务。
<*

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()触发漏洞.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功