找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2789|回复: 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。  D! x9 u* F% j, @- K( E# r2 ^$ M
7 N9 {  G$ P/ @2 v5 Q. H. g
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。& i- v  b' y8 L4 \: M  U" q1 M
  l8 u6 l" T( c3 S- k
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:  P: w4 k6 _* ^0 s( g1 {

4 t( e8 U4 `2 c8 r
1 h$ @! i. S3 Q9 l+ ]0 _# q% W/ F  N% B" @( \# Q
function at 0x10024C20 is responsible for dispatching ioctl codes:
% |, ?6 q4 s: }6 t! D+ S3 a- _7 I( q' b1 o$ k. m5 X1 f
.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)1 H0 W/ n4 A7 F2 r0 t' L  u
.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap2 ^1 d0 l0 Q- F& K  w
.text:10024C20- A; ~: v: k& h- D+ c. k
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch, ^7 J* D2 i* t
.text:10024C20 var_31          = byte ptr -31h
6 y7 }6 y: q# J0 E.text:10024C20 var_30          = dword ptr -30h
5 ~0 f# J4 [" R* y6 {/ Z* I; i# P.text:10024C20 some_var        = dword ptr -2Ch
7 E  L  ]/ v1 l2 C/ d) A.text:10024C20 var_28          = dword ptr -28h2 B( Z5 f4 g- c7 {0 Z6 t
.text:10024C20 var_24          = byte ptr -24h
6 V0 _0 V% o* V* S.text:10024C20 var_5           = byte ptr -5
+ {' V! C: q) y" F6 v.text:10024C20 var_4           = dword ptr -4' B6 ]. K) R2 p0 v
.text:10024C20 ioctl           = dword ptr  8
. F0 S# @# l" H.text:10024C20 inbuff          = dword ptr  0Ch
3 L" Q" x2 N! R/ N.text:10024C20 inbuff_size     = dword ptr  10h
/ J1 r/ g6 g* N" E5 H.text:10024C20 outbuff_size    = dword ptr  14h
1 D8 F  u5 K7 m* Y4 N6 y  S.text:10024C20 bytes_to_return = dword ptr  18h
, s: ?, W8 d; c1 w.text:10024C20+ O4 ^$ V0 v6 u; ~  `0 |
.text:10024C20                 push    ebp
. Y0 @- G' d( o- s/ K.text:10024C21                 mov     ebp, esp
" J" s! [: Y) Y/ I% ?1 B.text:10024C23                 sub     esp, 3Ch! b8 W( U1 J" F& D5 J8 Q, Z
.text:10024C26                 mov     eax, BugCheckParameter2
. k: n4 C% c0 D- i* L4 B.text:10024C2B                 xor     eax, ebp, Q$ Y0 w  u! s( e7 M0 l/ x
.text:10024C2D                 mov     [ebp+var_4], eax! J+ U9 c, N+ }# u8 b
.text:10024C30                 mov     eax, [ebp+ioctl], j8 {9 I+ X2 X7 G
.text:10024C33                 push    ebx/ x: F' E0 m' g
.text:10024C34                 mov     ebx, [ebp+inbuff]
3 [9 L+ `+ f& ?  j1 S, O( U.text:10024C37                 push    esi! Z8 v! V, p3 K5 d6 v+ P
.text:10024C38                 mov     esi, [ebp+bytes_to_return]
0 S0 v# j$ R0 ~7 ?- B" b* V; ~( Q.text:10024C3B                 add     eax, 7FFDDFD8h
& P+ I) j% z  p; p.text:10024C40                 push    edi
. _" m1 D1 D8 R/ W% {4 {.text:10024C41                 mov     edi, ecx# _5 y; k& v  X+ I9 c
.text:10024C43                 mov     [ebp+some_var], esi" x( d5 y, z, ]7 w, U$ B# w
.text:10024C46                 mov     [ebp+var_28], 08 Y' `, ~' n& b3 S) l5 a
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
5 A. t! o, ^5 y7 V.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case+ S4 ~& @2 i+ J; |* j
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]9 \4 b8 p* [4 V# i9 Z  m  Y5 C0 d% V
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
- A- \( W2 g% C- w# u* Q- ~) S$ y, ]1 D, v$ k/ `  f# M  o6 h6 j
[..]
( v. B5 i2 O9 m" [8 I6 O  X% R
- H3 Z1 l% ^6 }8 m5 P0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
4 F, b  ]$ r8 y8 f( P" F8 ^
. m* l$ M. j( ?) a- c5 ]9 L) @& m$ j.text:10024F5A                 lea     ecx, [edi+958h]
: z+ g# G1 o& L+ Q! Q* R.text:10024F60                 call    sub_100237B05 @8 j/ X7 ~6 I8 J" d; f/ D8 R. f
.text:10024F65                 mov     [ebp+some_var], eax
6 P4 ?% N9 \  y( ~5 S9 Q.text:10024F68                 test    eax, eax
: C2 T1 o. U$ Z. M6 n.text:10024F6A                 jnz     short loc_10024F7D
( c" ?4 R0 U  `( n+ ?+ c; F.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
9 t& I' s% U/ Y7 T' F.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
; o* c' C; o" o+ A. }; ~% g' W6 p
# n0 |( {) N( l" ~next in IofComplete request will be rep movsd at pointer, that is under attacker's control* M# s+ ^5 q- N  P
8 e5 K8 o- a# y' z; ^" 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. 8 Q" V# z! k3 J9 K9 |3 S% A2 n) c

4 w: ?% Z$ D) _" HSymantec表示在2月份的补丁包中修复该漏洞。& M/ {3 @" Z4 l, f( A1 C
3 b# P3 ]: T6 Q' N2 u8 q2 `- f4 J
相关阅读:
) ~9 R& K! n* `7 p
0 x- h% ]) A8 V8 c赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
. K: X: l( p/ l$ m
: C1 T* v+ |( I, B) Q0 E2 t
回复

使用道具 举报

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

本版积分规则

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