找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2205|回复: 0
打印 上一主题 下一主题

Symantec完整磁盘加密软件爆0day漏洞

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
" {0 K/ Y' v9 W/ U7 ?4 B9 W0 h" v* W; i- h
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。8 R; N: K7 B1 L' J3 y
+ c- d) R8 a7 v4 B* I$ y
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
) K  X9 A1 j7 l5 h$ r7 O- V# W% I4 ~0 Z% M1 t( r

& F; w" K0 ^; a7 @! y, o
. t: A- N7 C1 o2 s" V# f0 ifunction at 0x10024C20 is responsible for dispatching ioctl codes:
8 [9 o- g; P; F- ]7 d7 {
, W7 i, s* I+ @9 h+ ^.text:10024C20 ; int __thiscall ioctl_handler_deep(int this, int ioctl, PVOID inbuff, unsigned int inbuff_size, unsigned int outbuff_size, PDWORD bytes_to_return)
2 m. ~$ p: {, _  A2 C8 y9 @0 d4 J.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
/ l' M+ }/ e' y, C.text:10024C20
6 y" S+ R5 k" v7 ].text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
( `6 t0 \- y0 j$ ]- X. I  w2 T+ Y.text:10024C20 var_31          = byte ptr -31h5 B' G  G5 j- h, v9 m
.text:10024C20 var_30          = dword ptr -30h) t3 U3 E( @6 j, k, r1 p2 z, J
.text:10024C20 some_var        = dword ptr -2Ch
* Z- a1 A( ~: c/ B$ r9 X  a0 L.text:10024C20 var_28          = dword ptr -28h3 q7 u; t( U0 m# P* D* s4 L' i
.text:10024C20 var_24          = byte ptr -24h
) Z; z" }1 P; P' @.text:10024C20 var_5           = byte ptr -51 Y2 o$ c2 y+ a( m/ k- G0 v; E6 `
.text:10024C20 var_4           = dword ptr -4$ c6 k# f9 N1 p' R
.text:10024C20 ioctl           = dword ptr  8
$ y& ~- O, T+ e' F2 P.text:10024C20 inbuff          = dword ptr  0Ch
- ~/ g9 k4 i, e; N.text:10024C20 inbuff_size     = dword ptr  10h
' H% f2 j7 y" R. u/ }$ j1 R.text:10024C20 outbuff_size    = dword ptr  14h
3 _% Q9 U. l* W$ Y.text:10024C20 bytes_to_return = dword ptr  18h/ A" @. Z( X! p$ P
.text:10024C20
0 g& U' f* l2 D2 V+ f' A.text:10024C20                 push    ebp
1 M' G# t, G# C.text:10024C21                 mov     ebp, esp% K2 ?  M; M1 w
.text:10024C23                 sub     esp, 3Ch/ ?9 w: s" `, p
.text:10024C26                 mov     eax, BugCheckParameter2
, s0 S6 Y- ]7 ~5 `& |9 u8 ].text:10024C2B                 xor     eax, ebp
- w7 r+ k3 Z* g- p.text:10024C2D                 mov     [ebp+var_4], eax
. y' f' e6 b4 e3 [+ C.text:10024C30                 mov     eax, [ebp+ioctl]
, h4 f% V5 _/ [; U* I3 k.text:10024C33                 push    ebx
) g9 L* K5 o8 O2 c.text:10024C34                 mov     ebx, [ebp+inbuff]
* ~* D! i; b4 h  Z" L.text:10024C37                 push    esi
9 `7 l  ^' _" Y' T( X2 _' Y.text:10024C38                 mov     esi, [ebp+bytes_to_return]
; S; `) S' B1 d& s) O+ U.text:10024C3B                 add     eax, 7FFDDFD8h
4 h1 [# I+ C6 [6 D; v# n# \; g.text:10024C40                 push    edi
3 `* X( e$ O5 H; H.text:10024C41                 mov     edi, ecx; j, B4 C" R# j) q1 H, ]
.text:10024C43                 mov     [ebp+some_var], esi
6 f" q+ \. j1 z8 y9 W.text:10024C46                 mov     [ebp+var_28], 01 P  K' N+ n* R3 J% e
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases* e6 X9 W' \/ B" h" R0 W& z
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case% j. Y5 }% H1 E: a0 @7 t- l5 L' u
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
9 U: b% N8 f3 I- n0 V& I.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
) E5 w5 E# B3 r) `5 ^( a- c' @! W$ c$ V6 f
[..]
/ T" _+ u) Q: F2 `" y( h* y( B7 C- M6 M: v
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
# n4 W/ Z; N0 ?& Y9 b; Q' v+ {) Y' x& }- j: `
.text:10024F5A                 lea     ecx, [edi+958h]2 \, b7 F( d# |; H* D1 s. Z
.text:10024F60                 call    sub_100237B05 ^; ^! C6 x5 T: U& d! i$ B" a
.text:10024F65                 mov     [ebp+some_var], eax
) C, ~1 i* B( ~  l8 N; a3 n# S.text:10024F68                 test    eax, eax
5 {' g& h1 e/ `: e.text:10024F6A                 jnz     short loc_10024F7D
1 R4 G+ ^9 V) d* p/ P.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
) I, Y. }8 L- v$ G8 N6 Y9 }3 K.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer8 d9 _' [, ~" f) V
/ j6 ?6 S- F& P4 v; C4 l  R* u
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
4 Q) \+ ?( \1 ?: |8 C$ w; h7 T7 v; ]' d, h) k  V% F
Due the type of vulnerability (METHO_BUFFERED with output_size == 0) exploit works only on Winows XP/2k3, cause in later Windows OS I/O manager doesn't craft IRP if ioctl is METHOD_BUFFERED and output_size == 0. + b3 R8 g; `, E2 o2 K9 `

6 K9 G! Y4 V' s* x4 t" wSymantec表示在2月份的补丁包中修复该漏洞。+ ~+ M" X9 W$ u  ?4 H$ H

+ }0 r8 `9 Y' p相关阅读:% K$ l/ \2 o2 d" ]$ ^
0 _6 S8 n' T6 Z1 `4 c) f6 u
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。! U# C- z2 k) H- h3 V/ l2 M$ O

, J6 O- j$ h9 ?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表