日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
/ S/ n3 r4 ?" w( v
9 |6 }, I) g, F6 U4 ASymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
9 A4 X9 d) y" m6 u" ~% i# B5 O
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
5 v2 w& F" { B; b2 i
& M; L' X1 p% T 9 p2 t5 `$ b. u8 q1 W( p/ b
; s$ p; n% y0 D1 pfunction at 0x10024C20 is responsible for dispatching ioctl codes:
' s' d* j. e; c& `( _0 n( L' d& A# u. {3 a8 ?
.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)& r+ U- I7 A# S8 H& V2 P9 W7 W
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap$ |" ?, @. a8 f8 b- p& ]
.text:10024C20
0 @2 W" ]- P; ?3 f8 W/ n& i( }$ ^.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch- d6 D. ~3 \ l* n, j T. b: s
.text:10024C20 var_31 = byte ptr -31h, T+ T. C& E6 J. @, r0 M
.text:10024C20 var_30 = dword ptr -30h' }* y2 G ?& ]8 c+ x* C8 q
.text:10024C20 some_var = dword ptr -2Ch
6 t; q9 ` g, E* Z* r7 _4 k" a.text:10024C20 var_28 = dword ptr -28h
+ l" u8 ]) O, @.text:10024C20 var_24 = byte ptr -24h; a3 |0 G6 {: A: F1 W3 ^8 B. Y
.text:10024C20 var_5 = byte ptr -5
6 V7 n4 } K( h5 s' \.text:10024C20 var_4 = dword ptr -4
) T) ~- {7 x- W3 x( G.text:10024C20 ioctl = dword ptr 8" o) O% a% K. Z; h w
.text:10024C20 inbuff = dword ptr 0Ch
( h6 h* l. Z; q6 |- _, x$ n! Z.text:10024C20 inbuff_size = dword ptr 10h' d9 G* t' T7 F' I- J. C
.text:10024C20 outbuff_size = dword ptr 14h9 g# q/ u' `" N8 I! p' c0 ?
.text:10024C20 bytes_to_return = dword ptr 18h+ ]0 A" N* I) ^/ l' [
.text:10024C20$ m9 j" t5 H8 P% C( [3 X
.text:10024C20 push ebp" e+ w5 `$ o6 q9 Y: N
.text:10024C21 mov ebp, esp8 e: L6 c) _8 d4 }. S# o1 _
.text:10024C23 sub esp, 3Ch, A7 y8 e+ o6 n; W
.text:10024C26 mov eax, BugCheckParameter2, I5 }8 B [) d% X* n0 F
.text:10024C2B xor eax, ebp
( k+ b* f# }& I.text:10024C2D mov [ebp+var_4], eax* b" n. |3 q! b: A" U+ V1 g
.text:10024C30 mov eax, [ebp+ioctl]4 n# N' D, n" i3 C& Z+ Z
.text:10024C33 push ebx
3 Z* b; b/ i5 Z; H0 b8 X4 `.text:10024C34 mov ebx, [ebp+inbuff]
- x7 B- c* p* ]2 k' e' `* @.text:10024C37 push esi
8 X' Y! e, ], B! s& E: D.text:10024C38 mov esi, [ebp+bytes_to_return]% Q+ e: C* u" K
.text:10024C3B add eax, 7FFDDFD8h
8 R1 N0 h; I. D.text:10024C40 push edi% P9 g3 p N5 v% R
.text:10024C41 mov edi, ecx3 [' Q4 S/ v, O K9 T3 \
.text:10024C43 mov [ebp+some_var], esi; y& c- _2 j; m8 K0 K% t
.text:10024C46 mov [ebp+var_28], 0+ }2 f# Z5 W" |: b
.text:10024C4D cmp eax, 0A4h ; switch 165 cases3 W. k- s" H6 A4 c, [
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
; v* o* b' p/ U.text:10024C58 movzx eax, ds:byte_10025BF0[eax]6 \' b8 h- p7 M% ]2 v
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump) w1 R) ?6 U1 d0 q G |
* N: D" |6 w& F[..]' { ^ \3 ?) Z F1 ~
/ J1 w; S! A+ X. W' W; s
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
! [* K. H' T. [3 C8 Y
1 P7 V$ ~8 N$ @, T9 l6 G! _" Z.text:10024F5A lea ecx, [edi+958h]
9 L W% s# ~% ].text:10024F60 call sub_100237B0 i8 y& l9 i' Y9 B a+ j; h
.text:10024F65 mov [ebp+some_var], eax
, V' V* u, d3 F! t f.text:10024F68 test eax, eax
9 ^ k$ s t# k3 l) @.text:10024F6A jnz short loc_10024F7D
3 W) ?2 B5 A& ~! }. e- }# x" G.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
! X5 X* M9 m9 n- d& t. b1 Q.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer5 o+ ~2 `: U3 l& p- |
8 X2 }9 S* q; e5 m* t- A
next in IofComplete request will be rep movsd at pointer, that is under attacker's control, u# w' n1 [% b$ W8 q
9 U: l- Y+ t |# HDue 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.
1 @$ Q3 }: F9 q6 ^9 i9 ?
; i3 p* \8 t+ ~Symantec表示在2月份的补丁包中修复该漏洞。
* @* c/ D9 R8 I, M e+ K
/ U, W4 W' h6 N2 F/ Y( `相关阅读:
. V( } K: Z( c% k0 h9 _# G0 Y+ N$ s
: ?. d, P8 x, n# S赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。) w: \) g" ]6 ?# [ p$ l; X/ x
1 V& S+ C: t3 B' v& y! | |