找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2332|回复: 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。
0 C% G3 l8 E( X; p( }
. v+ }5 ^* P1 A( _4 n) DSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。, U  d) B. K' P4 D1 q6 C9 j

+ I" C5 }! l) [* ]2 l& d1 K研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:% i4 W6 l6 M5 j1 A$ W' E* t7 t
# z! E; l- S$ ~5 E% H$ W
: C2 o9 a. [0 [

& A: @& J% w$ ^; p0 [  cfunction at 0x10024C20 is responsible for dispatching ioctl codes:
5 s0 D9 p& V* Y8 c+ P: I6 k+ r3 I+ v: I( H3 G7 X: X! \
.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)7 m" g9 q0 n7 s6 l( B- a: t+ U4 z6 e
.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap5 x8 x. Y. J; t. L4 t. D; j
.text:10024C20
: x3 H. w, ]* ]' I: ?.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch( ]* P- T  q$ H5 X
.text:10024C20 var_31          = byte ptr -31h! e, j1 A4 j* |7 Y$ v  C
.text:10024C20 var_30          = dword ptr -30h: g( o- J. `  P: m5 c7 m, y
.text:10024C20 some_var        = dword ptr -2Ch# P, s, S9 s# r  Y) X' n9 v
.text:10024C20 var_28          = dword ptr -28h
: I. G$ l+ F/ r$ r.text:10024C20 var_24          = byte ptr -24h
- ^/ p/ b* Y/ R.text:10024C20 var_5           = byte ptr -5
! f/ Z4 H" i' I& m8 J' `5 p.text:10024C20 var_4           = dword ptr -4; |6 T9 x6 W* S
.text:10024C20 ioctl           = dword ptr  8  x$ V% E1 E% _
.text:10024C20 inbuff          = dword ptr  0Ch
* R4 g& w. y: m7 v3 F.text:10024C20 inbuff_size     = dword ptr  10h
7 G. S! f$ [5 {0 R* ^# Z  C7 g' X, i9 R.text:10024C20 outbuff_size    = dword ptr  14h# q" z$ y5 n4 L3 D
.text:10024C20 bytes_to_return = dword ptr  18h9 w1 b; Z0 o; ~8 P
.text:10024C20" J& Q' \' s" Z5 l- |% y, y6 G1 _
.text:10024C20                 push    ebp$ b+ ]" r; ?$ Q8 g
.text:10024C21                 mov     ebp, esp
1 Q3 c5 M" N4 j7 f3 U- S.text:10024C23                 sub     esp, 3Ch5 t0 `1 g( g" ?$ ~+ o
.text:10024C26                 mov     eax, BugCheckParameter22 M9 ~/ X: M( x+ t# V/ m; T
.text:10024C2B                 xor     eax, ebp3 R& \6 O$ a1 J4 a$ Q
.text:10024C2D                 mov     [ebp+var_4], eax
, e: E+ `1 b- d! @! ^  e.text:10024C30                 mov     eax, [ebp+ioctl]8 J; r' _( w: M7 N% ^
.text:10024C33                 push    ebx
3 j- ^4 H! C9 |, _/ r6 A( o) m.text:10024C34                 mov     ebx, [ebp+inbuff]
& h6 T0 t( w3 X.text:10024C37                 push    esi
) J7 ]: U& {. r. V5 O" W.text:10024C38                 mov     esi, [ebp+bytes_to_return]6 v1 w! F& Q  X
.text:10024C3B                 add     eax, 7FFDDFD8h
8 ]+ _0 v( a9 E$ ^0 }' @.text:10024C40                 push    edi! X% }3 u: W. M+ ~& h0 H
.text:10024C41                 mov     edi, ecx8 `1 X3 g, E+ v) A
.text:10024C43                 mov     [ebp+some_var], esi
+ b$ _  ~. b- W) S* t.text:10024C46                 mov     [ebp+var_28], 0
0 {9 |4 q! M, `* T( A, \.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases2 W' j- V8 a' C. g
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
- ]1 Y' a% p' Q: w.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]8 P$ r5 f# v& l3 Z, O: R
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump0 `3 A+ Z( n. R# Z! ^, I, P
% C: i; s+ d8 [" q3 J
[..]/ R2 Q6 i9 M- P# z9 O

* j; v5 s7 v3 `$ R- `0x80022058 case: no check for outbuff_size == 0! <--- FLAW!& O: x) B* f  O4 H* R

  N' v! l5 e' [0 H1 K3 q.text:10024F5A                 lea     ecx, [edi+958h]
/ a4 d, J; e+ s, F! K.text:10024F60                 call    sub_100237B0: @! K9 w/ p3 ~& b
.text:10024F65                 mov     [ebp+some_var], eax* Z7 Q4 B6 |5 `
.text:10024F68                 test    eax, eax6 }; T7 I$ ?% v/ H  q
.text:10024F6A                 jnz     short loc_10024F7D
: f7 j# e  m0 \6 ]2 E3 F1 B.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
- A) Y$ F6 N6 z0 L6 c; m.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
2 U2 Z* m5 B! t% o0 T6 C3 E# h" y# H
next in IofComplete request will be rep movsd at pointer, that is under attacker's control3 ]8 U" D. H* G7 J* B# m

/ v8 J5 Y, T( P! I" I! y3 aDue 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 Z" B3 M6 Q+ Z4 I- i7 Y( p' ]2 r+ x( d3 X
Symantec表示在2月份的补丁包中修复该漏洞。/ M. c$ e- ~* ~2 R

9 M) u) O! o# ^相关阅读:
/ ?8 n$ y% \1 b( ]
" w( W7 r* t# L/ m1 S1 h4 U8 g赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。4 Y4 F9 M$ ~' r$ b. P! _

8 v+ b  k% |9 v3 `& ~5 R& d
回复

使用道具 举报

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

本版积分规则

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