日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。, \5 x4 Y6 P! t
) _1 A% C! j4 q9 F
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
" C) x; {5 M! M: B, b0 S: x3 ^4 z5 s% [8 R8 S' x6 f
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:) ~+ o0 J5 N3 a3 |% R1 X
1 E S T! i1 k! w* B0 L; f0 S% t5 h
2 G1 E, p4 r7 P* c, W: T) [
, n T& Q5 \6 |" z7 J, A9 o8 yfunction at 0x10024C20 is responsible for dispatching ioctl codes:
" |; k) a2 ?# P$ Y- s# r) r
8 b" w' u# {' I; y, o! V- c.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)4 i$ y2 b1 a% @6 n6 s' M! D
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap7 M* O2 k" A5 N0 d4 Q
.text:10024C20
! y4 Q" d2 U/ x! A8 P3 r+ |/ m.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
( _* A& E4 `7 e$ q.text:10024C20 var_31 = byte ptr -31h
7 [8 T' o. H. O; V: d, I& c.text:10024C20 var_30 = dword ptr -30h8 B8 k2 w, p1 w
.text:10024C20 some_var = dword ptr -2Ch" a: g& d3 t3 n8 d- U" S" i$ ?! ?6 N
.text:10024C20 var_28 = dword ptr -28h
8 q7 Z0 v8 N9 c( o, G.text:10024C20 var_24 = byte ptr -24h
- d8 K/ E" Q, i2 L. T4 H k0 c" m.text:10024C20 var_5 = byte ptr -5; j( N0 g! z$ h9 h
.text:10024C20 var_4 = dword ptr -4
) k% |9 l/ c) l1 \( u.text:10024C20 ioctl = dword ptr 8
, j% C: {; | Y( p7 @% A4 I.text:10024C20 inbuff = dword ptr 0Ch; B# u9 y% m8 E9 b! n: n
.text:10024C20 inbuff_size = dword ptr 10h0 z7 _0 T4 l9 R) q6 j# ^
.text:10024C20 outbuff_size = dword ptr 14h+ k* J7 ^( b8 {: b* \, q
.text:10024C20 bytes_to_return = dword ptr 18h
+ P8 G, e: D% _.text:10024C202 {, b$ M L. B
.text:10024C20 push ebp7 |& I& y1 _) w
.text:10024C21 mov ebp, esp# ?$ W, }8 k8 }0 z2 R g4 i
.text:10024C23 sub esp, 3Ch
7 @0 M/ h8 r, }. H* V( b.text:10024C26 mov eax, BugCheckParameter2# Q q5 s' W8 G+ _9 h
.text:10024C2B xor eax, ebp
, @- m9 ^( k( g3 \ x# U& p, Q.text:10024C2D mov [ebp+var_4], eax
" y/ G8 B, g& _. M0 N+ E! Z8 Y.text:10024C30 mov eax, [ebp+ioctl]
6 Z! B& I) `, s; h; ^2 m' ~, W5 E.text:10024C33 push ebx5 H& ^1 N I+ y& @
.text:10024C34 mov ebx, [ebp+inbuff]7 q& w; Y) \$ R1 D% m$ T
.text:10024C37 push esi
8 c* ]. \4 Z' ]4 I& W.text:10024C38 mov esi, [ebp+bytes_to_return]
4 b% V) R8 A9 t- e" M.text:10024C3B add eax, 7FFDDFD8h7 ]7 J ~& d* v, L5 G; m* V
.text:10024C40 push edi
) q, E, A6 A& T. t/ q, D- j( V.text:10024C41 mov edi, ecx5 O6 b+ W6 h, q5 d C- s
.text:10024C43 mov [ebp+some_var], esi
6 B$ d$ W0 z5 H.text:10024C46 mov [ebp+var_28], 0
/ t; ]" A7 j- n! ]9 r" y.text:10024C4D cmp eax, 0A4h ; switch 165 cases
! \0 D! ~& O9 C.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case ~3 d6 v% i6 g1 Q- ?
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]! {3 d9 b$ g% V; K& s
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump8 y1 x3 s T1 q, E. |
1 h$ w2 f4 O6 P" v3 _/ Z[..]
& S$ N* Z# ]( V+ Y3 a% b2 N
. C. g# N4 ~8 i% L0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
2 k% V" J v0 k: n
. C M' D( Z+ L. b.text:10024F5A lea ecx, [edi+958h]
/ L, J& \) J. U6 o" k6 I.text:10024F60 call sub_100237B0( m' t5 }& E! C- m: m
.text:10024F65 mov [ebp+some_var], eax, h! g7 D. L. W- x1 Q
.text:10024F68 test eax, eax
, o1 A5 I2 Z& N8 J% M5 g.text:10024F6A jnz short loc_10024F7D
' e7 }+ K; P# d# G& k.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh# M: t! u/ I4 m* D+ n/ G
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
N) n! X5 [8 `1 b# K( ^0 _2 D' z2 j6 M# c& ?$ |8 p
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
/ G( b; p9 `6 G8 r5 k
1 I( Q( \+ k1 H5 aDue 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.
* l a% [* X$ r1 ^* {; o
2 c/ e0 [: e2 J( @6 o( f6 ESymantec表示在2月份的补丁包中修复该漏洞。* g8 a% Z; w3 X( C* A
. I0 e# q) t- c0 }) e% V, I; n" I. \7 A
相关阅读:- \2 J. S/ E2 W( _; [9 x' ]
: m( o* [. g( W' [; [/ c* }
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。! W8 d( n6 q+ A) v
7 L& H& y$ T% ]1 g& ^& O: [& Y
|