找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2372|回复: 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。' ~, h3 `/ q+ v* M" h( X) D; }8 v" _' V
; Z2 p. Y8 I% k3 x2 W% q! C% n
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
. R1 z- j- k$ [9 N" V4 c( ^& }9 d6 L8 J
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:5 f1 S- f" l5 m- |3 ]0 `

! Z) [! ?- ^$ S' `4 J
$ {4 n" l4 X5 [0 Z/ R1 }
/ W$ i5 q$ x/ f8 I/ k9 Zfunction at 0x10024C20 is responsible for dispatching ioctl codes:7 b; Q6 W6 y5 H: R8 l
& v" D) `9 N/ C" v, |1 H8 H
.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)
5 H3 @3 C* ]8 K2 k# q# W3 T.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
  X" l9 q5 _- k" T.text:10024C20- \7 ?0 @' R1 _7 h$ T9 P: }! i
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
2 }  a4 Z7 ~' e( ^1 L& `.text:10024C20 var_31          = byte ptr -31h( {/ i7 a+ T+ Q# }! I4 x
.text:10024C20 var_30          = dword ptr -30h
% o7 [% H& U: }; I* g& E6 T.text:10024C20 some_var        = dword ptr -2Ch
0 b! w0 x2 ^4 E# m. U6 z.text:10024C20 var_28          = dword ptr -28h1 q/ _+ }: c8 `. K
.text:10024C20 var_24          = byte ptr -24h
; f- Q$ ]$ c- k/ y" {& U3 ?$ a5 k  P1 |.text:10024C20 var_5           = byte ptr -5
2 h" `- R$ G; E6 S0 R.text:10024C20 var_4           = dword ptr -4
% ]% \0 f) g, O0 m: {: S) l# V.text:10024C20 ioctl           = dword ptr  8+ K7 t$ e: o+ N( v8 a0 [
.text:10024C20 inbuff          = dword ptr  0Ch
, P& O/ V. w9 C. i% z.text:10024C20 inbuff_size     = dword ptr  10h) r0 i* K; i0 {! b) r1 t( K% H9 y# X
.text:10024C20 outbuff_size    = dword ptr  14h
6 p. F' Z( F! f: [1 h- {& w.text:10024C20 bytes_to_return = dword ptr  18h0 C2 w2 [+ J( d
.text:10024C20
$ o2 O. w( @$ H: S/ K: E.text:10024C20                 push    ebp  J2 s# \5 S3 o6 C0 X' n
.text:10024C21                 mov     ebp, esp$ W, \) e1 _0 G: C9 i% n  N) ^
.text:10024C23                 sub     esp, 3Ch
2 ~, z3 s; K7 s4 Q; C7 s.text:10024C26                 mov     eax, BugCheckParameter2; `6 r1 B: f" O5 Q7 F; G4 M
.text:10024C2B                 xor     eax, ebp  Q+ ^. c2 D1 P8 Y) I
.text:10024C2D                 mov     [ebp+var_4], eax
# ?- L5 n, A+ [3 e; N.text:10024C30                 mov     eax, [ebp+ioctl]" E* `; e' V8 [- v
.text:10024C33                 push    ebx5 P. g* o8 a8 V; M
.text:10024C34                 mov     ebx, [ebp+inbuff]
* |( r- t. A" T5 |: v6 C.text:10024C37                 push    esi
- p4 S/ Z0 V* V+ Y.text:10024C38                 mov     esi, [ebp+bytes_to_return], x$ W! `# d; I- l: A
.text:10024C3B                 add     eax, 7FFDDFD8h
3 S) u% X6 y; F+ v& g.text:10024C40                 push    edi+ d5 {: T1 w0 ?4 }/ y2 V; W- N( ?( y
.text:10024C41                 mov     edi, ecx
  q; M$ A/ n9 l.text:10024C43                 mov     [ebp+some_var], esi
  s  `; C) ]; t2 O1 k1 s1 ?.text:10024C46                 mov     [ebp+var_28], 0$ E* p1 e+ t0 ^, m9 C1 N
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
% r: E, ?+ D' \" C9 I.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case3 v( |5 G2 `# {
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
, G: F  E5 U& H( {.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
7 i/ V3 C1 n9 o# a6 j  x- g$ Y- ]/ c8 i
[..]
8 ?  B2 Y2 k9 H! I
1 E  C' d' [6 q% L0x80022058 case: no check for outbuff_size == 0! <--- FLAW!9 a. T" O8 v% y; C, {9 d, G, t

6 e! |) ?. J" X1 x" \; {+ I.text:10024F5A                 lea     ecx, [edi+958h]+ |8 ~( |& M1 H$ n# Q. f# r3 S3 G
.text:10024F60                 call    sub_100237B0
% C  W9 f* t0 _& d.text:10024F65                 mov     [ebp+some_var], eax
( R& J' _+ T9 t.text:10024F68                 test    eax, eax. q% l+ Z& [: ?  e) m5 q5 P4 Q
.text:10024F6A                 jnz     short loc_10024F7D  R1 ~5 `3 E  ^0 N& e. P# s
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
4 A% e; X) N7 o. I9 |.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
. A$ w6 |6 x5 Y- ]% S2 T2 a
& R' l/ p! r2 s# Tnext in IofComplete request will be rep movsd at pointer, that is under attacker's control
1 u: I7 W! Q+ ?3 h$ {5 i
: @* N% j- I8 t- g1 NDue 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 w" d3 z0 R; L" E7 e' O8 T3 Z$ a3 d) |: }/ t9 k
Symantec表示在2月份的补丁包中修复该漏洞。  i) s" U- {3 z/ \' F
8 ]+ K$ \2 D! Z9 B7 @' n
相关阅读:
% j; z: M8 x2 N
4 G- n6 [  ~& C5 M/ h/ c) F% \4 n赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。  ?3 ^1 e9 d# R  u4 K- }

! ?. a/ ~( @2 g9 [$ X+ N2 d, u
回复

使用道具 举报

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

本版积分规则

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