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

来源:岁月联盟 编辑:zhuzhu 时间:2009-09-16
Winamp MAKI脚本解析模块栈溢出漏洞 影响版本:
Nullsoft Winamp < 5.552漏洞描述:
BUGTRAQ  ID: 35052

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<*参考 
http://vrt-sourcefire.blogspot.com/2009/05/winamp-maki-parsing-vulnerability.html
*>
SEBUG安全建议:
 厂商补丁:

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

http://www.winamp.com/

图片内容