日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
7 p1 X4 [9 @& Y ?/ T5 `0 O P8 I6 }* V& f$ Y+ }# n
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
2 n; s' Z1 q8 {. w8 u* P# ]6 }# W7 X% I2 Y) k
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
! Q% j G: C) L& k; t
% k& i2 m3 P; ~' j1 Y: J
: l' D7 Y; d, }# `& T; M$ c
! H" c; u/ q+ h8 n0 \! o: w' s' C1 @function at 0x10024C20 is responsible for dispatching ioctl codes:
. ?0 ~" E3 h9 I) h
7 K9 g# R/ y9 P$ h) ~: S1 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)2 R4 v5 R4 R- h0 P+ k( c
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap! P4 p* v0 _2 }# ]( K
.text:10024C20
" z% A0 m' Y; p# u y! Y1 \.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch: o) {( V9 C4 U o+ Y! ~, v
.text:10024C20 var_31 = byte ptr -31h
( Y# b8 @; ?4 A6 A.text:10024C20 var_30 = dword ptr -30h. B- g( r/ S7 x! V7 G; u
.text:10024C20 some_var = dword ptr -2Ch
1 K$ R* i% m; u* E.text:10024C20 var_28 = dword ptr -28h2 h0 Y! J0 l1 j9 J
.text:10024C20 var_24 = byte ptr -24h
9 e2 B' G' V9 a: z5 Z2 Q.text:10024C20 var_5 = byte ptr -5# |: @. t1 [. t, @: j
.text:10024C20 var_4 = dword ptr -4
+ I( e C$ l- Q+ A: \.text:10024C20 ioctl = dword ptr 8
" U9 o, q% M0 I/ x/ Z/ J7 P.text:10024C20 inbuff = dword ptr 0Ch
5 n4 ~& u3 w, q5 w.text:10024C20 inbuff_size = dword ptr 10h
" C# J9 V8 s2 U+ I8 G- B$ {7 X.text:10024C20 outbuff_size = dword ptr 14h
6 Z0 B' U0 R" x0 P2 x.text:10024C20 bytes_to_return = dword ptr 18h8 C0 c9 g6 m! [2 y2 V# r
.text:10024C20( n: r! K; c m' @7 e
.text:10024C20 push ebp
" y$ v2 ]' X5 Y0 }9 X2 z/ [% W: o.text:10024C21 mov ebp, esp
* u! z. S. L4 V& E* @2 S3 I [4 r.text:10024C23 sub esp, 3Ch
0 J2 C ^2 H- R.text:10024C26 mov eax, BugCheckParameter2
]* m" `2 |% n0 i5 s.text:10024C2B xor eax, ebp
2 @: i" `# C4 C2 v- w7 C, P, C6 G2 f6 m.text:10024C2D mov [ebp+var_4], eax! t* G; R- y" l' @
.text:10024C30 mov eax, [ebp+ioctl]# _; }7 @3 y4 u4 @
.text:10024C33 push ebx
* _1 r# F9 j* R: f.text:10024C34 mov ebx, [ebp+inbuff]
4 w x, j! d2 z! }* d+ \3 }9 U.text:10024C37 push esi$ y1 X% D6 }; t
.text:10024C38 mov esi, [ebp+bytes_to_return]
* x- U7 B; I* v1 Q0 T.text:10024C3B add eax, 7FFDDFD8h
& O5 U' s- h& K/ C.text:10024C40 push edi
( t& W" j. i4 b.text:10024C41 mov edi, ecx
( g. q* K( O9 d, |.text:10024C43 mov [ebp+some_var], esi8 y9 i( j. n- t3 j9 ^
.text:10024C46 mov [ebp+var_28], 0& f( j' Y" \4 ]7 b9 }, ?0 Y
.text:10024C4D cmp eax, 0A4h ; switch 165 cases
" \8 P) b% Q" u: y.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
% i8 ^6 n/ [9 b: o1 j6 w; A.text:10024C58 movzx eax, ds:byte_10025BF0[eax]( H5 n7 i P7 x8 A$ n
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump3 Y1 l' R6 R& A8 `! W1 j: x) F5 b
& b1 G& U! y/ y6 z5 d5 z1 {& g
[..]
& J0 z2 C2 V2 p- ]$ G
2 C3 t6 T; l3 X4 x3 K# u0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
! m" V m1 h- A, D: }* {- N" d' n0 e6 r
.text:10024F5A lea ecx, [edi+958h]4 x7 S* p# F: B; }( Q* `; \% A$ i) p
.text:10024F60 call sub_100237B0- D9 n" k8 F! y3 T( ?' u4 G
.text:10024F65 mov [ebp+some_var], eax6 p$ C3 Q. g% p; |$ v
.text:10024F68 test eax, eax
4 g" F4 q7 K; \+ x5 z.text:10024F6A jnz short loc_10024F7D* \3 D% ~/ ]% h* e5 T; `% ~0 O9 K$ B
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh6 K5 c% o e' m* Q7 Y
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
% u6 Q+ { U4 r4 v( e$ P4 y* S' ?8 `, S9 E: h
next in IofComplete request will be rep movsd at pointer, that is under attacker's control0 k$ W. W2 p+ l; j9 O8 c: C- h
* h& X: Q. U: ^7 s% O' q+ O
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.
$ s. r$ u) i) J
! z7 J9 P, B4 W+ R7 W" G$ {9 o' tSymantec表示在2月份的补丁包中修复该漏洞。
# v' }( Z% Z5 |8 |
5 k! K( ]: q2 E, R: o相关阅读:
) P# Q4 t+ P5 e) b& t
2 m0 H4 _, \( U9 m# o6 L赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。( P. G2 W$ [+ o9 Z# E7 U2 H
: i# A1 x' G# `* K. j |