日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
% _4 W s! ^, W6 _( k$ W( h5 Z5 A" u7 ]" O2 l
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。; `; _1 L; a M% b$ P9 y, g
$ l- k. z L2 P
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:/ `5 w( Q. Q3 b4 t2 }% z
2 x' [( y* Q- _) ?% Q , S: U/ m# d, S" `
) @) l, X; ?2 F6 I; t# l* j: Z
function at 0x10024C20 is responsible for dispatching ioctl codes:
: a0 n& G8 t7 B2 m1 h( [, O. e" S c& b* Z* J% g+ R
.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)# E+ {! F4 `; f6 g E4 [
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap
! q1 ^! r0 I; L1 Q.text:10024C20( q; a" i8 G. ~3 q2 k
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
, E+ \1 C& `4 @.text:10024C20 var_31 = byte ptr -31h6 I& c/ H) `9 _
.text:10024C20 var_30 = dword ptr -30h8 N! s+ ]/ D& N7 O" O x
.text:10024C20 some_var = dword ptr -2Ch
3 G8 ^/ N8 ~1 W2 F3 m. d# @4 N0 p% G.text:10024C20 var_28 = dword ptr -28h/ q0 y {) b# {9 `
.text:10024C20 var_24 = byte ptr -24h
: h0 N0 |+ W6 Y. Y! W! [.text:10024C20 var_5 = byte ptr -5. i) l5 K! |3 w
.text:10024C20 var_4 = dword ptr -4" h8 ^2 M' d/ ]1 g% x/ ^* k
.text:10024C20 ioctl = dword ptr 8% ?1 V3 L3 L D- Y8 M! j0 {+ f
.text:10024C20 inbuff = dword ptr 0Ch
8 h7 ]3 {/ d" _+ x( R.text:10024C20 inbuff_size = dword ptr 10h5 K1 O) y* L# j+ d
.text:10024C20 outbuff_size = dword ptr 14h1 K0 x- S1 ]0 t* w
.text:10024C20 bytes_to_return = dword ptr 18h8 b0 Z! u) o5 ^
.text:10024C20( _1 y8 r0 d; L! q+ C# ?$ e3 g* {
.text:10024C20 push ebp
V! d, G5 S" w+ o% r) g.text:10024C21 mov ebp, esp k7 |0 s* l- f8 {: E6 R
.text:10024C23 sub esp, 3Ch- s ^9 A; Y' a, f- p
.text:10024C26 mov eax, BugCheckParameter2
7 q9 g( ?- t7 V: o" c.text:10024C2B xor eax, ebp" Z1 r/ L. [) r) d9 Q) H. ~" Y
.text:10024C2D mov [ebp+var_4], eax
5 T. m/ s8 Y7 `.text:10024C30 mov eax, [ebp+ioctl]
% N; q: ]6 ]% O1 b* T, k.text:10024C33 push ebx
" \: | L& z+ j$ R.text:10024C34 mov ebx, [ebp+inbuff]/ b S* _3 w, X: i5 m, o
.text:10024C37 push esi
# I$ {) t0 D8 }# K9 P. a2 M7 }.text:10024C38 mov esi, [ebp+bytes_to_return]+ e6 y& d& {# J; |' u! k) v' G
.text:10024C3B add eax, 7FFDDFD8h
( j: {$ q: T- l' @+ B- k9 g/ v: g.text:10024C40 push edi
' L+ v8 p% k, M. V9 m F.text:10024C41 mov edi, ecx
5 d! B0 ?7 J1 }% q# d.text:10024C43 mov [ebp+some_var], esi8 O+ F% b2 X E/ a' o: J8 ?
.text:10024C46 mov [ebp+var_28], 0
+ d7 h3 s& @. g% g; H.text:10024C4D cmp eax, 0A4h ; switch 165 cases7 u& B2 W. c, r# y% Y+ X. \0 S
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case4 h$ d, W4 U: F( A
.text:10024C58 movzx eax, ds:byte_10025BF0[eax] C/ e' R0 Y7 X# n$ e( `9 m5 S
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump: h; ?4 n* ?1 o) Y
( s2 b$ m4 z2 v2 ^, U$ ][..]% \+ M- i6 B- C' Y+ v: h# U/ ~4 q! l
- M( F9 ]. l: e; c7 ~9 |
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!7 m# o9 E) F9 w/ ^, P% y$ r
/ p9 S2 G# Q* }% ~6 L
.text:10024F5A lea ecx, [edi+958h]3 P! v+ q& [. X* X
.text:10024F60 call sub_100237B05 p# R: M; y5 M" H* E: L
.text:10024F65 mov [ebp+some_var], eax
O' q+ q$ N0 r3 ^: Q.text:10024F68 test eax, eax
$ l& N- \- O- [ m3 M4 C Q! o4 N5 J.text:10024F6A jnz short loc_10024F7D# D4 \2 T w/ q8 Z# |; M* B
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh* C6 q4 s$ N [' Q [% ` o. v
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
4 c* E2 A! P- J' S- {: U0 b+ c+ w r2 o+ \0 j2 H) T
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
, B9 A D2 ^ r' q; J. ^0 z- o% [& @2 W) }) e
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. - B" N. C0 x0 k/ n/ o
( _7 C( L; m, ]; u! cSymantec表示在2月份的补丁包中修复该漏洞。) h( Z3 D9 w( [ O# x6 |' n. e
/ d* i+ {; X$ g6 X. E
相关阅读:& g) D4 H; F. c) J$ y% L
% @$ v7 X* u# f# B- I赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。+ |4 K5 \9 n3 [$ l
9 w' f. |- c# c: U6 H, C% B
|