找回密码
 立即注册
查看: 2733|回复: 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。  a; _) d7 i" Z
! H2 S  ?( D5 ^) f* j) b
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。) h, \2 b$ Q9 M3 G, y8 @4 L
- |5 @& S: W, ?
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:' I- ?7 o, _5 o- d( k; V" q: L
2 _- t0 F9 w8 v& U5 a2 h5 q5 x
3 z0 r; @9 d. R1 ~- r- ?+ U! S

: j7 W! a# p: f+ i  {. r4 [  afunction at 0x10024C20 is responsible for dispatching ioctl codes:  E. @1 [  _: d: ]
/ M7 I7 C/ i5 x' V. V; i! J
.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)
  l% @( G/ ^7 `% z$ x9 o) R9 N.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
3 m6 d0 J- U& ^; x' @: q.text:10024C20
& a; k0 M2 J/ G/ K3 z.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch  Z5 _/ I! `& M
.text:10024C20 var_31          = byte ptr -31h1 P- j% n6 O* C" r
.text:10024C20 var_30          = dword ptr -30h
& S9 }8 _+ x1 d, m.text:10024C20 some_var        = dword ptr -2Ch
1 f7 d& `5 U# R$ f% e7 R  E0 Y.text:10024C20 var_28          = dword ptr -28h% {! |  d; p, x2 r9 S
.text:10024C20 var_24          = byte ptr -24h
" p3 b% i( ]/ V) v; M% h) A.text:10024C20 var_5           = byte ptr -5
' F  @$ p6 K8 D% u.text:10024C20 var_4           = dword ptr -4" z! c$ C  Q7 _4 D8 Y( U! Z
.text:10024C20 ioctl           = dword ptr  8
4 L5 U  F; }3 u7 D7 r) Z.text:10024C20 inbuff          = dword ptr  0Ch$ c  ~! x8 P* F
.text:10024C20 inbuff_size     = dword ptr  10h
: `6 W2 g7 M. k, O.text:10024C20 outbuff_size    = dword ptr  14h, W0 C4 Q) o  o" Y
.text:10024C20 bytes_to_return = dword ptr  18h
; H' ]7 N4 j; [  L! \.text:10024C20
% I7 z' A* w) L, n.text:10024C20                 push    ebp5 C& z( b: L7 n- x
.text:10024C21                 mov     ebp, esp9 _' |, y% h- h0 u' k
.text:10024C23                 sub     esp, 3Ch  Z/ S& t8 ~7 y" b  E5 }' c
.text:10024C26                 mov     eax, BugCheckParameter2
8 \% M0 [" r2 B& c.text:10024C2B                 xor     eax, ebp7 M; T3 b# C7 v% I" {7 O" v9 H
.text:10024C2D                 mov     [ebp+var_4], eax) V  E$ g4 J$ |, V
.text:10024C30                 mov     eax, [ebp+ioctl]9 d7 c3 `/ D: z$ R
.text:10024C33                 push    ebx/ U, _3 D( r  A" w4 j7 M/ i
.text:10024C34                 mov     ebx, [ebp+inbuff]) ?9 V8 t; m" [; B4 g+ Q8 X
.text:10024C37                 push    esi* y8 `6 R& x, F
.text:10024C38                 mov     esi, [ebp+bytes_to_return]
$ A, s/ J' g+ A.text:10024C3B                 add     eax, 7FFDDFD8h
4 u4 S. j8 H& n; r) r5 J9 n# [  y# }.text:10024C40                 push    edi) i1 g; R5 {9 g+ S- t9 z
.text:10024C41                 mov     edi, ecx- G  U; [7 C) n" E5 I
.text:10024C43                 mov     [ebp+some_var], esi9 p/ s( T% M0 ?' Z; e+ _
.text:10024C46                 mov     [ebp+var_28], 08 t0 M" @4 q& h# L, ~4 G2 r" L9 o
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
' {& z! e. @: r9 V( U* f3 e. T3 x.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case7 B! V7 `* O, d' G4 b7 z+ \
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
* x0 X- }$ A( r.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump# b) a7 i+ Z: `1 v& D7 o
& w; D, g: n8 V
[..]
' |* y4 L/ d" o/ ~5 Z5 W) i! ?- z9 m+ L9 e: W
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
* O( k: q$ T* q, Q# |" H8 Z5 R: V  Q; x( K  g) P6 g, k; a
.text:10024F5A                 lea     ecx, [edi+958h]* E8 q( K( t# B  @0 D, Q- X, x" a
.text:10024F60                 call    sub_100237B0# s* D0 n; ^! {! O! `$ U6 L0 s
.text:10024F65                 mov     [ebp+some_var], eax
$ m* `0 R& a; Y: u.text:10024F68                 test    eax, eax
. o' o$ w4 k& h) J" j7 G.text:10024F6A                 jnz     short loc_10024F7D
$ Q1 r& g( f$ f  E7 F7 ^.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh; B& c( v$ @; z
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
, d1 N) t  o& p0 C! C+ P9 z* A! U6 v
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
! D8 `/ _1 }1 r1 p1 j4 k. Q- ~+ d; S- 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.
5 n% b* _, Y6 B) J
, }/ ^' Z+ {& J& WSymantec表示在2月份的补丁包中修复该漏洞。
( K& @5 i$ Q$ f' r7 w6 D+ C6 r! a2 \, q) x3 j/ K4 X* y9 X
相关阅读:! V5 L3 r- U$ ?; U7 Z
- v  z. h7 O0 z% z
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。' V$ ?# f! _" j- ^
4 M- z, r( z1 B
回复

使用道具 举报

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

本版积分规则

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