找回密码
 立即注册
查看: 2727|回复: 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。4 p6 g/ v$ D* K. H

: \- i. w) i' k5 FSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。6 t( ?7 |6 R4 t
! U+ ^! E7 m; D5 e% Q- ~
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
# U# l% ^3 p4 R3 |+ g- A7 O$ C& Y% D- L5 p
1 E' O! I! `9 ~8 ^' B% [  J

6 `$ t0 R0 x. f% A4 R. gfunction at 0x10024C20 is responsible for dispatching ioctl codes:& X. t9 n/ m1 J

$ H! S0 u5 ~9 Y% C! k6 v.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)
& U& J# n* h( L) f" C( G.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
+ s: X! R2 }  F( S6 B+ q9 B$ c.text:10024C20- V4 U1 [$ V# y7 P, H9 [
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch7 R5 o9 c3 S5 ^5 r0 D
.text:10024C20 var_31          = byte ptr -31h
; ]3 t3 ?) q; E2 c7 a+ A.text:10024C20 var_30          = dword ptr -30h, K; @% p' y/ M* P* x# i$ |/ Y# [
.text:10024C20 some_var        = dword ptr -2Ch
( Y3 S/ B! Q9 ^2 r9 E2 Z& y.text:10024C20 var_28          = dword ptr -28h
& M# V8 A7 K0 j7 B, y.text:10024C20 var_24          = byte ptr -24h, r0 q5 v0 x8 _8 @
.text:10024C20 var_5           = byte ptr -5
* Q8 c: y' ^, I+ @# k' P/ k7 W. B.text:10024C20 var_4           = dword ptr -4$ p* V5 [& p  @! G
.text:10024C20 ioctl           = dword ptr  8
/ t3 m) Q9 M& X/ i4 Y9 m7 a* a.text:10024C20 inbuff          = dword ptr  0Ch
& ^+ n: q# M+ N$ M, E# R/ b* l.text:10024C20 inbuff_size     = dword ptr  10h& L# z3 v; v* X# x  E% d1 N
.text:10024C20 outbuff_size    = dword ptr  14h
6 F0 k% ?# g6 F2 N! ^  E9 G.text:10024C20 bytes_to_return = dword ptr  18h
( [8 F3 }0 ?" k5 ^) N: H.text:10024C20/ n4 h: i# v1 P0 \9 E
.text:10024C20                 push    ebp
, F+ D( L# o" Y) @.text:10024C21                 mov     ebp, esp! D  k' `- j+ I1 z, R
.text:10024C23                 sub     esp, 3Ch
6 }) X+ U3 O' `.text:10024C26                 mov     eax, BugCheckParameter2$ V& d0 Y# E" X5 c: _) e. s6 D( L
.text:10024C2B                 xor     eax, ebp/ S7 [9 X" t4 `5 O* l
.text:10024C2D                 mov     [ebp+var_4], eax
2 n4 N. I) K. |7 ^' T0 w" V+ V.text:10024C30                 mov     eax, [ebp+ioctl]
2 R+ _0 |" t/ p6 ?4 V.text:10024C33                 push    ebx* d' U0 V+ l1 u* n1 d
.text:10024C34                 mov     ebx, [ebp+inbuff]9 M$ F8 P, @* V- X3 m( \+ o
.text:10024C37                 push    esi
2 m7 O4 t; r9 s& _) I# x' S.text:10024C38                 mov     esi, [ebp+bytes_to_return]/ B+ J9 P+ F; X- |/ c
.text:10024C3B                 add     eax, 7FFDDFD8h
( @; f' Z( |2 a/ i5 T& w" L+ Y/ }.text:10024C40                 push    edi) O  X; f4 Z( J* V" u
.text:10024C41                 mov     edi, ecx
# N: W  b) x( {# M5 u4 s.text:10024C43                 mov     [ebp+some_var], esi- x" G$ D  |/ i. P7 \- m/ L
.text:10024C46                 mov     [ebp+var_28], 0
: N/ r! h7 ~: g  q4 L.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases0 M- M+ E/ G- ~4 q( N: l, l0 i
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case5 I( t) ^$ |6 i& L7 w+ `
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
# P: |9 `# z. G6 \8 A2 O.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump' g6 i- p5 F! h$ `) s

" J; E8 W( p$ \- S2 m[..]# n: c7 Q: m; Y2 {# W5 v  g; _
/ p/ `$ y- V$ R7 T" F- G
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!! A3 u( U1 z& P% b, ?, P  x5 V

9 O7 M8 }* U" y% p6 t4 g.text:10024F5A                 lea     ecx, [edi+958h]5 f. `1 B' _5 }/ l
.text:10024F60                 call    sub_100237B0% Z: q+ I. q( s& q$ f1 z
.text:10024F65                 mov     [ebp+some_var], eax
! c3 h8 J. z0 C0 q- F7 Z.text:10024F68                 test    eax, eax
5 n6 f  o- g' r3 G.text:10024F6A                 jnz     short loc_10024F7D+ |9 _, U7 A; ^+ }5 n
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh  n" [1 L+ A! I; M2 w' w! S
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer1 |7 W2 D* z, R8 d' @8 Z
+ T) d$ p/ t7 l$ d; l, x) P
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
: y2 @5 y* a! }' b: s" v5 h, J* q# U& \
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.
" ?- Q7 }) X6 z0 l
! \' `7 E: s. U8 a5 M$ kSymantec表示在2月份的补丁包中修复该漏洞。
1 ~; I& b4 w8 \2 `5 Z7 [  V9 b% W3 X2 Y, t( a3 e
相关阅读:
# x! U7 ^4 d8 M  ?; l
% U1 Q) T7 D' N3 w' ~0 W2 [赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。, L9 _$ M: L5 D6 i
6 Q$ J$ M, m' ~5 J
回复

使用道具 举报

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

本版积分规则

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