安全研究

安全漏洞
Winamp MAKI脚本解析模块栈溢出漏洞

发布日期:2009-05-20
更新日期:2009-05-22

受影响系统:
Nullsoft Winamp < 5.552
不受影响系统:
Nullsoft Winamp 5.552
描述:
BUGTRAQ  ID: 35052
CVE(CAN) ID: CVE-2009-1831

Winamp是一款流行的媒体播放器,支持多种文件格式。

Winamp在解析.maki文件(一种编译过的脚本文件)时没有执行正确的类型赋值,可能导致缓冲区溢出。攻击者可以通过网页或下载对用户提供流行皮肤文件,该皮肤文件利用maki脚本在当前用户环境中执行任意代码。

Winamp的流行皮肤脚本引擎从.maki文件中读取字符串,字符串的格式如下(多字节值为little endian字节序列):

Offset Size Description
--------- ------ --------------------------------------
0x0000 4 Unknown (it seems to be a type code)
0x0004 2 Length (Y)
0x0006 Y Function name

当gen_ff.dll解析.maki文件时,会读取两个字节并执行符号扩展,这可能触发栈溢出。

以下显示的是本地缓冲区大小(0x10008):

.text:12094DAB var_10144= byte ptr -10144h
.text:12094DAB MultiByteStr= byte ptr -13ch

如果字符串大小大于或等于0x8000,edi就会为0xFFFFhhhh(这里0xhhhh是两个字节的输入):

.text:12094F62 loc_12094F62:
.text:12094F62 mov ax, [ebx]
.text:12094F65 movsx edi, ax ; sign extension
.text:12094F68 inc ebx
.text:12094F69 push edi ; Size
.text:12094F6A inc ebx
.text:12094F6B lea eax, [ebp+MultiByteStr]
.text:12094F71 push ebx ; Src
.text:12094F72 push eax ; Dst, buffer is located in the stack
.text:12094F73 call memmove

.text:120951E5 loc_120951E5:
.text:120951E5 mov edi, [ebx]
.text:120951E7 add ebx, 4
.text:120951EA mov ax, [ebx]
.text:120951ED movsx esi, ax ; sign extension
.text:120951F0 inc ebx
.text:120951F1 push esi ; Size
.text:120951F2 inc ebx
.text:120951F3 lea eax, [ebp+var_10144]
.text:120951F9 push ebx ; Src
.text:120951FA push eax ; Dst, buffer is located in the stack
.text:120951FB call memmove

<*来源:Monica Sojeong Hong
  
  链接:http://vrt-sourcefire.blogspot.com/2009/05/winamp-maki-parsing-vulnerability.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.milw0rm.com/exploits/8770
http://www.milw0rm.com/exploits/8772
http://www.milw0rm.com/exploits/8767
http://www.milw0rm.com/exploits/8783

建议:
厂商补丁:

Nullsoft
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.winamp.com/

浏览次数:2294
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障