日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。 a; _) d7 i" Z
! H2 S ?( D5 ^) f* j) b
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。) h, \2 b$ Q9 M3 G, y8 @4 L
- |5 @& S: W, ?
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:' I- ?7 o, _5 o- d( k; V" q: L
2 _- t0 F9 w8 v& U5 a2 h5 q5 x
3 z0 r; @9 d. R1 ~- r- ?+ U! S
: j7 W! a# p: f+ i {. r4 [ afunction at 0x10024C20 is responsible for dispatching ioctl codes: E. @1 [ _: d: ]
/ M7 I7 C/ i5 x' V. V; i! J
.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)
l% @( G/ ^7 `% z$ x9 o) R9 N.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap
3 m6 d0 J- U& ^; x' @: q.text:10024C20
& a; k0 M2 J/ G/ K3 z.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch Z5 _/ I! `& M
.text:10024C20 var_31 = byte ptr -31h1 P- j% n6 O* C" r
.text:10024C20 var_30 = dword ptr -30h
& S9 }8 _+ x1 d, m.text:10024C20 some_var = dword ptr -2Ch
1 f7 d& `5 U# R$ f% e7 R E0 Y.text:10024C20 var_28 = dword ptr -28h% {! | d; p, x2 r9 S
.text:10024C20 var_24 = byte ptr -24h
" p3 b% i( ]/ V) v; M% h) A.text:10024C20 var_5 = byte ptr -5
' F @$ p6 K8 D% u.text:10024C20 var_4 = dword ptr -4" z! c$ C Q7 _4 D8 Y( U! Z
.text:10024C20 ioctl = dword ptr 8
4 L5 U F; }3 u7 D7 r) Z.text:10024C20 inbuff = dword ptr 0Ch$ c ~! x8 P* F
.text:10024C20 inbuff_size = dword ptr 10h
: `6 W2 g7 M. k, O.text:10024C20 outbuff_size = dword ptr 14h, W0 C4 Q) o o" Y
.text:10024C20 bytes_to_return = dword ptr 18h
; H' ]7 N4 j; [ L! \.text:10024C20
% I7 z' A* w) L, n.text:10024C20 push ebp5 C& z( b: L7 n- x
.text:10024C21 mov ebp, esp9 _' |, y% h- h0 u' k
.text:10024C23 sub esp, 3Ch Z/ S& t8 ~7 y" b E5 }' c
.text:10024C26 mov eax, BugCheckParameter2
8 \% M0 [" r2 B& c.text:10024C2B xor eax, ebp7 M; T3 b# C7 v% I" {7 O" v9 H
.text:10024C2D mov [ebp+var_4], eax) V E$ g4 J$ |, V
.text:10024C30 mov eax, [ebp+ioctl]9 d7 c3 `/ D: z$ R
.text:10024C33 push ebx/ U, _3 D( r A" w4 j7 M/ i
.text:10024C34 mov ebx, [ebp+inbuff]) ?9 V8 t; m" [; B4 g+ Q8 X
.text:10024C37 push esi* y8 `6 R& x, F
.text:10024C38 mov esi, [ebp+bytes_to_return]
$ A, s/ J' g+ A.text:10024C3B add eax, 7FFDDFD8h
4 u4 S. j8 H& n; r) r5 J9 n# [ y# }.text:10024C40 push edi) i1 g; R5 {9 g+ S- t9 z
.text:10024C41 mov edi, ecx- G U; [7 C) n" E5 I
.text:10024C43 mov [ebp+some_var], esi9 p/ s( T% M0 ?' Z; e+ _
.text:10024C46 mov [ebp+var_28], 08 t0 M" @4 q& h# L, ~4 G2 r" L9 o
.text:10024C4D cmp eax, 0A4h ; switch 165 cases
' {& z! e. @: r9 V( U* f3 e. T3 x.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case7 B! V7 `* O, d' G4 b7 z+ \
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
* x0 X- }$ A( r.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump# b) a7 i+ Z: `1 v& D7 o
& w; D, g: n8 V
[..]
' |* y4 L/ d" o/ ~5 Z5 W) i! ?- z9 m+ L9 e: W
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
* O( k: q$ T* q, Q# |" H8 Z5 R: V Q; x( K g) P6 g, k; a
.text:10024F5A lea ecx, [edi+958h]* E8 q( K( t# B @0 D, Q- X, x" a
.text:10024F60 call sub_100237B0# s* D0 n; ^! {! O! `$ U6 L0 s
.text:10024F65 mov [ebp+some_var], eax
$ m* `0 R& a; Y: u.text:10024F68 test eax, eax
. o' o$ w4 k& h) J" j7 G.text:10024F6A jnz short loc_10024F7D
$ Q1 r& g( f$ f E7 F7 ^.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh; B& c( v$ @; z
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
, d1 N) t o& p0 C! C+ P9 z* A! U6 v
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
! D8 `/ _1 }1 r1 p1 j4 k. Q- ~+ d; S- 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.
5 n% b* _, Y6 B) J
, }/ ^' Z+ {& J& WSymantec表示在2月份的补丁包中修复该漏洞。
( K& @5 i$ Q$ f' r7 w6 D+ C6 r! a2 \, q) x3 j/ K4 X* y9 X
相关阅读:! V5 L3 r- U$ ?; U7 Z
- v z. h7 O0 z% z
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。' V$ ?# f! _" j- ^
4 M- z, r( z1 B
|