日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
) V) {# a1 s9 m, \% u% m
0 C0 X( i9 W/ C i5 W$ aSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
) e( ^5 z0 B! u& z9 D7 C$ ?+ v# C. b! u5 Q9 r
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
9 [3 d1 k! j, e" T1 a$ F" G- M3 q/ r/ X& z
. K8 f0 t7 R# ~4 K/ P! J; L
0 i5 N- L* ]- gfunction at 0x10024C20 is responsible for dispatching ioctl codes:/ A; }: _5 y$ n8 I4 h
6 T0 K* }$ w+ J, V2 o# N.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# Q4 \" f2 ]7 y
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap
! h7 G/ Y) W6 o+ k, n1 M, I.text:10024C20! h2 k% {. d& }7 a; B
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch( M6 M8 c, R$ [# x# _3 l& i" V
.text:10024C20 var_31 = byte ptr -31h7 ]- D! b4 v6 g1 H
.text:10024C20 var_30 = dword ptr -30h- g" `4 N5 S9 V. `" J) [
.text:10024C20 some_var = dword ptr -2Ch
3 p8 a: U% c1 v+ F3 z, [8 ?- Y.text:10024C20 var_28 = dword ptr -28h
1 m z( z& ^. A6 `- z.text:10024C20 var_24 = byte ptr -24h& j2 C5 u; H% I u/ d6 [4 I
.text:10024C20 var_5 = byte ptr -5
# Z3 o8 w/ u( s6 a. a2 X* i4 M/ y.text:10024C20 var_4 = dword ptr -4
2 `+ z$ ]9 Y \! |+ S9 m& k' s.text:10024C20 ioctl = dword ptr 8
- Q/ l3 g. n- B# j1 l; ~9 Y p.text:10024C20 inbuff = dword ptr 0Ch# F9 ?( m/ @$ j/ \
.text:10024C20 inbuff_size = dword ptr 10h
$ D5 G9 ]* I0 |# v' }6 }: E( z.text:10024C20 outbuff_size = dword ptr 14h
3 a- `( C; e! A.text:10024C20 bytes_to_return = dword ptr 18h
' f' O; U) ?4 J) w6 R% U/ Y.text:10024C20
) s9 i( R* j S/ _% b.text:10024C20 push ebp& D0 g0 h9 p2 d
.text:10024C21 mov ebp, esp
# O+ C1 ]" s- G. _1 F5 P H.text:10024C23 sub esp, 3Ch P" I9 K/ V0 t/ v; x
.text:10024C26 mov eax, BugCheckParameter2
6 P) P) {' S4 a: `: X.text:10024C2B xor eax, ebp
4 h2 k9 l+ Q- D- {5 u5 Y7 v+ N0 |.text:10024C2D mov [ebp+var_4], eax
r# T, d& Z% W0 f. q4 w.text:10024C30 mov eax, [ebp+ioctl], `$ i; X+ s3 t2 r/ B
.text:10024C33 push ebx
/ D% J8 p9 B" A/ o+ w.text:10024C34 mov ebx, [ebp+inbuff]
; X* k: g! `0 f& ~! B9 m8 k.text:10024C37 push esi
+ s: L& W5 A+ U/ e6 v0 z2 r.text:10024C38 mov esi, [ebp+bytes_to_return]
$ m# A! F# M9 d.text:10024C3B add eax, 7FFDDFD8h3 O E e3 x9 g# K" l# M' t/ p
.text:10024C40 push edi) f7 ?3 u# E! r5 q
.text:10024C41 mov edi, ecx
/ h4 [, G6 J3 K% _' e3 l.text:10024C43 mov [ebp+some_var], esi
1 G! t8 ?! H* u& \4 x1 f.text:10024C46 mov [ebp+var_28], 0$ R# o/ @8 Y2 t% q: `4 b
.text:10024C4D cmp eax, 0A4h ; switch 165 cases3 X9 k& i& ^$ ^( ]6 a5 R4 O
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
/ _! o: s: _- [$ \$ A. l.text:10024C58 movzx eax, ds:byte_10025BF0[eax]- [" A! Y/ ~; p) O. W
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump
( m2 k* F; u4 k, V U. b+ y
; G( ~% f- ^9 z* k[..]
( k+ W( D) ]' K; u Y3 D
) Y9 O0 B# N, D* f6 ^1 i/ u0x80022058 case: no check for outbuff_size == 0! <--- FLAW!( d* w+ m* |1 \6 X
' `: M' X1 [; o8 S: E% A1 }* w7 k0 B a.text:10024F5A lea ecx, [edi+958h]% p) V5 O9 G; S% ^
.text:10024F60 call sub_100237B0
/ l9 c- K4 H! ^: l! i; E" w.text:10024F65 mov [ebp+some_var], eax$ t9 G& X6 n6 P U# c. X
.text:10024F68 test eax, eax
8 `% a5 y! _# L" m% P* Y$ I! W.text:10024F6A jnz short loc_10024F7D
! M+ W. V- i. m+ G+ F. Z" f.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
4 s; q) s; r. S( T" |" h7 W.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer2 v9 s' \2 D5 P4 F3 W5 C
- a& b* K3 I3 T0 l
next in IofComplete request will be rep movsd at pointer, that is under attacker's control D- o+ c x! O3 i" q; O4 f$ `
?& X6 a& u% G" S3 M/ K$ sDue 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. . D+ S9 ~9 k% ^& G
% i( e1 L3 e" D& N3 ]
Symantec表示在2月份的补丁包中修复该漏洞。3 E; t; G7 K; m# z# Z
' ~$ B, N* ^" m$ Q相关阅读:9 G5 T4 R% o+ n3 l
3 r, u' Q$ N7 S- q3 i5 S赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。, i. {+ e( O2 Z- @& V0 ^( U
% j; Q8 C' T) n4 c' ` ]( }
|