中国网络渗透测试联盟

标题: Symantec完整磁盘加密软件爆0day漏洞 [打印本页]

作者: admin    时间: 2013-1-11 21:11
标题: Symantec完整磁盘加密软件爆0day漏洞
日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。0 S* I3 \; ?. A

/ y4 _* l( r" m& u; JSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
' s0 h8 N: R& k
1 Q/ _4 @! f' X/ [( l, X研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
$ }  ]% o+ A% P) ^/ c1 P# q$ c0 r* {) S% X
# B% i0 i9 N& I
9 V1 |" y+ F1 |0 l. d
function at 0x10024C20 is responsible for dispatching ioctl codes:
/ W+ f7 |2 i% z# V& y
8 ?$ O& [  x/ Z% l.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) w1 o7 J' j- F# Y7 K; W.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap
5 [0 s: A# x- T+ Z- p* h.text:10024C20" h0 A& U; g$ h3 Q. I
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch  r  x* T4 m' q, O4 ?6 q5 t& j
.text:10024C20 var_31          = byte ptr -31h
8 i% P, g& A( q$ H.text:10024C20 var_30          = dword ptr -30h
, q. S+ z. s. @- k0 k; [.text:10024C20 some_var        = dword ptr -2Ch, B5 ^  s1 I( ]0 I6 ~$ T2 \/ i
.text:10024C20 var_28          = dword ptr -28h3 n  @. Z9 M* z( F$ H' I% \
.text:10024C20 var_24          = byte ptr -24h
4 a. x) H/ }; f2 ]6 F$ t# u.text:10024C20 var_5           = byte ptr -5! T, H% ^5 C% ^: ^, X& j& C/ N
.text:10024C20 var_4           = dword ptr -46 z' U$ ^+ i& c* ~3 n
.text:10024C20 ioctl           = dword ptr  8
* C3 N" h1 h7 t.text:10024C20 inbuff          = dword ptr  0Ch
/ C2 J: a1 r4 b6 J+ K5 H1 o; G1 B.text:10024C20 inbuff_size     = dword ptr  10h
1 W3 C/ o' O. p' m+ K' |2 a.text:10024C20 outbuff_size    = dword ptr  14h
# S9 j! q$ B! Q/ w+ @: M; x.text:10024C20 bytes_to_return = dword ptr  18h
! d3 X9 Q5 `1 [- P& @.text:10024C20
" I4 T/ @+ q. W) x( I.text:10024C20                 push    ebp
9 y) G3 ?( {0 S( t.text:10024C21                 mov     ebp, esp* w5 ~, i# W1 b1 b9 Z5 V/ `
.text:10024C23                 sub     esp, 3Ch
9 L, T% o8 T+ q; C, L- v( g.text:10024C26                 mov     eax, BugCheckParameter2
, u1 j) ^0 `2 T.text:10024C2B                 xor     eax, ebp
% H1 @3 U9 U& R8 X  v.text:10024C2D                 mov     [ebp+var_4], eax2 d2 k. t+ \5 C! v8 _. _1 c
.text:10024C30                 mov     eax, [ebp+ioctl]2 \) u, o) E0 F3 l, O8 m
.text:10024C33                 push    ebx
2 ^1 f5 \) p! v.text:10024C34                 mov     ebx, [ebp+inbuff], v/ ~( i# d% t0 E6 a
.text:10024C37                 push    esi
% [7 w+ k8 T) Z" L1 F9 b.text:10024C38                 mov     esi, [ebp+bytes_to_return]% z4 y$ |/ h1 I3 e: ?6 t
.text:10024C3B                 add     eax, 7FFDDFD8h0 E  Q  d% {$ H/ n4 s/ }, Q
.text:10024C40                 push    edi
9 V/ T5 }2 u+ @1 B7 j.text:10024C41                 mov     edi, ecx
2 f* D5 r/ f* A6 c' _# x3 o# y/ a.text:10024C43                 mov     [ebp+some_var], esi
5 J( o& y3 e8 D7 e; t& w.text:10024C46                 mov     [ebp+var_28], 0- C7 x& s0 t( U, L# U' t; Q+ P* c
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
/ i8 x: H- `1 j& r! m5 S- |2 S.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
/ f! Y: i* K# G+ ]( C# r.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
) \5 }$ L3 ^: d" S.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump4 k' `" x0 w' V( `: Z! {

2 {, o3 z. F. y' i5 ~[..]
$ u7 T2 ~% A0 x3 i* A" S0 e5 E0 T5 m; s9 ^: o, d% v" L4 }
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
! k7 X4 R0 n8 \  f0 y9 ^0 G4 ~3 Z
6 k, \, _" P& y! N  l+ D.text:10024F5A                 lea     ecx, [edi+958h]4 s3 p4 D  I9 |, k
.text:10024F60                 call    sub_100237B0
9 H& U% y$ U$ A/ O+ i.text:10024F65                 mov     [ebp+some_var], eax
0 I1 t7 P4 _% g8 X8 t. m9 ^, Y1 m.text:10024F68                 test    eax, eax
& C2 R; P" ~2 f3 Q6 s0 [+ K1 ~5 F.text:10024F6A                 jnz     short loc_10024F7D% v) t- I' w  Z4 _/ o
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh/ b$ b( o3 @1 R+ ~5 G
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer) z' Q* v9 n& v1 q6 S

) f& j$ Y3 T, `, Z8 `2 Tnext in IofComplete request will be rep movsd at pointer, that is under attacker's control
3 ^7 @! A& x2 L; L4 @( [" x; ^2 M! T8 _& q$ N6 l7 s
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. ' Y5 L9 u/ N/ Y0 C2 G# F& g

. ^6 O% Y* N% m0 [3 vSymantec表示在2月份的补丁包中修复该漏洞。5 {( m) j+ P$ \0 K1 Q

2 b  ^3 Z8 N& |$ h$ V相关阅读:
; ?  R5 L: n2 {$ K1 q+ b5 C2 p; I5 @: E, H8 h. [% H/ S
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。  B$ p+ m: e  M4 w3 L: a) p: Q
2 y8 W+ V; ^: J) J1 E/ C1 B





欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2