日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
! V, }* ~' S' z8 v. W# t/ E3 c2 A; J8 b1 x$ P1 [
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
) f& s6 C- ]5 ?' O0 i7 j2 `' r9 o* U5 h" `7 ~4 `- E# y9 r
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
+ s$ F( P, e" P: s3 y& t2 }
& d; Z; Q' q+ n4 A4 x. w$ |
2 _4 ]* F/ Y. D' |3 R- W8 ]/ A9 `9 D& P8 W
function at 0x10024C20 is responsible for dispatching ioctl codes:
! D. L* s) z; W! K: G7 o; w& c5 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)
' f! M1 l" c9 u& h y# b. H/ ^: a.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap4 B. z. |0 z" I
.text:10024C20
# ~; l: k; A: d( w2 L! Z3 i3 G0 T.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
( X7 l" U# ]: I% `2 C.text:10024C20 var_31 = byte ptr -31h# `* h1 g* r2 n( A' R
.text:10024C20 var_30 = dword ptr -30h
- g% d6 _! E! G6 J6 k- Z7 B+ y.text:10024C20 some_var = dword ptr -2Ch1 `, o0 t; h3 i: h/ b* h4 n
.text:10024C20 var_28 = dword ptr -28h' \6 `( I' I( R5 K+ x
.text:10024C20 var_24 = byte ptr -24h. W' {: |! q% L8 I
.text:10024C20 var_5 = byte ptr -5
5 n& d! R' \" L.text:10024C20 var_4 = dword ptr -4
$ c9 ]& ^3 ?' { }, z7 ^& _$ u.text:10024C20 ioctl = dword ptr 8: x/ y+ j+ u* ]$ H+ {- J+ h5 e+ y
.text:10024C20 inbuff = dword ptr 0Ch- r5 u s2 C% U U% [2 g
.text:10024C20 inbuff_size = dword ptr 10h
& g! f/ O- M, l3 D; ^1 Z( C.text:10024C20 outbuff_size = dword ptr 14h8 c. b& K9 D( C, Z6 B- F
.text:10024C20 bytes_to_return = dword ptr 18h
' K7 O t8 f3 R$ J( [8 E) h0 g.text:10024C20* O: ]1 y' u( M% h8 j( M7 H' e$ Q0 R
.text:10024C20 push ebp
9 b" }$ ~4 F, q, T: l.text:10024C21 mov ebp, esp% h# F& d; _7 m5 J, i+ m$ @
.text:10024C23 sub esp, 3Ch0 x% N/ |0 [2 I V' ~& B
.text:10024C26 mov eax, BugCheckParameter2
- i/ e* b: X2 S.text:10024C2B xor eax, ebp
$ B7 ?4 Q A* o' m/ ^( g.text:10024C2D mov [ebp+var_4], eax' s- k* @; @1 T4 @, t
.text:10024C30 mov eax, [ebp+ioctl]8 I. s5 U' d! V) ^
.text:10024C33 push ebx
4 g1 m7 @) Q8 F$ S.text:10024C34 mov ebx, [ebp+inbuff]
$ U8 E3 U/ M- j! A.text:10024C37 push esi' B. J$ \, X$ y' H7 a4 v" ~/ h
.text:10024C38 mov esi, [ebp+bytes_to_return]
3 d- n0 @0 @9 r! s/ h6 ~2 h.text:10024C3B add eax, 7FFDDFD8h; j$ U' ^0 T, J {2 ]+ ~( Z: g: j3 @
.text:10024C40 push edi& c, H) s8 {9 }) t9 h
.text:10024C41 mov edi, ecx+ Z3 K! `9 ]" t# M" z
.text:10024C43 mov [ebp+some_var], esi
. Z3 `# q% P: N7 ~.text:10024C46 mov [ebp+var_28], 0/ ]. ?$ B/ W' h4 j: ~" Y3 z( A& u
.text:10024C4D cmp eax, 0A4h ; switch 165 cases7 I$ E. a' C* }6 M
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
8 F$ Z. v* G5 a# K2 I.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
5 q$ [. R" O2 y+ R5 D" z.text:10024C5F jmp dsff_10025B50[eax*4] ; switch jump
0 @8 I3 G7 g0 U9 K. B' c& D
9 A% i1 W; J3 W' W[..]
0 L5 e3 |# n, }6 S' e5 N9 f) S& v+ M4 r
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!/ j. f1 x* D. U! S* p" v
/ B* g% N" b) N$ I; U2 O
.text:10024F5A lea ecx, [edi+958h]
6 W3 C; o+ n: y) g.text:10024F60 call sub_100237B07 b8 X4 ~5 n: [ H
.text:10024F65 mov [ebp+some_var], eax
* b+ ~4 ?) W Z+ a- [.text:10024F68 test eax, eax Q, x5 `% H. x+ I
.text:10024F6A jnz short loc_10024F7D y+ d7 ]% M/ _# x4 Z# Z
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh0 M# q/ U: u" X( T" L% }
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
" H9 |& g" }: A' F; o5 H: z; v! w5 m
next in IofComplete request will be rep movsd at pointer, that is under attacker's control5 J; [3 ?1 q9 r/ J) M( [& x
# ]; Q1 ^1 ^' `( P+ MDue 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. + o) F3 S* |. y" s! Z0 e, ~* Q
4 Y/ P* G0 \; u* Y3 pSymantec表示在2月份的补丁包中修复该漏洞。, }' M' K- k$ x; K X
# N9 G. o/ {- k9 j相关阅读:
: H# R+ x# E* r2 P# s; z) y' z
; {5 D% p [6 U y4 h/ A赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。% y( a: w# h5 p/ |7 K& c) D2 ^1 x
" e2 ^& C3 E. J! O+ X# m
|