找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2329|回复: 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。
) {3 W, B" K* O7 _! T7 E" g% f  W& |" \  x2 C) j5 a) e" W
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。! ~6 l2 u4 o# T0 F" k2 x
2 ~+ N9 ~; b  [& ]8 e) n7 {- h
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:) ^  [/ Y: d" N, q+ z2 m7 k

+ a' o' H0 }1 x- f9 ^- n# h* R 4 k% c* f6 ?' j; ?8 D. i

- w" q4 P# V/ j; n3 W" N3 Kfunction at 0x10024C20 is responsible for dispatching ioctl codes:
$ _; T) v  I  O
7 }. y, k# V  G0 [2 N( _: L.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)
4 D) g4 h% l& _, X$ F: f0 z/ Q.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
" c1 m; I" [% C: H2 n. ], `.text:10024C20
, Y, x" O5 I! P; I9 G.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
+ v4 Z/ x. |8 k8 s. Q, h.text:10024C20 var_31          = byte ptr -31h
  W4 N& `) u/ B4 x1 ].text:10024C20 var_30          = dword ptr -30h
& [  G3 U" M* [: b! `.text:10024C20 some_var        = dword ptr -2Ch
/ `3 ~% [9 A7 V% ?.text:10024C20 var_28          = dword ptr -28h
5 ?  U# E6 T- ], r.text:10024C20 var_24          = byte ptr -24h; c4 J5 H) V  f3 Z/ E* X
.text:10024C20 var_5           = byte ptr -5
2 J+ a( ~0 N" A' {5 Z.text:10024C20 var_4           = dword ptr -4
# }; L0 W& X& w+ f.text:10024C20 ioctl           = dword ptr  8
' r; F5 ^" s5 \& D2 t.text:10024C20 inbuff          = dword ptr  0Ch8 a2 O$ T4 w; Q* [4 W& ^! e
.text:10024C20 inbuff_size     = dword ptr  10h
. G3 J7 {3 D0 y0 ^( W" w5 _7 G.text:10024C20 outbuff_size    = dword ptr  14h
0 ?; v  {( k) o% l8 _.text:10024C20 bytes_to_return = dword ptr  18h" ~9 ]" B* T: R' e' S: m
.text:10024C20$ }$ W  c- ?$ r
.text:10024C20                 push    ebp
) K3 o+ P% w& p- C.text:10024C21                 mov     ebp, esp& Y& m9 e; C2 y- L
.text:10024C23                 sub     esp, 3Ch, s. ~- s. m' f* N6 S$ }* g
.text:10024C26                 mov     eax, BugCheckParameter2' w4 B' D& U, b* h+ ]9 V
.text:10024C2B                 xor     eax, ebp) O- ~' h) P7 ^
.text:10024C2D                 mov     [ebp+var_4], eax! L6 _  u1 |( `# Y( w7 W
.text:10024C30                 mov     eax, [ebp+ioctl]
6 J% p% P  S( K+ U$ {6 u5 A.text:10024C33                 push    ebx5 F2 S1 y0 I5 N
.text:10024C34                 mov     ebx, [ebp+inbuff]6 ~; Q6 `+ s) M0 k$ p( }" ~8 N
.text:10024C37                 push    esi2 U+ H* }# E, Q1 \5 g& @' k! a' P9 p  c
.text:10024C38                 mov     esi, [ebp+bytes_to_return]/ R8 g: K- b) b1 g; K% j6 e
.text:10024C3B                 add     eax, 7FFDDFD8h$ l' {* Z, U2 V# |. A6 }, |
.text:10024C40                 push    edi! U, e/ b5 I' @6 M# N' x$ b8 C
.text:10024C41                 mov     edi, ecx+ f6 z0 L  L( [: C* n( ]% w
.text:10024C43                 mov     [ebp+some_var], esi$ W& k" L- q/ w+ \2 }/ c
.text:10024C46                 mov     [ebp+var_28], 0! ^0 t2 r  k) z7 H! U( ]) ]- k
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases# D0 T3 c4 K+ S
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case1 i* N* W9 ~4 e5 W9 |
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]" X- ~/ q# ?3 S- l+ ^6 d
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump. }0 d' R- x; A$ U' Q7 \( l; W

( U7 t, p4 e4 u. Z7 ?  e  [[..]. a: q! [# N5 F

; J9 `0 j' y' C, a0x80022058 case: no check for outbuff_size == 0! <--- FLAW!1 Q; N4 t8 N- S, T8 U/ I& q2 P

9 ?  ~! g3 Q- k2 O% X.text:10024F5A                 lea     ecx, [edi+958h]
% C& Q" p6 z+ v- [3 k.text:10024F60                 call    sub_100237B08 E/ m* E# p; ?3 {% @5 @, w7 e7 M7 `5 G
.text:10024F65                 mov     [ebp+some_var], eax2 ^* Q$ ^3 g' x, b8 J9 z( h3 p1 A% C
.text:10024F68                 test    eax, eax) b* i; l7 s' M: M* W' q
.text:10024F6A                 jnz     short loc_10024F7D/ p; s0 f2 v" B7 y+ q
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
) i) e* f9 g) _- i  J$ a.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer& h6 V  L6 [% x+ N! A$ ~# _0 {" N
/ C3 M4 y  ]4 O
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
% h2 ]% O# k& @7 k& C4 ^/ x' C0 ], [, S1 t! 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.   d# t; t2 D$ K
7 Z+ I- l1 Y+ R6 v1 W9 z( G2 o  Z
Symantec表示在2月份的补丁包中修复该漏洞。
: E4 q" ?& S+ }3 E1 l7 n! ^0 _1 ~/ R8 ^6 X) Z4 M6 n8 |
相关阅读:$ u9 Q( o% q0 P* T

6 [# X. G8 R/ V/ A$ G赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
7 y0 V7 O+ X# u1 @3 E. Q! ?
" u' U: w4 ?: B; J
回复

使用道具 举报

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

本版积分规则

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