找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2325|回复: 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。9 f2 f: E( |6 r0 b: v' O

& P! B/ e2 X9 O* N. ?1 tSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。0 C6 ~) d' b1 m, Y& e1 n9 h
& t( Q8 o( `. M, m3 F4 c
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:0 j6 y$ G2 e& [) ^( m7 i1 S
1 a. l# ]3 r) V4 B- z: t7 J
# Z; l8 ?  j; P' f. G6 U( N; `' b# W

2 y* k+ B9 j7 P( z# N& Ffunction at 0x10024C20 is responsible for dispatching ioctl codes:
8 l" \5 Y6 m" a1 s9 t) h! {8 J7 E# ~" t, E% v* R
.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 g1 d) G# Y" Q+ \( y
.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
" P+ _. q' e& o1 a1 h/ G) c0 R.text:10024C20
1 i/ d$ h7 f+ ^5 ~7 _  V; D.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch: r$ i: }7 @" s/ S! V6 p, U* E- O
.text:10024C20 var_31          = byte ptr -31h5 Z9 i3 i' I! W
.text:10024C20 var_30          = dword ptr -30h5 m. G* K% [6 F% u! \
.text:10024C20 some_var        = dword ptr -2Ch; F0 Y4 ]3 W8 L6 A) m0 O  ?
.text:10024C20 var_28          = dword ptr -28h
0 N) V9 ?5 L* s' r.text:10024C20 var_24          = byte ptr -24h
" \3 @, X% D' E9 E& Z5 M/ l.text:10024C20 var_5           = byte ptr -5) T! F5 Q; U$ l$ N8 ^- I
.text:10024C20 var_4           = dword ptr -4# [, S* Q9 S! F1 u. l+ N
.text:10024C20 ioctl           = dword ptr  8
4 n  f; D6 [% a2 e1 C- F.text:10024C20 inbuff          = dword ptr  0Ch1 H5 I. l/ Y9 ^0 R9 W
.text:10024C20 inbuff_size     = dword ptr  10h- t4 w. P* P; U( W1 ?. S4 b
.text:10024C20 outbuff_size    = dword ptr  14h
" b0 m0 W3 P# m# x& j: m.text:10024C20 bytes_to_return = dword ptr  18h
& ^+ U$ P! o2 p2 n3 S2 d.text:10024C206 z0 }9 Z6 n1 j+ H% H! U' [
.text:10024C20                 push    ebp5 J8 V; g- D4 P( t
.text:10024C21                 mov     ebp, esp4 y; ]& x6 H. Q( U. n$ P" E
.text:10024C23                 sub     esp, 3Ch
' k: t! u+ m* w9 q3 t.text:10024C26                 mov     eax, BugCheckParameter29 }2 S0 r- ]; E8 d9 I
.text:10024C2B                 xor     eax, ebp
" C: ~6 Z6 O& f$ K, w  f.text:10024C2D                 mov     [ebp+var_4], eax' W( c! U9 S/ p  @% G8 P
.text:10024C30                 mov     eax, [ebp+ioctl]9 e% n, B9 L* o3 k
.text:10024C33                 push    ebx1 ^& v: O& {& O9 P' ^
.text:10024C34                 mov     ebx, [ebp+inbuff]3 e% D. T- b& g6 P: V; u3 R
.text:10024C37                 push    esi8 G3 x: M0 C8 T5 H. s1 f* ^
.text:10024C38                 mov     esi, [ebp+bytes_to_return]
  O+ ?0 H, q  H& j( Y5 _3 T.text:10024C3B                 add     eax, 7FFDDFD8h
1 w! C8 Q5 f9 f$ A- n/ O.text:10024C40                 push    edi0 Q4 x8 I  H; \! r$ Z, z1 U
.text:10024C41                 mov     edi, ecx6 ]6 \) o4 a8 A0 J. A+ P" Y% h
.text:10024C43                 mov     [ebp+some_var], esi
5 x4 p( {; S: J, @" L6 |.text:10024C46                 mov     [ebp+var_28], 0
- g3 \  R4 w" Y( v2 J.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
. s$ R- Q9 o9 x3 x.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case. }+ r) I: q1 Y' c- Y# f; }
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
  _/ P  V+ s3 T* L) S# C.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump. C7 H+ H0 ^/ X$ Z0 J5 U

2 w( p4 D. O( o, `: J. [, U[..]7 F; y+ E5 E& V- `( P" ]8 [
, \( h# o: x% m# n+ a
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
3 u, I; o# G& C, i- b4 G: F" z+ x" K) P! u6 Z+ r
.text:10024F5A                 lea     ecx, [edi+958h]/ U( y9 a( c( U
.text:10024F60                 call    sub_100237B0
, y8 j8 X  ~5 e& n7 [7 K" c: S. G.text:10024F65                 mov     [ebp+some_var], eax2 ~! x# @% X# [/ x% K2 S: Y: J
.text:10024F68                 test    eax, eax9 T. A/ t& D+ J& h# J  G
.text:10024F6A                 jnz     short loc_10024F7D3 ^: Z- \4 N9 \, ~2 v3 d# O# q
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
! t6 S3 t) k* h3 s- e+ F) R) X.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer1 U4 u: i7 r' w2 C1 m& G

  b& f  r! v3 |next in IofComplete request will be rep movsd at pointer, that is under attacker's control
1 p( R0 S* V7 n! m: e0 S1 D( K- t7 s8 s# b
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. % Q# F" ^9 M% n$ c
( ~+ P) v# D- o5 U( b
Symantec表示在2月份的补丁包中修复该漏洞。; |7 {- @8 Z: v7 h: s/ F+ {% o

! B, z3 ^4 I# H6 R& Q( F相关阅读:
; x, C: ?& j6 i/ \
. T5 ?. c& \3 N6 b, ~- e1 N5 E赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
2 _/ A' \5 i6 N- |
' D" T- b% Y4 m3 }1 r
回复

使用道具 举报

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

本版积分规则

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