中国网络渗透测试联盟

标题: 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。8 _$ a( i+ ?- N
4 e( Q- k5 a7 D( m
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
4 H1 N9 i! S0 ~% N# E, K3 H( N; Q3 ]% s' H, u+ L8 E( v8 q
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:/ \( v! O2 ?# {+ w9 i
, }5 r) {) y. v8 w4 i- i

4 e( K0 h4 N( L' l9 t; d4 I2 N' l
7 e  u0 e2 o  f+ K& F& w: i: hfunction at 0x10024C20 is responsible for dispatching ioctl codes:$ s& l1 Z) B# W

$ p3 c6 v  h& |% _. J8 q& @.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)
; z( u6 f4 e% b) e.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap/ c, w4 F6 [" q- w/ L3 B4 i& V6 E! S
.text:10024C20; O& Z8 v, a" t
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch# m- _" M2 I, A1 ~$ R; W
.text:10024C20 var_31          = byte ptr -31h
/ v: ~1 V" A6 x: m6 d# l" x.text:10024C20 var_30          = dword ptr -30h
! h8 h+ g8 @6 n% S6 l7 C) K0 ?.text:10024C20 some_var        = dword ptr -2Ch" S4 F' ]5 G9 s' o$ k
.text:10024C20 var_28          = dword ptr -28h! f4 J  ~) A; @: E, D3 K
.text:10024C20 var_24          = byte ptr -24h: f) m- P; a4 L9 N6 s0 |
.text:10024C20 var_5           = byte ptr -5! D8 ?7 b; G+ W; o
.text:10024C20 var_4           = dword ptr -4
. h* o2 w8 e7 l8 A  b: a0 v7 l.text:10024C20 ioctl           = dword ptr  8
6 V: R5 o4 U' d+ S) u, D$ n+ E: Z.text:10024C20 inbuff          = dword ptr  0Ch
. G- w7 u5 a% B.text:10024C20 inbuff_size     = dword ptr  10h, x4 U5 r& F; R+ H
.text:10024C20 outbuff_size    = dword ptr  14h
- [7 L8 t- P5 p7 S9 S* c, {* v; @.text:10024C20 bytes_to_return = dword ptr  18h. ^2 J! v0 ?# I& ~2 x
.text:10024C205 }  G* [4 t  R7 J3 b/ Y: W
.text:10024C20                 push    ebp0 |) ?7 d6 \1 E7 x: a
.text:10024C21                 mov     ebp, esp! Q* A5 Q$ e( D. I  V8 ~% X
.text:10024C23                 sub     esp, 3Ch
; K; \8 ^/ \4 a, R# ^& i.text:10024C26                 mov     eax, BugCheckParameter2
5 o$ e+ Q+ @6 D* J$ u) B1 L* {.text:10024C2B                 xor     eax, ebp
% q7 v/ A: ]0 t' X" a: K$ A.text:10024C2D                 mov     [ebp+var_4], eax5 f6 J# V1 M# y- [: V, T. v* H3 h- d
.text:10024C30                 mov     eax, [ebp+ioctl]! A/ ]* E2 A8 V6 ^
.text:10024C33                 push    ebx
/ K9 z8 |9 l6 g. V0 |) K.text:10024C34                 mov     ebx, [ebp+inbuff]+ t) N# F/ c  |1 P0 }( W; r
.text:10024C37                 push    esi. ?. @  z' e" n4 x. ^* H0 [+ A
.text:10024C38                 mov     esi, [ebp+bytes_to_return]
5 p  o, @+ _8 X/ m8 I% |4 L  @8 F7 v.text:10024C3B                 add     eax, 7FFDDFD8h8 i& K: y4 k! H9 R& E5 s& V
.text:10024C40                 push    edi
. n1 `1 R7 F8 a" Y& K% ^.text:10024C41                 mov     edi, ecx' Y4 p5 x+ A' K. j9 C7 c- H& [' k
.text:10024C43                 mov     [ebp+some_var], esi
& h) q5 y: _& n1 u- J( W.text:10024C46                 mov     [ebp+var_28], 0! T/ ^, h- t: W+ z/ s' D
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
  N& L# A" H% ~2 S.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case# P  G" K9 c/ u3 O* x
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]7 ?1 a2 Z" T9 n0 B: S, p
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump% Q: W9 S; s) q% E
' r# X* S7 G8 y
[..]
$ w& e# P: b  f8 ?4 D
! n% @/ B  w# }( N# u0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
4 m2 }4 _9 ^' J
* I- |* I( ~- l9 X& k* Y" @$ \.text:10024F5A                 lea     ecx, [edi+958h]5 p$ Z0 l- b* L* |& s
.text:10024F60                 call    sub_100237B0
+ S. @" V* {- }- `, f- P$ i# e* Y& C.text:10024F65                 mov     [ebp+some_var], eax+ T9 Y& z" P9 a( a1 X3 C; m
.text:10024F68                 test    eax, eax
0 T# n! X5 s3 l5 y+ ]* `( K4 ^.text:10024F6A                 jnz     short loc_10024F7D: Z6 P8 {. P1 W" B
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
- ^, Y# ^" ?- |: V.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer# t( @$ c. S5 Q+ }% c7 P
, x4 {7 \* D/ X( Z4 Z/ t7 A0 A
next in IofComplete request will be rep movsd at pointer, that is under attacker's control
) ^; y8 {  K9 k( \: l  I3 v8 C( `8 t' Z  G+ J6 y' 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. / r" r% R1 b+ N3 h6 r0 _

  T% |" u4 A4 w) B: ?Symantec表示在2月份的补丁包中修复该漏洞。
" K% y7 B; s0 [4 b4 ]3 {2 K8 V/ Z, E: E; T
相关阅读:
* i8 n+ m9 R3 D1 R, x7 V1 f+ O0 G$ ~) R" y5 ~6 N8 x
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。2 V3 W6 L% j5 M2 G* i; j6 A4 Q

3 B  Q- A4 J8 E+ D' Q) ^7 m




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