日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。9 g; J% [! H- e7 [
1 M6 C: z K7 M, JSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
8 R2 b% y9 r$ h5 s! I7 W3 T
$ K _3 U. R! B研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
/ K2 {1 V1 Q6 n2 o" v% Y
) s7 f2 P; p v1 U, q( M' J
# \5 _9 O+ Q( {+ V, s& X
( `" ]4 t$ j) K+ Z3 ~6 L( t$ [function at 0x10024C20 is responsible for dispatching ioctl codes:: I( ^, K/ @" ?5 a# G/ Z
; a7 t3 {. K( I: 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)
* j! H3 A- V5 V3 f+ ^! p! s# y.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap
4 U1 v' q& X/ c! d0 d9 K- H.text:10024C205 z1 S& ]$ G0 m9 D0 Q' q
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch9 c0 u8 A$ N' b6 L0 p; X* K* f
.text:10024C20 var_31 = byte ptr -31h
0 i( g3 }# A7 F! v.text:10024C20 var_30 = dword ptr -30h
- I( |) R; a x5 H9 x5 i.text:10024C20 some_var = dword ptr -2Ch
) J' B. M* M7 A5 g6 }2 T$ z.text:10024C20 var_28 = dword ptr -28h' H0 D9 g+ F: E; Q; C. K. J7 ~
.text:10024C20 var_24 = byte ptr -24h
# M- c9 z. b: A. z.text:10024C20 var_5 = byte ptr -50 E; v: ?7 ?! Q& {& }
.text:10024C20 var_4 = dword ptr -4
. m# h0 d# f8 Y/ c/ L: H& F% u.text:10024C20 ioctl = dword ptr 8: ?: _6 h1 Z$ x
.text:10024C20 inbuff = dword ptr 0Ch1 d. O, I/ Q' q9 x1 Q
.text:10024C20 inbuff_size = dword ptr 10h
* C( h F+ p) Z2 E.text:10024C20 outbuff_size = dword ptr 14h
1 X7 Q( Z" |4 A.text:10024C20 bytes_to_return = dword ptr 18h
5 d& K% d& U( y( e8 u2 s" t4 L.text:10024C20% X7 `8 [3 @* f% L% W& a0 A
.text:10024C20 push ebp0 o; H% D9 b: u* {% r& n
.text:10024C21 mov ebp, esp" f7 V8 ^2 C2 M8 i
.text:10024C23 sub esp, 3Ch
$ t5 G. x& G# A9 q7 l G6 |.text:10024C26 mov eax, BugCheckParameter2 H+ i, f ^2 u9 E2 O
.text:10024C2B xor eax, ebp$ N& H" |: K, k
.text:10024C2D mov [ebp+var_4], eax
' S7 k" ]* v4 ]# e.text:10024C30 mov eax, [ebp+ioctl]$ p4 R' T* z) p5 k. ~3 h ?* V3 ` x
.text:10024C33 push ebx
" S1 k; c% k. x.text:10024C34 mov ebx, [ebp+inbuff]! b- L }9 M1 P3 U7 p% |! A
.text:10024C37 push esi8 v- t7 L7 T7 @, ^
.text:10024C38 mov esi, [ebp+bytes_to_return]
+ J, _/ p+ L9 E: J' W7 Y.text:10024C3B add eax, 7FFDDFD8h
- g% F$ k+ T: Q.text:10024C40 push edi
8 M7 c6 F& C: q5 V. T! K.text:10024C41 mov edi, ecx" G9 }3 P9 Z+ U) A
.text:10024C43 mov [ebp+some_var], esi
8 ?8 m, m9 @: h& J8 I" j1 ^.text:10024C46 mov [ebp+var_28], 0. w X' X( k" ]/ U' E- U: a5 ]# b
.text:10024C4D cmp eax, 0A4h ; switch 165 cases/ r' c i x8 ]( V' N
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
$ Y2 }1 S6 c t0 r.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
) N$ Y9 |! P# j.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump
9 ^2 \0 x- e5 j0 Z' i% q* A1 d3 n, D6 M
[..]' s2 |# E: t* |) r
8 }8 S6 l8 J$ Y8 y, A1 B* B0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
5 Q( A8 Z! e" {! D3 C, g: n& X
3 i; p) y; ~& I4 X! F) P' f1 w.text:10024F5A lea ecx, [edi+958h]! z# n1 p! f# r# B6 t% {7 [6 R
.text:10024F60 call sub_100237B01 n% x2 ~* V9 J s0 T l
.text:10024F65 mov [ebp+some_var], eax' Y: S; X8 C# ~! e: n, @
.text:10024F68 test eax, eax' m. T$ _$ {3 G8 L8 | @
.text:10024F6A jnz short loc_10024F7D
. f A. P6 G5 q, C4 ~.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh1 m; t/ B% x6 U4 {1 u% q6 u0 L
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer3 {, {; |7 M" o9 A* d
1 w( O, f5 \ j6 B. T' anext in IofComplete request will be rep movsd at pointer, that is under attacker's control
$ \1 v& e; O( R/ `* e. z
6 ?2 e! T" S4 C; n4 p5 c) ~! xDue 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. . A/ o* ?: t! b& i
/ N0 b5 M/ r4 lSymantec表示在2月份的补丁包中修复该漏洞。
$ p! G: t% ^0 r, s2 k4 Q u6 k- ?9 x* @5 F$ t
相关阅读:
3 q1 |. N: D# j5 K2 d" `- Q) I3 X! g3 A& P8 V) g: |
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
& L8 L8 Y3 w3 W$ P- l* ]7 `( m# u0 @: c! |
|