找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2893|回复: 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。5 T( x6 H. ~5 z+ _4 z7 ?6 ^0 Z
6 }# \( c# Z5 N- q( X
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。% J& _6 E1 {* s* B

  C/ Z& X) }( w' l# P0 r研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
' ~1 a- R* l$ k% b2 @$ C  I/ r! Z4 g- p# `3 ^( D1 T' B

) _+ M8 s2 |/ S+ v( [( I5 m' K, u6 B: f# b
function at 0x10024C20 is responsible for dispatching ioctl codes:
9 H" ~6 f7 Q6 T3 e% O# E0 u) z
% z1 }5 S3 |: ]5 }2 Y$ j  O' _.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)
8 x- R8 B! p9 a  C: h7 `.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap. e: H! @/ P  C( W+ J5 Z
.text:10024C20
2 O( L) D, i! b% e! r.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
! M! a. j( g/ n* h( ?# W; e.text:10024C20 var_31          = byte ptr -31h" V; w% H" H% t% w
.text:10024C20 var_30          = dword ptr -30h
8 z# a% Q7 h2 H5 @.text:10024C20 some_var        = dword ptr -2Ch, g  B0 @; {8 U. l
.text:10024C20 var_28          = dword ptr -28h2 f9 a5 u& f5 I" e: [9 B
.text:10024C20 var_24          = byte ptr -24h. o7 Z! d, [) i; r; S5 d9 J
.text:10024C20 var_5           = byte ptr -5
7 F) R! }: N' \.text:10024C20 var_4           = dword ptr -4
5 k* G( B5 @3 [( M.text:10024C20 ioctl           = dword ptr  8
+ j4 p3 u) [3 A/ G0 M& Z.text:10024C20 inbuff          = dword ptr  0Ch! \& Z( \4 `+ G4 x' c0 S& H& ~
.text:10024C20 inbuff_size     = dword ptr  10h
8 }+ G7 R5 b) [/ k- M. ^  ^.text:10024C20 outbuff_size    = dword ptr  14h* f$ w6 l/ o) e' P' D8 p3 v( V  ?  U
.text:10024C20 bytes_to_return = dword ptr  18h
% |: i$ C/ \( Y4 Q7 [. `.text:10024C20
6 j! C1 w# s6 G# ^" S3 V.text:10024C20                 push    ebp
% O5 g! J0 X7 P) T) {" B.text:10024C21                 mov     ebp, esp
1 z' |% N% V( Y. I; S! @( ].text:10024C23                 sub     esp, 3Ch( ^8 `: x" x% j- ~
.text:10024C26                 mov     eax, BugCheckParameter2  N( x: h5 ?* {/ D4 k9 m  \( g  [
.text:10024C2B                 xor     eax, ebp
% b& p4 i) A% Y& i$ @/ ?# e.text:10024C2D                 mov     [ebp+var_4], eax% d( [; {$ z. K% C
.text:10024C30                 mov     eax, [ebp+ioctl]
& J' I( G# b, l" x9 Z4 {.text:10024C33                 push    ebx! ?9 Q) s2 F9 p2 Y* k7 T- d# ~
.text:10024C34                 mov     ebx, [ebp+inbuff]! F( C- K8 s5 J0 ]& x. k
.text:10024C37                 push    esi5 w5 s1 {* D1 o+ O
.text:10024C38                 mov     esi, [ebp+bytes_to_return]1 k5 {# v8 m% s( q6 b
.text:10024C3B                 add     eax, 7FFDDFD8h  m: o- l! \3 V' f9 F
.text:10024C40                 push    edi
1 W& E5 O) t$ N& d.text:10024C41                 mov     edi, ecx- c+ i+ c( n# m% x# U: P5 A
.text:10024C43                 mov     [ebp+some_var], esi
7 ^; R8 v( Z0 _) }: }.text:10024C46                 mov     [ebp+var_28], 0
3 y+ i  B/ B* S9 {  \2 o) S.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases3 C( r  q3 Q& |$ }7 l+ S
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
5 S! [/ M2 G4 y8 {/ q1 l) V1 j.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
' O  z+ v+ z& j8 B5 m7 j% z.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
9 S# I( z  N2 {, g' g
& \9 }4 C( n( I/ c1 F[..]9 q- L! W/ a/ _' f2 D* [- i
1 h# Z. A" b% \3 |
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!. R- m" n$ i3 O7 ~* f
' Y6 a5 f$ w3 w2 t. f+ ]' }
.text:10024F5A                 lea     ecx, [edi+958h]2 P9 ?: M! O1 a+ m4 M
.text:10024F60                 call    sub_100237B0
% q; l) u# S$ w.text:10024F65                 mov     [ebp+some_var], eax9 `; N7 z: D% U
.text:10024F68                 test    eax, eax
/ v4 ~) f9 I2 i.text:10024F6A                 jnz     short loc_10024F7D
& d- }6 b. R8 H' K* d5 m# u.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
0 g0 ~/ v6 r# B8 d+ B/ q& r6 n.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
1 {: C  K3 ]# M3 a. b5 e- F. H+ k, ]0 r! N1 _4 ]$ H
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
" c( q1 `3 ~5 _' S- h$ C& W/ c5 N3 p. K0 u" ]) V
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. ! c: ^/ w0 v( i! F( z2 p* |, Y
% E. ]" m: o8 }$ |
Symantec表示在2月份的补丁包中修复该漏洞。
* o, |& ~- r& c: u0 L6 y  s; S7 k. s7 Z
相关阅读:
$ c# H; O; m2 z& C: e9 B4 V* E$ Q3 [3 e5 p$ A
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。  H1 g% m$ e. u* E% u' k
( N' H( P' N* k1 z5 _
回复

使用道具 举报

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

本版积分规则

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