标题: Symantec完整磁盘加密软件爆0day漏洞 [打印本页] 作者: admin 时间: 2013-1-11 21:11 标题: Symantec完整磁盘加密软件爆0day漏洞 日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。 & h8 ?0 E: U' S* E. v. z + j, T% l- y9 a( T0 o2 `; QSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。: w* r& K' L& ~2 U; Q
, m4 u( a( Y( t' J. U8 z
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下: " u' j5 d+ ?/ M3 I( E) W2 I ! B5 s' O) A- v# B # {, b$ v ^/ { Q * v: @% J4 N! s: l2 Jfunction at 0x10024C20 is responsible for dispatching ioctl codes: 4 {( [/ |! C' A, H0 B% _5 D " P1 b: F* j# J K h; v3 {3 H.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) ! W$ @ n+ ` P, u; u$ U.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap! [' X# N3 \, l H+ {
.text:10024C200 k+ M, B2 T( C- M& g; h$ k" i) [
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch - z4 M( X) X5 E( P- v.text:10024C20 var_31 = byte ptr -31h5 i# ?* H5 I. O1 d6 }$ I
.text:10024C20 var_30 = dword ptr -30h ^ P+ U2 x2 U' k/ a.text:10024C20 some_var = dword ptr -2Ch ; N4 r) C2 C$ J/ y9 O; M.text:10024C20 var_28 = dword ptr -28h . T, B( }9 R% i$ k" b* ?.text:10024C20 var_24 = byte ptr -24h ' f/ t2 a& S7 O.text:10024C20 var_5 = byte ptr -5 5 Z$ {- u: d' P( V, E* X* A.text:10024C20 var_4 = dword ptr -42 M9 ]$ A7 o# A( b; K! x) x, H
.text:10024C20 ioctl = dword ptr 8; M9 M& E5 e" a+ Y) ~
.text:10024C20 inbuff = dword ptr 0Ch4 ~5 p" y* s( M
.text:10024C20 inbuff_size = dword ptr 10h6 V( o5 \. _& w; v, e+ |' G7 \8 o
.text:10024C20 outbuff_size = dword ptr 14h 2 R% e* X( R! h, J1 r- I) A.text:10024C20 bytes_to_return = dword ptr 18h ) W5 {9 m: o4 ]% W* C/ I3 q9 X.text:10024C20+ Q+ V8 Z8 |% ^2 W: L
.text:10024C20 push ebp 4 l2 \1 A# M7 x) m1 T" V) g7 w.text:10024C21 mov ebp, esp% f' L* s- A% b$ e& J; y. r
.text:10024C23 sub esp, 3Ch2 j: r9 E5 N( d3 I0 } n# x
.text:10024C26 mov eax, BugCheckParameter2 4 p: {# x( _- C% X* ?" e8 s1 R3 g- B6 _.text:10024C2B xor eax, ebp # `7 f6 j! z! b/ v+ i! t6 x( W.text:10024C2D mov [ebp+var_4], eax. ]8 T9 c5 y- C
.text:10024C30 mov eax, [ebp+ioctl]1 Q+ r# `+ J/ _- @( |! k
.text:10024C33 push ebx! G( Y' t/ h9 C2 G, p. D3 l' F! M$ P% T
.text:10024C34 mov ebx, [ebp+inbuff]! G. w# T- J0 k3 E' S+ l( j+ H
.text:10024C37 push esi D( w1 \6 _$ Q" J& K- U
.text:10024C38 mov esi, [ebp+bytes_to_return] + F. S2 @1 g3 I1 N8 ^: `.text:10024C3B add eax, 7FFDDFD8h + ]; y) v" |# s8 B% }.text:10024C40 push edi 8 ]6 ^ `' L% k O! a.text:10024C41 mov edi, ecx( G6 ^& M" V6 B# O' w+ U
.text:10024C43 mov [ebp+some_var], esi8 h& J( r! _( {% B7 o2 @/ i
.text:10024C46 mov [ebp+var_28], 0 : Q: h% h+ w& l' b. U. p! X.text:10024C4D cmp eax, 0A4h ; switch 165 cases # X) S" k4 \- N, s, C3 I.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case 7 ^: ^; n/ y- }$ c: ].text:10024C58 movzx eax, ds:byte_10025BF0[eax] # c0 N, H4 ]" C. W5 ?; r8 B& L.text:10024C5F jmp dsff_10025B50[eax*4] ; switch jump8 y& R* g; `, }4 W7 S/ `) v
& _: [6 a3 F2 Y) f+ t4 s[..] : n6 S; K7 F) u& a3 C- d 4 n V' @4 a# i! P. j0x80022058 case: no check for outbuff_size == 0! <--- FLAW! 1 ^) m# p' f" j$ V2 C; V& e, R5 \+ s! p: ]- Q
.text:10024F5A lea ecx, [edi+958h] 9 ~" T* ?- I6 @.text:10024F60 call sub_100237B08 t4 v* V) y; U. j
.text:10024F65 mov [ebp+some_var], eax / G' l4 n O O4 Z8 J0 v.text:10024F68 test eax, eax( w- j# U% F5 ?6 ~% a
.text:10024F6A jnz short loc_10024F7D ' H% f$ l& `, z! i.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh3 N3 t: `/ |7 ?/ B8 z$ y
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer( }0 O+ \: S" f' l
# u7 W& p0 T4 _5 t' l
next in IofComplete request will be rep movsd at pointer, that is under attacker's control: ^' ~4 a) K# |7 h; L# L# }
- ?) r/ W: u0 a2 j
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. & F5 A2 S% P" F6 Z3 N. N$ j3 z
3 D7 ?- Y+ F$ A1 t
Symantec表示在2月份的补丁包中修复该漏洞。9 \' f) Z1 L" r
B. E/ |0 G3 S, p( D相关阅读: 4 M" Z% E# [+ _ 9 k s3 p5 ~: z9 ]& I赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。 8 w# N: @. B) @ v1 G 3 _; O. W. ?! @! u) Q