日前,国外安全研究组织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 ds ff_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 |