一个利用 CVE-2010-2883 漏洞的样本的简要分析

拿到一个 CVE-2010-2883 的样本:

 

file md5: 68F74C7272BF25B3592F9E46997779E2

file size: 763,188 bytes

 

这是一个 PDF 文件,其中包含很多的 stream,前面的 FlateDecode 编码的 stream 基本上都是一样的。

最后一个是有害的 ttf 文件,下图是解码前的 stream 结构:

2010091416440911.png

图 1

 

只是简单的 Flate 编码,我们可以通过如下的 ruby 脚本解码:

 

#!/usr/bin/env ruby

require 'zlib'

def main(args)
    args.each do |filename|
        begin
            f = File.new(filename, 'rb')
            ins = f.read()
            f.close
            
            zstream = Zlib::Inflate.new
            outs = zstream.inflate(ins)
            zstream.close
            
            outname = filename + '.out'
            f = File.new(outname, 'wb')
            f.write(outs)
            f.close
        rescue
            p "Failed to inflate file: "<<filename
        end
    end
end

if __FILE__ == $0
    main(ARGV)
end

 

好了,解压后得到如下数据:

2010091416471421.png

图 2

 

前12个字节是 TTCHeader,后面是 Table Record Entry 数组(个数位于 TTCHeader 结构中)。

TTCHeader 如下:

TypeNameDescription
Fixedsfnt version0x00010000 for version 1.0.
USHORTnumTablesNumber of tables.
USHORTsearchRange(Maximum power of 2 <= numTables) x 16.
USHORTentrySelectorLog2(maximum power of 2 <= numTables).
USHORTrangeShiftNumTables x 16-searchRange.

每一个 Table Record Entry 结构如下:

TypeNameDescription
ULONGtag4 -byte identifier.
ULONGcheckSumCheckSum for this table.
ULONGoffsetOffset from beginning of TrueType font file.
ULONGlengthLength of this table.

有一点需要注意的是,所有数据均为 Big-endian,所以,我们需要做转换。

CVE-2010-2883 的漏洞问题出在 SING 表段(数据如下,高亮选择部分):

2010091416552143.png

图 3

 

可见,SING 结构文件偏移: 0x11C,大小: 0x1DDF.

SING 的结构为:

2010091416583246.png

我们从 图2 可以看到,问题出在 uniqueName 上。

有兴趣的朋友可以调试一下,问题点位于 adobe reader 的 cooltype.dll 中。

转载于:https://www.cnblogs.com/jamiezz/archive/2010/09/14/1826089.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值