日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
# `% e$ {, H* D! g [; H3 q6 [' ]$ F) \; O) e
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。$ }+ P# z2 e* Y* M* E- m
" a7 [7 H Z) s& f研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:9 [- Y; |1 M" B9 G8 g/ k
6 g# z9 ^, h3 z6 n# W1 X# H6 Y7 ^
Z! }+ Q/ ~8 ]! Y
: F4 y2 M( m8 Gfunction at 0x10024C20 is responsible for dispatching ioctl codes:( h8 N. o- `5 H& u: K: R
" g4 g! \& C& v% g& _2 D.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: F- _8 ?% k! Q( T
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap! L* |' _( ~; M8 P' `
.text:10024C20
' _, h+ d. J2 k, S.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch3 X1 a& u2 W9 `: F
.text:10024C20 var_31 = byte ptr -31h6 q. W3 A9 |; ~
.text:10024C20 var_30 = dword ptr -30h5 O7 N( r- `$ G1 {( G+ \3 f3 t3 ]
.text:10024C20 some_var = dword ptr -2Ch4 s, k) Y' e! k# F) b$ T5 g. z* l$ x
.text:10024C20 var_28 = dword ptr -28h
8 W/ [9 c- ]6 c4 b2 ? |) f6 }.text:10024C20 var_24 = byte ptr -24h
, R4 c6 M) ]6 L6 J$ K) |.text:10024C20 var_5 = byte ptr -5
! {. h# `+ z+ U. X2 k! o, G.text:10024C20 var_4 = dword ptr -41 V; {/ c: A8 n6 I: u
.text:10024C20 ioctl = dword ptr 8
: G' W# g0 N# Z! E.text:10024C20 inbuff = dword ptr 0Ch- m2 |: k" y6 u6 {$ t
.text:10024C20 inbuff_size = dword ptr 10h5 {& J. t3 X/ e0 a8 d# S) ~
.text:10024C20 outbuff_size = dword ptr 14h8 x9 ?8 O! r" m
.text:10024C20 bytes_to_return = dword ptr 18h- E O" Y/ ^) g3 n3 ^. x
.text:10024C208 k4 Y: S2 a+ s+ {" L. v3 k
.text:10024C20 push ebp5 s) c) }* C# f
.text:10024C21 mov ebp, esp
4 C4 {& H/ k6 f: D* `( T1 }/ |! Q.text:10024C23 sub esp, 3Ch
( j9 H- _3 Z) W7 o# g.text:10024C26 mov eax, BugCheckParameter2' H( ~9 E+ V. H& x: ^! e7 n8 u
.text:10024C2B xor eax, ebp' b$ @8 p" o5 ]4 U, a- Y
.text:10024C2D mov [ebp+var_4], eax6 ]: M- C$ k% Y, ^
.text:10024C30 mov eax, [ebp+ioctl]& ?- j, p* j: e: K) Q! }
.text:10024C33 push ebx9 S! t& I: |# T7 r
.text:10024C34 mov ebx, [ebp+inbuff]
1 N3 t' ^* H/ Y: Y: j.text:10024C37 push esi
" l: ~7 h' Z+ h w# a3 f' ~' w.text:10024C38 mov esi, [ebp+bytes_to_return]: `* K6 R: d# B# J
.text:10024C3B add eax, 7FFDDFD8h% S: u% ^3 D" B1 a: x
.text:10024C40 push edi1 s, s# r/ v7 p! L% X9 w
.text:10024C41 mov edi, ecx
( u& ~! ?% a5 m1 f.text:10024C43 mov [ebp+some_var], esi
& ]4 i2 b1 x4 H9 a+ b.text:10024C46 mov [ebp+var_28], 0
4 g# E. g2 _) [% n3 `4 ?.text:10024C4D cmp eax, 0A4h ; switch 165 cases) r) m9 o/ t* n
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case Q: ~2 x! z7 X+ l
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]5 v4 ]0 ~: Q4 f/ ?$ q7 y3 {' ^+ h6 h; F) @
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump
- n; S: ?& A3 ?: u" _( u7 ]) ]; |( }2 |" n8 P& S
[..]8 t3 |& @$ }& R! o3 H: {1 _: q
. c0 u! P+ C! M) W0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
0 u3 ?" t3 y2 p! s! x! [# @' x& C+ v( ^' R- J$ \
.text:10024F5A lea ecx, [edi+958h]$ p7 f$ e; m8 f, O: \
.text:10024F60 call sub_100237B0
^7 V$ M, a/ G; I1 o6 m.text:10024F65 mov [ebp+some_var], eax, w: w" x: Z# M. L
.text:10024F68 test eax, eax
6 R' A. @0 A1 x' b" H.text:10024F6A jnz short loc_10024F7D" G2 _9 u3 _- _! d! p6 [
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh7 _& b; G8 S5 d
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer/ t% {/ _- W* X8 G; c) O
5 h' J7 {# k' A& S/ l. D/ p9 Xnext in IofComplete request will be rep movsd at pointer, that is under attacker's control
5 A3 y8 {( v! T9 e. T( w7 T7 T5 l0 o5 D) V
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.
9 P! s7 Y1 m/ ^6 ~6 L7 I3 L1 j' k- G; p
Symantec表示在2月份的补丁包中修复该漏洞。, P4 }1 X' X7 @0 ]- W% Y8 O, Z2 O
6 E8 L/ \ {4 `# b; U% d! J/ ~( O相关阅读:
7 O* ^$ h$ T8 }% g6 w( L8 o, e8 ^8 D3 O }
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。6 J0 o# o# {1 w% O! U
# w8 {5 x2 n1 w, ~- Q6 L |