找回密码
 立即注册
查看: 2882|回复: 0
打印 上一主题 下一主题

Symantec完整磁盘加密软件爆0day漏洞

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。" i' i1 |) b# N# E  I! k

& [- U4 Z8 |9 d; qSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
0 d2 k9 q" F' L: u0 ?- s- z# T) [, \3 M
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
# U* K: O' e; `$ F7 _( h7 m% a0 c3 m4 Y; w" H; W
4 D6 a  D  M* c- S7 O% Z) n/ p4 X

9 k, i+ L! j7 C4 [% mfunction at 0x10024C20 is responsible for dispatching ioctl codes:
& c" o: v$ |4 e0 Z7 I, U: {; k4 G! Z9 X( m! X' L
.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 `/ L* @9 R8 |7 k; W* J! c
.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
1 i5 t' K$ v& g! M0 ].text:10024C20& K7 v* a+ v3 v. u2 @( ]
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch" K" J+ \) y$ k& W
.text:10024C20 var_31          = byte ptr -31h
) {  ?& N  N  z5 o7 x5 k- {( y.text:10024C20 var_30          = dword ptr -30h
5 V* l9 Y$ S4 F7 F0 T.text:10024C20 some_var        = dword ptr -2Ch. q3 R6 M. e$ Q, P
.text:10024C20 var_28          = dword ptr -28h! h) |+ I6 I. h( H, y
.text:10024C20 var_24          = byte ptr -24h0 o7 [1 y0 B# r3 A) \
.text:10024C20 var_5           = byte ptr -5
& }9 l6 a9 y% U8 p* d/ x7 }.text:10024C20 var_4           = dword ptr -4
& _1 Z5 a1 q3 r& ]) T.text:10024C20 ioctl           = dword ptr  8" f5 g4 G" R  V; @8 Q
.text:10024C20 inbuff          = dword ptr  0Ch
4 D/ ~6 B! ?: E% i.text:10024C20 inbuff_size     = dword ptr  10h
6 D; M# O" ~3 ^- ^2 g8 E/ K6 v.text:10024C20 outbuff_size    = dword ptr  14h
9 m- a! L9 f& D8 U5 _.text:10024C20 bytes_to_return = dword ptr  18h: \2 ?$ h8 P6 O7 q7 U5 n5 g0 \
.text:10024C20
( Q) l, I3 R7 J) u.text:10024C20                 push    ebp
. I: i3 U* H& p( W6 v7 w.text:10024C21                 mov     ebp, esp
$ p- s* {0 Z- C3 a.text:10024C23                 sub     esp, 3Ch
* ]& \2 `! g2 R( c+ U; q$ p.text:10024C26                 mov     eax, BugCheckParameter29 P9 u2 V0 Y7 z, ]
.text:10024C2B                 xor     eax, ebp
6 x. f" v. M  x& f.text:10024C2D                 mov     [ebp+var_4], eax% r* b9 w+ s  j" |8 _
.text:10024C30                 mov     eax, [ebp+ioctl]# b" v" d9 M4 w1 v
.text:10024C33                 push    ebx9 b& W, w9 ?/ k: J, I4 d
.text:10024C34                 mov     ebx, [ebp+inbuff]1 A  l) G  ~5 @- z. o5 Q
.text:10024C37                 push    esi
& K( Q- ?& T: n.text:10024C38                 mov     esi, [ebp+bytes_to_return]) V5 D  ]! a$ p9 i# n% j* G0 m" G
.text:10024C3B                 add     eax, 7FFDDFD8h
& q; t* q: z4 k4 o: Z4 c.text:10024C40                 push    edi9 Z1 ]: Q. Z. z. p! r. F& d. c  p' t7 |
.text:10024C41                 mov     edi, ecx
- |3 A2 q2 I  L( m.text:10024C43                 mov     [ebp+some_var], esi* }1 o  e) M5 S5 M5 H6 Q1 Z6 @
.text:10024C46                 mov     [ebp+var_28], 0$ F5 B" a7 o* ]3 a# I9 \
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases! p. ~) y% N2 v% a$ N2 F
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
  U4 E6 Q  ?, n1 }.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]( [7 ^: M2 P' }$ w
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump7 W9 f/ b/ k7 ]

: \4 O0 `& s1 G[..]
6 z7 G1 t: D1 s' X: x- c) @5 P
: F5 G' c0 {7 d7 x& Q( P0x80022058 case: no check for outbuff_size == 0! <--- FLAW!! A5 E7 N: h1 _' b5 g

& L. F# Z# r6 W.text:10024F5A                 lea     ecx, [edi+958h]) x5 l* O: q  i4 ]+ u9 ^3 T
.text:10024F60                 call    sub_100237B0
- F; e: S5 j3 C6 s.text:10024F65                 mov     [ebp+some_var], eax; [+ H$ ^9 G: b% w
.text:10024F68                 test    eax, eax5 U' K& g$ j, B6 E
.text:10024F6A                 jnz     short loc_10024F7D  P2 e& a" x1 B$ s
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh! n8 x7 o% G5 j& I
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer0 D" [0 T% v- s; |9 j6 R% m
5 h8 m- L' Z8 V5 O7 a1 h
next in IofComplete request will be rep movsd at pointer, that is under attacker's control% C# D3 x" F3 j7 P3 _6 `

) `! d  O4 N. }+ IDue 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. & }* o$ f( G" X7 L/ ^- B) m: d

  L  o9 Z6 a. i. V5 Z; l# |7 DSymantec表示在2月份的补丁包中修复该漏洞。; }2 `) H4 @. M* O9 f( w7 k  f/ I+ s5 A
  w6 ]* u. r5 j3 ^8 \1 v$ C
相关阅读:7 e6 a, J6 j0 Z0 W, m9 \9 T
5 X7 F9 y: a8 ]
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。; p0 E. V: v4 C9 N6 r0 d

6 j8 c( V, M7 U- l
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表