中国网络渗透测试联盟

标题: 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。
/ Q+ G8 L$ S. c2 M1 V. C' I, _
, I7 |1 B7 @! }2 S2 p6 W$ {Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
0 |  G; X0 V% g4 q- k3 v
3 @" v" |- y  P/ }9 T" E" C4 X  \研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
3 B6 t( J* m+ b9 a0 B. E; @( Z* w8 V8 @  M# {
) U9 j% l  d3 e8 [* P5 f, ]

: I  ]( ~3 s' v. U1 G3 m) V8 n8 Yfunction at 0x10024C20 is responsible for dispatching ioctl codes:2 p; O( Q( g, G# y2 O8 [
( F4 a- p6 n: @" R+ A( k
.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 ~) w0 Y0 N9 G.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap1 X& U! u0 T1 v0 m* @: ]
.text:10024C20
2 T8 H& W' [  i: o  l$ V.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch. L8 o+ I5 Y; h: v  |# Q. O; `8 G
.text:10024C20 var_31          = byte ptr -31h, }' l8 V7 C4 K* b
.text:10024C20 var_30          = dword ptr -30h  R5 W1 f3 o) {$ M
.text:10024C20 some_var        = dword ptr -2Ch
' d( j/ B7 |  n8 U) G. U9 v# e4 ~.text:10024C20 var_28          = dword ptr -28h
- n% |* q  \  a.text:10024C20 var_24          = byte ptr -24h
6 m5 H1 B; [' y) a# N) T.text:10024C20 var_5           = byte ptr -5
* a; m0 {1 l/ d( u% Y. Q.text:10024C20 var_4           = dword ptr -4% C0 [9 e, n1 `; N; `
.text:10024C20 ioctl           = dword ptr  8
+ E2 c5 D7 L' m% J6 @- C+ h.text:10024C20 inbuff          = dword ptr  0Ch
) c+ s/ G) X) W.text:10024C20 inbuff_size     = dword ptr  10h  J7 J1 Q4 B, w& {) x
.text:10024C20 outbuff_size    = dword ptr  14h) w! B# M& i7 ]" ]
.text:10024C20 bytes_to_return = dword ptr  18h
& v2 S8 U  K$ [* _& r+ {# V.text:10024C20  \" s4 l* D+ {" ^. l8 V" G& r8 @
.text:10024C20                 push    ebp
2 `% ~$ ^( |4 e2 f) N.text:10024C21                 mov     ebp, esp
$ G. L0 ?* n2 s) Z4 Y4 D- f.text:10024C23                 sub     esp, 3Ch
! L) j' s0 a; n# X# h1 @.text:10024C26                 mov     eax, BugCheckParameter2
' K/ m) P! R/ R1 Z# o7 m& m* p.text:10024C2B                 xor     eax, ebp8 f) m! ]8 I8 M! @
.text:10024C2D                 mov     [ebp+var_4], eax
1 V2 D  R. }4 U) E+ v.text:10024C30                 mov     eax, [ebp+ioctl]
6 e9 t) O- D! ~.text:10024C33                 push    ebx
9 U( T$ S3 t0 x$ G.text:10024C34                 mov     ebx, [ebp+inbuff]
+ ^% v. F# X" J2 L3 ^4 a9 g! ?.text:10024C37                 push    esi+ v* s* o. e8 \" _5 D, A
.text:10024C38                 mov     esi, [ebp+bytes_to_return]7 T& F8 T' f* i' v1 h
.text:10024C3B                 add     eax, 7FFDDFD8h! @; ~/ o) D5 p
.text:10024C40                 push    edi' _5 L  X% A& b% V; V2 K2 M, C- `
.text:10024C41                 mov     edi, ecx
4 I# Q: J7 u9 j. a.text:10024C43                 mov     [ebp+some_var], esi( U" n6 k" N- s/ [% P
.text:10024C46                 mov     [ebp+var_28], 0+ a7 q$ ~/ s3 b5 u  M
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases) M$ X8 L" G7 h1 x  Q- A  \# t
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
( R2 G) F2 ?; d& }.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]! o4 @. X; I5 {" j! M+ N1 ~
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
6 e( Q9 {# w2 z/ W5 U- u
+ _* O; @# d5 o* Y. Q. L, ?. F[..]
1 A, c( j, P4 B$ Q* j& u6 a# ~$ H/ V% O" z! ^" P/ a
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!& v) D, ]; ?( N2 l* r$ v% \/ R5 T

) F+ n0 B0 ]8 ~7 m.text:10024F5A                 lea     ecx, [edi+958h]
( ?7 e8 S: R: P8 d; j9 M) M$ }.text:10024F60                 call    sub_100237B0
) A4 y/ [* |) {7 c7 D8 {.text:10024F65                 mov     [ebp+some_var], eax+ H/ p' B5 S3 x; q2 h) F# q
.text:10024F68                 test    eax, eax5 p8 {7 C) c% u4 v- C* K+ |
.text:10024F6A                 jnz     short loc_10024F7D! `; H$ I8 ~. {6 m3 P! ^
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
4 w+ |# l! _' u/ Y9 D* d: S.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer' S* L4 [9 A' d& M  G1 T

7 }+ ]. Z# G, _1 Snext in IofComplete request will be rep movsd at pointer, that is under attacker's control/ l1 U) _  X* b+ B. o

9 w/ k4 |  I! J* ^5 K! ZDue 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.
5 O" A4 ?6 _4 @6 U/ G1 N
2 a" {( d* t$ Y2 d0 RSymantec表示在2月份的补丁包中修复该漏洞。
- \+ f7 z  O7 H' B4 z, c2 g1 V  z( |  S: p
相关阅读:) Z0 f6 ~! V3 X7 a& L- s' _# `- k

4 y/ }9 {& ~# a, O8 L赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。1 i5 C; {1 A7 M* Q& H9 `
, ]- ^" w4 Y8 h





欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2