Opera Web浏览器样式表属性缓冲区溢出漏洞

漏洞信息详情

Opera Web浏览器样式表属性缓冲区溢出漏洞

漏洞简介

Opera是挪威欧朋(Opera Software)公司所开发的一款Web浏览器,它支持多窗口浏览、可定制用户界面等。

Opera实现上存在有符号型变量处理漏洞,远程攻击者可能利用此漏洞导致客户机上的Opera程序崩溃。

Opera在wcsncpy调用中存在有符号型变量比较错误,攻击者可以覆盖目标缓冲区后的大量内存,导致Opera崩溃。但很难利用这个漏洞执行任意代码,因为尽管拷贝了大量的内存,但只有很少的部分是可控的。

攻击者可以通过在样式表属性中指定超长的值来触发这个漏洞。以下是有漏洞函数的反汇编。请注意如果arg_length > 0x7FFFFFFF的话,就可以绕过在0x67B8CF0D的有符号型比较。

.text:67B8CEFE ; int __stdcall POC_CALL_TO_WCSNCPY_67B8CEFE(wchar_t *,int)

.text:67B8CEFE POC_CALL_TO_WCSNCPY_67B8CEFE proc near ; CODE XREF:

sub_67B4DB72+9D6 p

.text:67B8CEFE ;

_POC_CALL_WSCNCPY_67B8AE6E+1B4 p

.text:67B8CEFE

.text:67B8CEFE arg_pbuf_src= dword ptr 4.text:67B8CEFE arg_length= dword ptr 8

.text:67B8CEFE

.text:67B8CEFE mov eax, POC_pbuf_target

.text:67B8CF03 push ebx

.text:67B8CF04 push esi

.text:67B8CF05 push edi

.text:67B8CF06 mov edi, [esp+0Ch+arg_length]

.text:67B8CF0A mov esi, [eax+40h]

.text:67B8CF0D cmp edi, 4096

.text:67B8CF13 mov ebx, ecx

.text:67B8CF15 jl short loc_67B8CF1C ; signedness error

.text:67B8CF17 mov edi, 4095

.text:67B8CF1C

.text:67B8CF1C loc_67B8CF1C: ; CODE XREF:

POC_CALL_TO_WCSNCPY_67B8CEFE+17 j

.text:67B8CF1C push edi ; size_t

.text:67B8CF1D push [esp+10h+arg_pbuf_src] ; wchar_t *

.text:67B8CF21 push esi ; wchar_t *

.text:67B8CF22 call _wcsncpy

.text:67B8CF27 and word ptr [esi+edi*2], 0

.text:67B8CF2C add esp, 0Ch

.text:67B8CF2F mov ecx, ebx

.text:67B8CF31 push esi ; wchar_t *

.text:67B8CF32 call sub_67B8CD10

.text:67B8CF37 test ax, ax

.text:67B8CF3A jge short loc_67B8CF48

.text:67B8CF3C mov ecx, [ebx+5D0h]

.text:67B8CF42 call sub_67B8C7BC

.text:67B8CF47 inc eax

.text:67B8CF48

.text:67B8CF48 loc_67B8CF48: ; CODE XREF:

POC_CALL_TO_WCSNCPY_67B8CEFE+3C j

.text:67B8CF48 pop edi

.text:67B8CF49 pop esi

.text:67B8CF4A pop ebx

.text:67B8CF4B retn 8

.text:67B8CF4B POC_CALL_TO_WCSNCPY_67B8CEFE endp

尽管传送2GB的字符串看起来是不可能的,但由于在调用函数中的另一个漏洞,只需注入32k字符串就可扩展为很大的负值。

.text:67B8AF62 loc_67B8AF62: ; CODE XREF:

_POC_CALL_WSCNCPY_67B8AE6E+E2 j

.text:67B8AF62 movsx eax, [ebp+var_length_ovfl] ; here

the error occurs: short int length is sign extended

.text:67B8AF62 ; to a long

integer. the result is a large negative value if length

.text:67B8AF62 ; is negative.

.text:67B8AF66 jmp short loc_67B8AF5D

漏洞公告

目前厂商已经发布了升级补丁以修复这个安全问题,补丁下载链接:

http://www.opera.com

参考网址

来源: BID

名称: 17513

链接:http://www.securityfocus.com/bid/17513

来源: VUPEN

名称: ADV-2006-1354

链接:http://www.frsirt.com/english/advisories/2006/1354

来源: MISC

链接:http://www.sec-consult.com/259.html

来源: www.opera.com

链接:http://www.opera.com/docs/changelogs/windows/854/

来源: SECTRACK

名称: 1015912

链接:http://securitytracker.com/id?1015912

来源: FULLDISC

名称: 20060413 SEC Consult SA-20060314 :: Opera Browser CSS Attribute Integer Wrap / Buffer Overflow

链接:http://marc.theaimsgroup.com/?l=full-disclosure&m=114493114031891&w=2

来源: XF

名称: opera-wcsncpy-css-bo(25829)

链接:http://xforce.iss.net/xforce/xfdb/25829

来源: BUGTRAQ

名称: 20060413 SEC Consult SA-20060314 :: Opera Browser CSS Attribute Integer Wrap / Buffer Overflow

链接:http://www.securityfocus.com/archive/1/archive/1/430876/100/0/threaded

来源: GENTOO

名称: GLSA-200606-01

链接:http://security.gentoo.org/glsa/glsa-200606-01.xml

来源: SECUNIA

名称: 20117

链接:http://secunia.com/advisories/20117

来源: SUSE

名称: SUSE-SR:2006:010

链接:http://lists.suse.com/archive/suse-security-announce/2006-May/0004.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享