日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。 D! x9 u* F% j, @- K( E# r2 ^$ M
7 N9 { G$ P/ @2 v5 Q. H. g
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。& i- v b' y8 L4 \: M U" q1 M
l8 u6 l" T( c3 S- k
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下: P: w4 k6 _* ^0 s( g1 {
4 t( e8 U4 `2 c8 r
1 h$ @! i. S3 Q9 l+ ]0 _# q% W/ F N% B" @( \# Q
function at 0x10024C20 is responsible for dispatching ioctl codes:
% |, ?6 q4 s: }6 t! D+ S3 a- _7 I( q' b1 o$ k. m5 X1 f
.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)1 H0 W/ n4 A7 F2 r0 t' L u
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap2 ^1 d0 l0 Q- F& K w
.text:10024C20- A; ~: v: k& h- D+ c. k
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch, ^7 J* D2 i* t
.text:10024C20 var_31 = byte ptr -31h
6 y7 }6 y: q# J0 E.text:10024C20 var_30 = dword ptr -30h
5 ~0 f# J4 [" R* y6 {/ Z* I; i# P.text:10024C20 some_var = dword ptr -2Ch
7 E L ]/ v1 l2 C/ d) A.text:10024C20 var_28 = dword ptr -28h2 B( Z5 f4 g- c7 {0 Z6 t
.text:10024C20 var_24 = byte ptr -24h
6 V0 _0 V% o* V* S.text:10024C20 var_5 = byte ptr -5
+ {' V! C: q) y" F6 v.text:10024C20 var_4 = dword ptr -4' B6 ]. K) R2 p0 v
.text:10024C20 ioctl = dword ptr 8
. F0 S# @# l" H.text:10024C20 inbuff = dword ptr 0Ch
3 L" Q" x2 N! R/ N.text:10024C20 inbuff_size = dword ptr 10h
/ J1 r/ g6 g* N" E5 H.text:10024C20 outbuff_size = dword ptr 14h
1 D8 F u5 K7 m* Y4 N6 y S.text:10024C20 bytes_to_return = dword ptr 18h
, s: ?, W8 d; c1 w.text:10024C20+ O4 ^$ V0 v6 u; ~ `0 |
.text:10024C20 push ebp
. Y0 @- G' d( o- s/ K.text:10024C21 mov ebp, esp
" J" s! [: Y) Y/ I% ?1 B.text:10024C23 sub esp, 3Ch! b8 W( U1 J" F& D5 J8 Q, Z
.text:10024C26 mov eax, BugCheckParameter2
. k: n4 C% c0 D- i* L4 B.text:10024C2B xor eax, ebp, Q$ Y0 w u! s( e7 M0 l/ x
.text:10024C2D mov [ebp+var_4], eax! J+ U9 c, N+ }# u8 b
.text:10024C30 mov eax, [ebp+ioctl], j8 {9 I+ X2 X7 G
.text:10024C33 push ebx/ x: F' E0 m' g
.text:10024C34 mov ebx, [ebp+inbuff]
3 [9 L+ `+ f& ? j1 S, O( U.text:10024C37 push esi! Z8 v! V, p3 K5 d6 v+ P
.text:10024C38 mov esi, [ebp+bytes_to_return]
0 S0 v# j$ R0 ~7 ?- B" b* V; ~( Q.text:10024C3B add eax, 7FFDDFD8h
& P+ I) j% z p; p.text:10024C40 push edi
. _" m1 D1 D8 R/ W% {4 {.text:10024C41 mov edi, ecx# _5 y; k& v X+ I9 c
.text:10024C43 mov [ebp+some_var], esi" x( d5 y, z, ]7 w, U$ B# w
.text:10024C46 mov [ebp+var_28], 08 Y' `, ~' n& b3 S) l5 a
.text:10024C4D cmp eax, 0A4h ; switch 165 cases
5 A. t! o, ^5 y7 V.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case+ S4 ~& @2 i+ J; |* j
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]9 \4 b8 p* [4 V# i9 Z m Y5 C0 d% V
.text:10024C5F jmp dsff_10025B50[eax*4] ; switch jump
- A- \( W2 g% C- w# u* Q- ~) S$ y, ]1 D, v$ k/ ` f# M o6 h6 j
[..]
( v. B5 i2 O9 m" [8 I6 O X% R
- H3 Z1 l% ^6 }8 m5 P0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
4 F, b ]$ r8 y8 f( P" F8 ^
. m* l$ M. j( ?) a- c5 ]9 L) @& m$ j.text:10024F5A lea ecx, [edi+958h]
: z+ g# G1 o& L+ Q! Q* R.text:10024F60 call sub_100237B05 @8 j/ X7 ~6 I8 J" d; f/ D8 R. f
.text:10024F65 mov [ebp+some_var], eax
6 P4 ?% N9 \ y( ~5 S9 Q.text:10024F68 test eax, eax
: C2 T1 o. U$ Z. M6 n.text:10024F6A jnz short loc_10024F7D
( c" ?4 R0 U `( n+ ?+ c; F.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
9 t& I' s% U/ Y7 T' F.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
; o* c' C; o" o+ A. }; ~% g' W6 p
# n0 |( {) N( l" ~next in IofComplete request will be rep movsd at pointer, that is under attacker's control* M# s+ ^5 q- N P
8 e5 K8 o- a# y' z; ^" 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. 8 Q" V# z! k3 J9 K9 |3 S% A2 n) c
4 w: ?% Z$ D) _" HSymantec表示在2月份的补丁包中修复该漏洞。& M/ {3 @" Z4 l, f( A1 C
3 b# P3 ]: T6 Q' N2 u8 q2 `- f4 J
相关阅读:
) ~9 R& K! n* `7 p
0 x- h% ]) A8 V8 c赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
. K: X: l( p/ l$ m
: C1 T* v+ |( I, B) Q0 E2 t |