找回密码
 立即注册
查看: 3233|回复: 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 Y- Y# w, Z* D5 H1 O

3 w$ W, a+ u- u/ s# N8 g3 }* ISymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
7 E. I; g# `5 y7 @9 L+ K8 O0 |2 P/ l5 b3 R
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
* H1 C6 b0 t/ T& V; h
9 }- t: h6 U: ]' P& [ , N& C, \  n4 N8 ^

! j1 |  t) P- C4 }6 _& Q. qfunction at 0x10024C20 is responsible for dispatching ioctl codes:  H9 B# W8 s7 k8 t/ K1 G- E
* @: N9 y6 f0 F* q% m. ]) `
.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)
4 V# z( p! n3 {- u4 k& h& N.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap8 u( [! z9 Q' u
.text:10024C20, \; A; Y& t  G* n1 s
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
/ @8 C0 ~& W4 J, k* {. i: k.text:10024C20 var_31          = byte ptr -31h
$ R: y' d  ^! Y3 Z; m.text:10024C20 var_30          = dword ptr -30h
9 N7 H, u# Q$ }3 ~3 Y; q5 J% N.text:10024C20 some_var        = dword ptr -2Ch
$ B) Y* E! J; F, a1 `7 V" a  m.text:10024C20 var_28          = dword ptr -28h
* o: y1 D0 x5 k$ v1 b3 P.text:10024C20 var_24          = byte ptr -24h
- z/ X7 c0 h, L: U& ]6 R. f.text:10024C20 var_5           = byte ptr -5" J; j2 ^# A6 s* w5 R  H5 h
.text:10024C20 var_4           = dword ptr -4
! v) Y7 D( K. A: v7 O.text:10024C20 ioctl           = dword ptr  8% b7 P3 i0 Z+ G* e- m$ |! r
.text:10024C20 inbuff          = dword ptr  0Ch9 ?; d1 x, i: _4 h, ~. [$ x. T, F
.text:10024C20 inbuff_size     = dword ptr  10h; [7 ]# X6 r3 Y; ?+ [/ i! R
.text:10024C20 outbuff_size    = dword ptr  14h( W8 R7 f& r. \/ n& }
.text:10024C20 bytes_to_return = dword ptr  18h6 f2 \- Z2 {4 w; f1 W& v8 k
.text:10024C20
- \' t5 A. t  k9 i.text:10024C20                 push    ebp4 f# a4 o# Z5 m" I' I, v
.text:10024C21                 mov     ebp, esp! _" Y# a+ k. ~2 i/ m! p
.text:10024C23                 sub     esp, 3Ch
% ]1 O( `; U' X& F' S.text:10024C26                 mov     eax, BugCheckParameter21 Y# S' S- t2 X; a
.text:10024C2B                 xor     eax, ebp! S4 |3 u+ y) T: G" W5 R8 }
.text:10024C2D                 mov     [ebp+var_4], eax
% ^; Z9 i7 K' r$ S: F5 ?.text:10024C30                 mov     eax, [ebp+ioctl]  Z6 L/ M# j2 ?% y* n; ~! h
.text:10024C33                 push    ebx! W0 V  Q/ A9 N* _* Y
.text:10024C34                 mov     ebx, [ebp+inbuff]
# o/ Q# {/ C( L+ f/ k/ u# I.text:10024C37                 push    esi
& K" i" S: u; j5 Q( z1 k6 [! g.text:10024C38                 mov     esi, [ebp+bytes_to_return]2 V! Q9 f2 N. E' g' Z
.text:10024C3B                 add     eax, 7FFDDFD8h
. R( k$ f8 f5 t.text:10024C40                 push    edi
- E6 b4 ]5 D, w: m' U.text:10024C41                 mov     edi, ecx' D( L7 n7 r, |- }2 v
.text:10024C43                 mov     [ebp+some_var], esi5 ~  B) q! E' _: v/ S. g( {
.text:10024C46                 mov     [ebp+var_28], 04 m. m0 C. m# y5 f4 F, N
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
- i: t' o* Z7 r8 U0 ?.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case/ b+ J4 p# D% a/ q4 p
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
3 v/ a: T5 Z7 H: r) k: g' l.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump" `' g4 \2 h; I
4 |* N9 Q: z, i* y" ^
[..]' @' y  f( ^0 f# D, g

% }6 E/ g9 Y, g& j" t. x: ~6 G0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
; |/ Q: n0 o$ G& S! Q  o' e6 P. e% N- M6 l
.text:10024F5A                 lea     ecx, [edi+958h]
+ k  j: L7 k; `+ N; S  e" g( V.text:10024F60                 call    sub_100237B0. ^+ j" R* J& t9 [$ w5 k' w8 j
.text:10024F65                 mov     [ebp+some_var], eax6 T6 e+ ~  O9 R/ R) H/ V+ v
.text:10024F68                 test    eax, eax6 j% b9 M8 D" v1 @7 i: o
.text:10024F6A                 jnz     short loc_10024F7D
; Z7 [+ }: }. Y.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh" ]7 }5 R, |' k$ ~6 z: l5 a- b( x
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer0 t2 A: Q5 D5 V( x& I4 _

: l2 l1 b+ T8 [) L% Snext in IofComplete request will be rep movsd at pointer, that is under attacker's control
. r7 j- l: d* Q. f9 E' f1 G& U! l1 x6 K# ]3 W' i' T
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. . N& e7 [: e' o

  I8 U& i' q0 C( ~- Z/ p2 v5 PSymantec表示在2月份的补丁包中修复该漏洞。
! T0 N9 P+ |! e! r$ ?8 p; Y* W2 Q7 L! s( ~2 d' j9 @8 F- F8 Z8 o0 _' V
相关阅读:0 e7 a+ k4 `' c5 ]# r& Z3 ]
5 s8 \7 h5 k6 T% g( J3 c' B
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。% o3 I+ M7 ?  ^* b3 Z/ W
9 B! C, s) r8 s$ p# e
回复

使用道具 举报

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

本版积分规则

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