日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。* u* @# ~. a' X$ I8 d: ^
: f/ b4 R1 I7 p9 G: o
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
$ x$ |0 e M% d, T) u" F Y# h8 `/ A T! P
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:$ b+ m; |. m# D0 ]# ]9 B! O
2 V, Q' p) x- t) J% F7 U
: z/ {3 W0 M0 k+ O2 N/ _9 n% e3 q+ z' I( T5 r
function at 0x10024C20 is responsible for dispatching ioctl codes:* X: f7 X' g! K2 [& z
4 w, j* P7 B! ?' ?# B9 X' A0 @$ Y.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)
3 N4 U, g2 c/ `+ i/ K3 I.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap, R2 A! D& u1 U4 |, \7 G
.text:10024C20
! y) y/ |3 h/ X; p.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
3 }9 k; I' ^& @: i.text:10024C20 var_31 = byte ptr -31h
3 ^- a! l W. D7 S9 q7 @.text:10024C20 var_30 = dword ptr -30h* W6 n* O# N8 h: {7 b1 r
.text:10024C20 some_var = dword ptr -2Ch
$ L0 q5 e, y) x0 f.text:10024C20 var_28 = dword ptr -28h' m2 l6 s/ R* {& A2 {
.text:10024C20 var_24 = byte ptr -24h! F+ l3 b% Z5 U
.text:10024C20 var_5 = byte ptr -58 C! X: e7 l% @$ J& r# m' H
.text:10024C20 var_4 = dword ptr -4
' c$ n; {' |! L P! j5 c.text:10024C20 ioctl = dword ptr 8' f2 t6 B" X$ }/ _) j
.text:10024C20 inbuff = dword ptr 0Ch
; l; e9 r% a, A, P.text:10024C20 inbuff_size = dword ptr 10h
& x6 y0 s! W' r" G8 j.text:10024C20 outbuff_size = dword ptr 14h! W. U' ?* X7 x, T7 d
.text:10024C20 bytes_to_return = dword ptr 18h
6 K: s$ D! y( |3 ~& N- t( A1 R.text:10024C20
* }; I% a$ J& [+ D7 H.text:10024C20 push ebp" p5 {" }* a: x7 f6 w+ }2 Y2 ` a
.text:10024C21 mov ebp, esp# s0 h5 B. U6 L; S _
.text:10024C23 sub esp, 3Ch: _* A4 @' V( \" K
.text:10024C26 mov eax, BugCheckParameter2( m1 V) {$ n$ B+ J7 R
.text:10024C2B xor eax, ebp
7 P# D& ]3 J I.text:10024C2D mov [ebp+var_4], eax
' B" L$ z' S/ G/ m.text:10024C30 mov eax, [ebp+ioctl]
; n1 M( {5 U5 D3 _* e.text:10024C33 push ebx3 U2 ^' W3 x8 G# q4 M+ [
.text:10024C34 mov ebx, [ebp+inbuff]3 N: S- P T9 V, ]4 O) q
.text:10024C37 push esi
, w1 o, X. g( t& A2 E9 P.text:10024C38 mov esi, [ebp+bytes_to_return]5 ?/ u8 h! |$ |& H6 k) u
.text:10024C3B add eax, 7FFDDFD8h5 b$ ?0 K% V8 _, Y X9 v- Q
.text:10024C40 push edi
; O# Y2 k( \- H$ @- q& e( u.text:10024C41 mov edi, ecx
& M C ]3 J" U* M i.text:10024C43 mov [ebp+some_var], esi- a& F. y t$ |* n. {3 B
.text:10024C46 mov [ebp+var_28], 04 B) |- S, H$ ^8 I5 V
.text:10024C4D cmp eax, 0A4h ; switch 165 cases
" Y) f3 v* j& A$ d.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case$ y3 A- R6 s5 a S) I k
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
, P* H( Y0 o4 b( _.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump `% u1 _+ i2 u1 `% ]1 H
4 R2 e' M1 i1 E0 E& Y1 t[..]# L' x4 n% h3 I* Z2 p& H3 \! e
7 k- L+ W& L6 Y2 i2 L+ D& |7 \
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!1 e* }5 D# ~, b: ?) D; f
( d) {/ H) e6 G6 p y# x, x2 t( o
.text:10024F5A lea ecx, [edi+958h]# T$ ?6 T- J `6 D: Z( A
.text:10024F60 call sub_100237B05 }3 i! h6 \- ?$ E8 @
.text:10024F65 mov [ebp+some_var], eax$ h; `# u2 u# c) M" v( f
.text:10024F68 test eax, eax; c( r6 m1 t, G$ c
.text:10024F6A jnz short loc_10024F7D* c- v/ Y& C' v, `7 Q& f7 V/ v
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
2 d& @" R: ]' i. H, ~- l.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer6 v' o9 ?2 T( m1 W. o7 P
7 ` I$ U0 a. i6 I" s! s1 P
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
" n3 E8 l \3 D E7 v4 w) H2 v; [0 `$ K6 F7 D' r
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.
% `( k% X+ J! U* K% y
+ W, d1 w) n( NSymantec表示在2月份的补丁包中修复该漏洞。$ q; ?$ R. C2 k1 E0 H
% M- d8 G% u$ q相关阅读:6 z! _4 O( I6 v; C" s
) a+ O8 H. Q5 o" h- J* ^+ p
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
5 B$ N4 x+ k: U, h2 ?8 v M/ m; y& L- g: [$ _9 f, e ~& w* c
|