找回密码
 立即注册
查看: 3142|回复: 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。
" @& m6 C4 r4 _# H$ M: m- g4 d8 ]0 a- p6 k  U+ a" y0 e
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。/ D. l0 ^$ ]" ?& a
+ G& e, ]$ U; ^1 W; _7 N
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
2 a5 e* g( m' z3 e
  X: L, p# `9 w9 Y/ j  V & d9 D/ Z5 [5 R. @7 C& }2 P+ {

7 l9 H1 [+ V8 d4 y' y2 W9 _' Ffunction at 0x10024C20 is responsible for dispatching ioctl codes:
- v9 R; ]8 a& Y. @, |- u' P* u$ ^+ W- {' x) s9 y. k
.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)
( h, c& ^$ ^/ ?+ y2 p* H4 c9 z.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
+ ?& d3 f8 {! ^8 F* G* p$ f, b.text:10024C20
) U9 ^! h: n/ p& k.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch/ @3 q+ n% ^) g! y
.text:10024C20 var_31          = byte ptr -31h
. |4 ]) n4 u) `' p& L, @  B' G5 A.text:10024C20 var_30          = dword ptr -30h, o9 `% o; `4 u( H
.text:10024C20 some_var        = dword ptr -2Ch
" v' t' p* x5 _" e.text:10024C20 var_28          = dword ptr -28h
3 W1 `! ~3 N, v3 S.text:10024C20 var_24          = byte ptr -24h% Z$ Q4 f: h8 `) ^9 C
.text:10024C20 var_5           = byte ptr -5$ _/ R- e$ A- I! F
.text:10024C20 var_4           = dword ptr -4
# M  b( |! L0 B& Y: k% I# N.text:10024C20 ioctl           = dword ptr  87 ]8 X/ }8 j6 Q, a6 m# J; T
.text:10024C20 inbuff          = dword ptr  0Ch
  C2 ]5 J# f/ V, F.text:10024C20 inbuff_size     = dword ptr  10h9 {) _7 L8 o7 O
.text:10024C20 outbuff_size    = dword ptr  14h/ O- B; ^# H% Z! U+ {2 M+ a
.text:10024C20 bytes_to_return = dword ptr  18h. L* ?$ j! v4 |- T& W0 W6 i! V
.text:10024C20
) v1 {3 M! Y* w. o4 A.text:10024C20                 push    ebp
7 ]6 f0 l5 C4 N9 f  B% B# l* K.text:10024C21                 mov     ebp, esp7 e6 X2 S7 K' Z+ d/ V
.text:10024C23                 sub     esp, 3Ch
7 k& S7 ?& T; R5 N0 V0 Z.text:10024C26                 mov     eax, BugCheckParameter2: W1 t% J# ]' s. D- |# N
.text:10024C2B                 xor     eax, ebp
/ P: W( _1 w9 h+ C" j.text:10024C2D                 mov     [ebp+var_4], eax
& N( `, x3 x; w# H. s* d1 l.text:10024C30                 mov     eax, [ebp+ioctl]
/ G( a6 P; |1 j0 C, D.text:10024C33                 push    ebx
( O5 z. S) T5 n.text:10024C34                 mov     ebx, [ebp+inbuff]
  d5 T, `7 }7 W2 v* S+ C.text:10024C37                 push    esi* |& W% L; [% ]; C1 M: O* x
.text:10024C38                 mov     esi, [ebp+bytes_to_return]( o: h( X1 U& G/ S4 a) N
.text:10024C3B                 add     eax, 7FFDDFD8h
1 B1 E; d# |7 u# V' i+ b' ?' G. Z- C.text:10024C40                 push    edi6 e9 f7 P$ Z, U1 L( x; ]
.text:10024C41                 mov     edi, ecx8 f1 v2 m7 Z4 u! y0 ]
.text:10024C43                 mov     [ebp+some_var], esi
+ a: u# [, l4 ~) ~7 C.text:10024C46                 mov     [ebp+var_28], 0
/ E, a0 a7 l7 }' {0 C! l& d. r( M.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
2 Q' Z& @" K* }1 ^, |1 c.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
- N: x/ {& t+ ?2 \$ w" e.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
: {* y0 C. v& k( [8 C.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump% n- i; B7 ~  b; [

9 M9 Q0 D: U5 ~9 T) C7 _[..]; [( I) t1 h" ^* @* N1 ]* z2 w

# U, q/ c3 R: z0 k( y0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
6 _& U4 ]5 x# c- o
% Q0 D1 M2 G6 i/ W1 z0 k.text:10024F5A                 lea     ecx, [edi+958h]" ]- g1 i5 F- C5 @! n4 b! h; v
.text:10024F60                 call    sub_100237B0# m* ^  _4 G0 l* M2 B& N
.text:10024F65                 mov     [ebp+some_var], eax  h4 H: A5 u& b5 L
.text:10024F68                 test    eax, eax
3 U+ l' Y8 o% m4 f6 B.text:10024F6A                 jnz     short loc_10024F7D" ~" e# j0 v9 B: b9 |9 Z8 ~
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
8 t0 O) o" [: S% @- y& S* z# d- r) Y.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer+ U  F  c8 ]# n& ?
" }* K$ Y$ q, }+ E% {+ q5 d
next in IofComplete request will be rep movsd at pointer, that is under attacker's control6 `* J+ w6 f  P/ Q7 V

; Z- @: P# ~6 o  wDue 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.   l6 f# J% w  h/ e2 R
6 y+ G8 r2 e2 r" k' d7 s: B
Symantec表示在2月份的补丁包中修复该漏洞。+ W8 Z& i: x& B1 F- P0 D. o  L
6 k0 I- I$ a7 F: e; e4 G& n6 j
相关阅读:7 `0 X. m6 {+ o( [# P3 R  i

3 d4 p9 i; o1 @) F) T* S赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
( H! b5 V+ M5 l6 g5 {. X; m4 d8 H9 _' b
回复

使用道具 举报

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

本版积分规则

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