漏洞信息详情
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
受影响实体
- Opera Opera_browser:7.53<!--2000-1-1-->
- Opera Opera_browser:6.1<!--2000-1-1-->
- Opera Opera_browser:6.1:Beta1<!--2000-1-1-->
- Opera Opera_browser:7.20:Beta7<!--2000-1-1-->
- Opera Opera_browser:7.03<!--2000-1-1-->
补丁
暂无
还没有评论,来说两句吧...