首页
社区
课程
招聘
Adobe Flash Player远程代码执行漏洞分析(CVE-2012-1535)
发表于: 2012-9-19 00:24 12339

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

2012-9-19 00:24
12339

written by h4ckmp
5e1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6f1u0A6L8W2k6#2L8q4)9J5k6f1y4G2L8b7`.`.
b8bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4c8Q4x3X3g2I4M7g2)9J5k6h3y4G2L8g2)9J5c8X3R3@1j5$3E0E0M7l9`.`.
欢迎讨论各种漏洞问题.

漏洞信息
发布日期: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
链接:
4f8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4W2j5%4g2F1K9h3q4Q4x3X3g2U0L8$3#2Q4x3V1k6S2k6s2k6A6M7$3!0J5K9h3g2K6i4K6u0r3y4e0l9J5z5o6g2Q4x3V1j5`.
ef2K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4W2j5%4g2F1K9h3q4Q4x3X3g2U0L8$3#2Q4x3V1k6S2k6s2k6A6M7$3!0J5K9h3g2K6i4K6u0r3y4e0l9J5z5o6k6Q4x3V1j5`.
*>

建议
厂商补丁:Adobe
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
32dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4V1L8$3u0W2i4K6u0W2j5$3!0E0i4K6u0r3M7%4g2H3M7r3!0J5N6q4)9J5c8Y4y4W2j5%4g2J5K9i4c8&6i4K6u0r3

漏洞介绍
使用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()触发漏洞.


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (13)
雪    币: 3274
活跃值: (2338)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
玩抢沙发再看。
2012-9-19 00:33
0
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
以前在BinVul的分析了,顺便发过来了.
2012-9-19 00:53
0
雪    币: 227
活跃值: (120)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4
你的ID暴露了。kernTableHandler函数代码好详细啊
2012-9-19 10:07
0
雪    币: 72
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
看了两篇楼主的分析报告,思路清晰,调试功底深厚啊。尤其对关键的几个函数功能的逆向很赞。
2012-9-19 10:12
0
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
哈哈. 这个也是马甲
2012-9-19 10:20
0
雪    币: 72
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
要相信google的搜索力量和无聊蛋疼人士流弊的人肉能力 ;-p
2012-9-19 10:54
0
雪    币: 403
活跃值: (330)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
8
这篇写得真好!虽然我也很喜欢古河的那篇:)
2012-9-19 11:12
0
雪    币: 284
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
做个标记!!!
2012-9-20 16:53
0
雪    币: 310
活跃值: (159)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
10
分析的不错.支持下
2012-9-20 19:32
0
雪    币: 363
活跃值: (338)
能力值: ( LV15,RANK:310 )
在线值:
发帖
回帖
粉丝
11
哈哈!h4ckmp的马甲暴露了!
2012-9-20 20:25
0
雪    币: 58
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
太赞了,逆向代码部分就是源码了.
2012-9-26 13:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
也就是说,网页中的flash广告,也是可能让人中着了>
2012-9-28 12:44
0
雪    币: 345
活跃值: (152)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
14
1535还是详细分析了一下的。在弄的时候也借鉴了上面的资料。不过,通过分析,发现这个漏洞不稳定,理论上推算下来只有25%的成功率。
2012-9-29 21:01
0
游客
登录 | 注册 方可回帖
返回