找回密码
 立即注册
查看: 3144|回复: 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。
/ w0 H: M/ d3 A& [6 x& p; a, p; K! e4 ^2 {7 A8 k! C
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
. f; v: U/ B: \
. R0 J  d9 e; f7 Q. S1 U研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
" y* g4 i0 K" e3 X; b, M3 S1 }8 Q# q3 _4 I8 s; D) j% A
9 F5 u2 K/ l$ x% u8 C
% Q3 Q" f9 p% u1 ~
function at 0x10024C20 is responsible for dispatching ioctl codes:3 w0 i, ?1 ~/ s* S2 a

- P0 L; T( R3 e0 U7 Y- H% o.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)
. T& Q* y" ~% ~% W+ \.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap5 @" S( E3 e; j0 g  [. Y- T8 C, `
.text:10024C20
+ E& ]- G& S* w& q. T.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
2 P/ D7 J0 }$ c# j" l9 f  ^& u.text:10024C20 var_31          = byte ptr -31h
/ R2 n$ o! g; o, }0 l.text:10024C20 var_30          = dword ptr -30h, I, x7 x! y6 b  p
.text:10024C20 some_var        = dword ptr -2Ch
6 s$ ~" R: Q# a6 ~4 s3 \0 h. f9 S0 }.text:10024C20 var_28          = dword ptr -28h
; O: X( R! D0 X* u% q/ ~. S.text:10024C20 var_24          = byte ptr -24h
, z- e8 l7 h/ L$ U# U  I% c0 {$ ^  H& g.text:10024C20 var_5           = byte ptr -5
$ ~: s9 Y. x3 k5 k1 U.text:10024C20 var_4           = dword ptr -4
3 F' m/ U- J! m8 y.text:10024C20 ioctl           = dword ptr  83 C. d7 s" i' E: A
.text:10024C20 inbuff          = dword ptr  0Ch
7 J0 o+ {# K$ E4 W- I: e.text:10024C20 inbuff_size     = dword ptr  10h$ r8 s0 X. m; g6 L4 b! y6 w5 y
.text:10024C20 outbuff_size    = dword ptr  14h& A6 I) K' B& h; f
.text:10024C20 bytes_to_return = dword ptr  18h
  x& x0 N; [: w. R6 r9 o: p) _' ].text:10024C206 Q) V& D8 Q! s1 Z8 ^
.text:10024C20                 push    ebp3 h* z0 Y8 I$ y* O9 }& K; d1 X, t
.text:10024C21                 mov     ebp, esp
9 n+ y2 t5 w+ m$ g- ]7 l- c7 q.text:10024C23                 sub     esp, 3Ch! M& b4 G- R& c+ v0 v( f1 ]
.text:10024C26                 mov     eax, BugCheckParameter2: `) h% z# c8 k. j/ g+ U
.text:10024C2B                 xor     eax, ebp9 `( Q( Y7 \& \* I" @% \' M
.text:10024C2D                 mov     [ebp+var_4], eax( ^+ \) l* t& Y3 A5 G
.text:10024C30                 mov     eax, [ebp+ioctl]
) ]! [- n' Y# f0 p5 b4 O& M' W- D+ B.text:10024C33                 push    ebx! |1 b1 ^0 ]9 m
.text:10024C34                 mov     ebx, [ebp+inbuff]
, t' S1 ]1 }; j* K.text:10024C37                 push    esi
1 C; l9 J1 y& {2 a7 Q  @.text:10024C38                 mov     esi, [ebp+bytes_to_return]
& i: z- x# R/ l/ W7 D0 C6 g.text:10024C3B                 add     eax, 7FFDDFD8h4 V# {" d3 X" i
.text:10024C40                 push    edi
  v; \3 C* n% P) r" F.text:10024C41                 mov     edi, ecx  ]6 t* n9 D9 d1 \, d* p5 `) q* V
.text:10024C43                 mov     [ebp+some_var], esi
* E& Z' V! ?' z8 n.text:10024C46                 mov     [ebp+var_28], 0% \; Q& H1 L: n+ {* X. |
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
. h7 K; y3 u& h.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case/ ~9 X! o. U3 e4 D, L! j, S
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]5 l4 ]( }) p3 |
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump/ S' ~7 u! p, e# O8 T# F
4 u8 P8 a% }6 W0 R# F  I! B
[..]$ {0 g# k  R. k( O* ]  ?( L
: f( R. s5 e  K& _1 e+ k
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
. r* Z: B4 h1 u0 k& H  v/ g# A/ d5 e7 L3 U
.text:10024F5A                 lea     ecx, [edi+958h]
, j, d1 D  ~& I.text:10024F60                 call    sub_100237B04 w' K- W6 `) w9 O! z8 A/ A! D
.text:10024F65                 mov     [ebp+some_var], eax( v3 V) n# p6 U/ A% Y
.text:10024F68                 test    eax, eax
  f$ @1 ~* Q$ r0 C. h/ V4 {$ y$ D.text:10024F6A                 jnz     short loc_10024F7D6 t3 ?8 ^7 x6 a
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
9 M3 V4 h# P  u: b; Y5 D.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
( |' U8 x- A: p# e+ R
7 a- Z* I  D9 H: f9 x- Inext in IofComplete request will be rep movsd at pointer, that is under attacker's control5 r# g5 t" x: _# _( ^
4 w9 C9 X- e8 G4 l) f* F
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. 8 Z+ h5 C; v5 ?  ^  j

0 ]" l2 h& ]' X% tSymantec表示在2月份的补丁包中修复该漏洞。
+ b$ k. B" C% G! i% j. {0 A; e4 F4 V& q  E. i
相关阅读:) p* D2 s2 p, w

' b4 T# l" m. y" h赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。* \) B7 {# k4 D$ x9 N& N% X5 Q
) W4 @' c* _1 {' Y
回复

使用道具 举报

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

本版积分规则

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