日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。0 Y- Y# w, Z* D5 H1 O
3 w$ W, a+ u- u/ s# N8 g3 }* ISymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
7 E. I; g# `5 y7 @9 L+ K8 O0 |2 P/ l5 b3 R
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
* H1 C6 b0 t/ T& V; h
9 }- t: h6 U: ]' P& [ , N& C, \ n4 N8 ^
! j1 | t) P- C4 }6 _& Q. qfunction at 0x10024C20 is responsible for dispatching ioctl codes: H9 B# W8 s7 k8 t/ K1 G- E
* @: N9 y6 f0 F* q% m. ]) `
.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 V# z( p! n3 {- u4 k& h& N.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap8 u( [! z9 Q' u
.text:10024C20, \; A; Y& t G* n1 s
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
/ @8 C0 ~& W4 J, k* {. i: k.text:10024C20 var_31 = byte ptr -31h
$ R: y' d ^! Y3 Z; m.text:10024C20 var_30 = dword ptr -30h
9 N7 H, u# Q$ }3 ~3 Y; q5 J% N.text:10024C20 some_var = dword ptr -2Ch
$ B) Y* E! J; F, a1 `7 V" a m.text:10024C20 var_28 = dword ptr -28h
* o: y1 D0 x5 k$ v1 b3 P.text:10024C20 var_24 = byte ptr -24h
- z/ X7 c0 h, L: U& ]6 R. f.text:10024C20 var_5 = byte ptr -5" J; j2 ^# A6 s* w5 R H5 h
.text:10024C20 var_4 = dword ptr -4
! v) Y7 D( K. A: v7 O.text:10024C20 ioctl = dword ptr 8% b7 P3 i0 Z+ G* e- m$ |! r
.text:10024C20 inbuff = dword ptr 0Ch9 ?; d1 x, i: _4 h, ~. [$ x. T, F
.text:10024C20 inbuff_size = dword ptr 10h; [7 ]# X6 r3 Y; ?+ [/ i! R
.text:10024C20 outbuff_size = dword ptr 14h( W8 R7 f& r. \/ n& }
.text:10024C20 bytes_to_return = dword ptr 18h6 f2 \- Z2 {4 w; f1 W& v8 k
.text:10024C20
- \' t5 A. t k9 i.text:10024C20 push ebp4 f# a4 o# Z5 m" I' I, v
.text:10024C21 mov ebp, esp! _" Y# a+ k. ~2 i/ m! p
.text:10024C23 sub esp, 3Ch
% ]1 O( `; U' X& F' S.text:10024C26 mov eax, BugCheckParameter21 Y# S' S- t2 X; a
.text:10024C2B xor eax, ebp! S4 |3 u+ y) T: G" W5 R8 }
.text:10024C2D mov [ebp+var_4], eax
% ^; Z9 i7 K' r$ S: F5 ?.text:10024C30 mov eax, [ebp+ioctl] Z6 L/ M# j2 ?% y* n; ~! h
.text:10024C33 push ebx! W0 V Q/ A9 N* _* Y
.text:10024C34 mov ebx, [ebp+inbuff]
# o/ Q# {/ C( L+ f/ k/ u# I.text:10024C37 push esi
& K" i" S: u; j5 Q( z1 k6 [! g.text:10024C38 mov esi, [ebp+bytes_to_return]2 V! Q9 f2 N. E' g' Z
.text:10024C3B add eax, 7FFDDFD8h
. R( k$ f8 f5 t.text:10024C40 push edi
- E6 b4 ]5 D, w: m' U.text:10024C41 mov edi, ecx' D( L7 n7 r, |- }2 v
.text:10024C43 mov [ebp+some_var], esi5 ~ B) q! E' _: v/ S. g( {
.text:10024C46 mov [ebp+var_28], 04 m. m0 C. m# y5 f4 F, N
.text:10024C4D cmp eax, 0A4h ; switch 165 cases
- i: t' o* Z7 r8 U0 ?.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case/ b+ J4 p# D% a/ q4 p
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
3 v/ a: T5 Z7 H: r) k: g' l.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump" `' g4 \2 h; I
4 |* N9 Q: z, i* y" ^
[..]' @' y f( ^0 f# D, g
% }6 E/ g9 Y, g& j" t. x: ~6 G0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
; |/ Q: n0 o$ G& S! Q o' e6 P. e% N- M6 l
.text:10024F5A lea ecx, [edi+958h]
+ k j: L7 k; `+ N; S e" g( V.text:10024F60 call sub_100237B0. ^+ j" R* J& t9 [$ w5 k' w8 j
.text:10024F65 mov [ebp+some_var], eax6 T6 e+ ~ O9 R/ R) H/ V+ v
.text:10024F68 test eax, eax6 j% b9 M8 D" v1 @7 i: o
.text:10024F6A jnz short loc_10024F7D
; Z7 [+ }: }. Y.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh" ]7 }5 R, |' k$ ~6 z: l5 a- b( x
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer0 t2 A: Q5 D5 V( x& I4 _
: l2 l1 b+ T8 [) L% Snext in IofComplete request will be rep movsd at pointer, that is under attacker's control
. r7 j- l: d* Q. f9 E' f1 G& U! l1 x6 K# ]3 W' i' T
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. . N& e7 [: e' o
I8 U& i' q0 C( ~- Z/ p2 v5 PSymantec表示在2月份的补丁包中修复该漏洞。
! T0 N9 P+ |! e! r$ ?8 p; Y* W2 Q7 L! s( ~2 d' j9 @8 F- F8 Z8 o0 _' V
相关阅读:0 e7 a+ k4 `' c5 ]# r& Z3 ]
5 s8 \7 h5 k6 T% g( J3 c' B
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。% o3 I+ M7 ? ^* b3 Z/ W
9 B! C, s) r8 s$ p# e
|