找回密码
 立即注册
查看: 3055|回复: 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。
# `% e$ {, H* D! g  [; H3 q6 [' ]$ F) \; O) e
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。$ }+ P# z2 e* Y* M* E- m

" a7 [7 H  Z) s& f研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:9 [- Y; |1 M" B9 G8 g/ k

6 g# z9 ^, h3 z6 n# W1 X# H6 Y7 ^
  Z! }+ Q/ ~8 ]! Y
: F4 y2 M( m8 Gfunction at 0x10024C20 is responsible for dispatching ioctl codes:( h8 N. o- `5 H& u: K: R

" g4 g! \& C& v% g& _2 D.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). E: F- _8 ?% k! Q( T
.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap! L* |' _( ~; M8 P' `
.text:10024C20
' _, h+ d. J2 k, S.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch3 X1 a& u2 W9 `: F
.text:10024C20 var_31          = byte ptr -31h6 q. W3 A9 |; ~
.text:10024C20 var_30          = dword ptr -30h5 O7 N( r- `$ G1 {( G+ \3 f3 t3 ]
.text:10024C20 some_var        = dword ptr -2Ch4 s, k) Y' e! k# F) b$ T5 g. z* l$ x
.text:10024C20 var_28          = dword ptr -28h
8 W/ [9 c- ]6 c4 b2 ?  |) f6 }.text:10024C20 var_24          = byte ptr -24h
, R4 c6 M) ]6 L6 J$ K) |.text:10024C20 var_5           = byte ptr -5
! {. h# `+ z+ U. X2 k! o, G.text:10024C20 var_4           = dword ptr -41 V; {/ c: A8 n6 I: u
.text:10024C20 ioctl           = dword ptr  8
: G' W# g0 N# Z! E.text:10024C20 inbuff          = dword ptr  0Ch- m2 |: k" y6 u6 {$ t
.text:10024C20 inbuff_size     = dword ptr  10h5 {& J. t3 X/ e0 a8 d# S) ~
.text:10024C20 outbuff_size    = dword ptr  14h8 x9 ?8 O! r" m
.text:10024C20 bytes_to_return = dword ptr  18h- E  O" Y/ ^) g3 n3 ^. x
.text:10024C208 k4 Y: S2 a+ s+ {" L. v3 k
.text:10024C20                 push    ebp5 s) c) }* C# f
.text:10024C21                 mov     ebp, esp
4 C4 {& H/ k6 f: D* `( T1 }/ |! Q.text:10024C23                 sub     esp, 3Ch
( j9 H- _3 Z) W7 o# g.text:10024C26                 mov     eax, BugCheckParameter2' H( ~9 E+ V. H& x: ^! e7 n8 u
.text:10024C2B                 xor     eax, ebp' b$ @8 p" o5 ]4 U, a- Y
.text:10024C2D                 mov     [ebp+var_4], eax6 ]: M- C$ k% Y, ^
.text:10024C30                 mov     eax, [ebp+ioctl]& ?- j, p* j: e: K) Q! }
.text:10024C33                 push    ebx9 S! t& I: |# T7 r
.text:10024C34                 mov     ebx, [ebp+inbuff]
1 N3 t' ^* H/ Y: Y: j.text:10024C37                 push    esi
" l: ~7 h' Z+ h  w# a3 f' ~' w.text:10024C38                 mov     esi, [ebp+bytes_to_return]: `* K6 R: d# B# J
.text:10024C3B                 add     eax, 7FFDDFD8h% S: u% ^3 D" B1 a: x
.text:10024C40                 push    edi1 s, s# r/ v7 p! L% X9 w
.text:10024C41                 mov     edi, ecx
( u& ~! ?% a5 m1 f.text:10024C43                 mov     [ebp+some_var], esi
& ]4 i2 b1 x4 H9 a+ b.text:10024C46                 mov     [ebp+var_28], 0
4 g# E. g2 _) [% n3 `4 ?.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases) r) m9 o/ t* n
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case  Q: ~2 x! z7 X+ l
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]5 v4 ]0 ~: Q4 f/ ?$ q7 y3 {' ^+ h6 h; F) @
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
- n; S: ?& A3 ?: u" _( u7 ]) ]; |( }2 |" n8 P& S
[..]8 t3 |& @$ }& R! o3 H: {1 _: q

. c0 u! P+ C! M) W0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
0 u3 ?" t3 y2 p! s! x! [# @' x& C+ v( ^' R- J$ \
.text:10024F5A                 lea     ecx, [edi+958h]$ p7 f$ e; m8 f, O: \
.text:10024F60                 call    sub_100237B0
  ^7 V$ M, a/ G; I1 o6 m.text:10024F65                 mov     [ebp+some_var], eax, w: w" x: Z# M. L
.text:10024F68                 test    eax, eax
6 R' A. @0 A1 x' b" H.text:10024F6A                 jnz     short loc_10024F7D" G2 _9 u3 _- _! d! p6 [
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh7 _& b; G8 S5 d
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer/ t% {/ _- W* X8 G; c) O

5 h' J7 {# k' A& S/ l. D/ p9 Xnext in IofComplete request will be rep movsd at pointer, that is under attacker's control
5 A3 y8 {( v! T9 e. T( w7 T7 T5 l0 o5 D) V
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.
9 P! s7 Y1 m/ ^6 ~6 L7 I3 L1 j' k- G; p
Symantec表示在2月份的补丁包中修复该漏洞。, P4 }1 X' X7 @0 ]- W% Y8 O, Z2 O

6 E8 L/ \  {4 `# b; U% d! J/ ~( O相关阅读:
7 O* ^$ h$ T8 }% g6 w( L8 o, e8 ^8 D3 O  }
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。6 J0 o# o# {1 w% O! U

# w8 {5 x2 n1 w, ~- Q6 L
回复

使用道具 举报

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

本版积分规则

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