日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
& ~4 O* \1 q' g0 y7 I4 |- j% `4 Z' A3 q# \4 F" X
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。# f- O' B r' U, Q9 l$ z
3 c. ?* \# E. z$ L1 q$ d
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
6 v+ `* u2 K! E2 R1 T8 n- H, I q$ F( R. @1 T9 F6 V) q+ M
4 i2 T; z' Z7 E
7 H/ c7 D% O5 z0 Y J$ ^ `# pfunction at 0x10024C20 is responsible for dispatching ioctl codes:( N: W9 K6 [2 d
. T6 r0 c3 G) s2 e4 ~
.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) a0 U" B8 W7 S
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap* O5 S4 l) W, @. E
.text:10024C20
; w: Q* }% x. Y8 f6 u5 M4 _3 V.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch& }0 F, B, S, f' u6 V% r0 v
.text:10024C20 var_31 = byte ptr -31h
+ v j$ h1 c9 c4 U% y, s.text:10024C20 var_30 = dword ptr -30h- S U% t, J; d% K$ }8 @3 i
.text:10024C20 some_var = dword ptr -2Ch
# k+ w& B/ |* Q1 l.text:10024C20 var_28 = dword ptr -28h
' G, a2 `4 Y. [& T8 a.text:10024C20 var_24 = byte ptr -24h0 a% ?8 M6 S, Z$ r, C* Y- h
.text:10024C20 var_5 = byte ptr -5
" ?; w" }5 e- s* ?+ V! I.text:10024C20 var_4 = dword ptr -4
' C6 }+ g2 R+ ?) ]' b4 V.text:10024C20 ioctl = dword ptr 8
, O6 w- f Y- W: u/ ]4 m- b; [.text:10024C20 inbuff = dword ptr 0Ch
W7 t- B% B6 f4 u.text:10024C20 inbuff_size = dword ptr 10h5 a/ h8 Y I, Q9 v' U
.text:10024C20 outbuff_size = dword ptr 14h) `; C# U; O; w8 I
.text:10024C20 bytes_to_return = dword ptr 18h
+ k9 @2 {% a% j.text:10024C20
: z6 t* M: U7 u" y.text:10024C20 push ebp
9 L) I5 z: @* A1 t- x" k5 W6 A8 B4 M.text:10024C21 mov ebp, esp2 q* d1 A& j9 R8 j
.text:10024C23 sub esp, 3Ch9 `" B0 n& D3 \
.text:10024C26 mov eax, BugCheckParameter2. m& a$ k7 L4 J0 U" ?9 p' j
.text:10024C2B xor eax, ebp: {' t8 T! x- e
.text:10024C2D mov [ebp+var_4], eax8 L( K2 f: E; H- }
.text:10024C30 mov eax, [ebp+ioctl]
5 r5 U, s' |2 K, U$ L( _.text:10024C33 push ebx" X9 [' S- a6 g" U
.text:10024C34 mov ebx, [ebp+inbuff]+ l+ [: `5 s! h5 V: Y' m
.text:10024C37 push esi
4 c2 z' p" ?5 s6 k.text:10024C38 mov esi, [ebp+bytes_to_return]# g+ _4 Z# r3 G6 w
.text:10024C3B add eax, 7FFDDFD8h
/ W; P5 z" ~) s1 C.text:10024C40 push edi
; P2 U2 g4 i( P# `" q8 o.text:10024C41 mov edi, ecx
6 m: F) R! m4 N D5 t, Q.text:10024C43 mov [ebp+some_var], esi
& x8 m! U9 v3 m. s+ g) C.text:10024C46 mov [ebp+var_28], 05 \- ^4 o* O O! w! W, K' I
.text:10024C4D cmp eax, 0A4h ; switch 165 cases1 U; c5 {2 u9 j1 I; X
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
4 n. K# ^3 J3 R( v! v$ q9 F8 f* B.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
" C3 s# S Y" D.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump
- W7 R% g0 ]# H) a5 g2 G0 |1 \* w( D# O8 Q( t% N% d7 ^
[..]: m) V# M) l6 J' z* O. b7 p
+ h+ _; y$ t2 {
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!/ B6 M/ T% }3 P' U7 e9 R
. H' H& ?. ~; c.text:10024F5A lea ecx, [edi+958h]+ R6 R' L1 K% I# I0 B9 Q
.text:10024F60 call sub_100237B0
# p6 |6 |1 _ D' a7 Q/ F.text:10024F65 mov [ebp+some_var], eax
6 F' K! ^, ]) [5 n.text:10024F68 test eax, eax
$ H6 [) x0 j3 R8 B) v.text:10024F6A jnz short loc_10024F7D" C' Y. c: e0 r# n3 A2 F( o
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh L4 d4 `0 X( ^' L
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer' B% E; j; t# g5 Q
/ B3 k. P! r7 bnext in IofComplete request will be rep movsd at pointer, that is under attacker's control1 Z) n. e6 _$ w
, o# ^) S" v# }, M4 r [8 t; g
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. 7 w& _' A8 v( R0 u" d: Y, x
2 z: X+ F9 Z |3 g0 CSymantec表示在2月份的补丁包中修复该漏洞。0 U& S' F# x' }8 Z
0 T2 c) G1 ~# O( I1 R, ?/ a
相关阅读:
" o3 `! L0 ?0 |) Q, b) I" k6 W: u3 B! k! k, i1 n
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。/ H6 h% i" n5 ~! E
8 ] m. Y( M' @ |