找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2604|回复: 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。
6 j4 y' s- n2 |- b9 F3 K
# n9 j! y; x/ s7 A( B4 E9 pSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。) G8 {6 c. Y* a( ?/ Q! J
0 y$ b; p: [! W4 k$ x
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
1 `1 ]& D* K8 l' e3 a  s1 n+ G8 O  `
" l2 u7 F; J6 R# R, u, z9 A
; I4 s' Q  T  J1 D# f( ~- r% ~8 V2 b8 ?( D+ L/ g1 N& M
function at 0x10024C20 is responsible for dispatching ioctl codes:. ^9 n, H/ W  w/ w

, q5 S. e- ~7 X1 O.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)
3 \$ ~5 |  e( K" n3 `.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap& w" q5 V9 D1 M' C, y
.text:10024C20, i! T' w  }; c. F( Y6 }. R
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch. S7 `% w4 T0 U' v; a) g
.text:10024C20 var_31          = byte ptr -31h% a& N2 s1 p9 t# @4 m
.text:10024C20 var_30          = dword ptr -30h+ H4 S, O2 _( o7 m
.text:10024C20 some_var        = dword ptr -2Ch
: g% y* F+ X' c* P. A7 D$ |.text:10024C20 var_28          = dword ptr -28h
% h$ Z- d" {* ?' }4 F% C1 |* z3 E.text:10024C20 var_24          = byte ptr -24h; Q) w$ j$ p0 B4 [1 l  W
.text:10024C20 var_5           = byte ptr -5
0 R! l9 t/ r9 ]" h% [6 W, T$ k.text:10024C20 var_4           = dword ptr -4; f6 Y/ @( y. X! G
.text:10024C20 ioctl           = dword ptr  8' ?6 |) \) T+ `8 e# E7 w. x
.text:10024C20 inbuff          = dword ptr  0Ch, D5 k$ F2 e, |+ O0 C
.text:10024C20 inbuff_size     = dword ptr  10h  q7 W6 g* _$ V1 ?8 P8 m
.text:10024C20 outbuff_size    = dword ptr  14h
. z- y0 t" ]* }: I5 R0 B" m* c0 w.text:10024C20 bytes_to_return = dword ptr  18h; i' {8 v3 [6 e" |/ G' W
.text:10024C20$ x! O% v& p$ C
.text:10024C20                 push    ebp
, b. b! c$ ^8 U* E7 w+ p+ j.text:10024C21                 mov     ebp, esp
/ }' _3 Q: V; M7 }/ G.text:10024C23                 sub     esp, 3Ch( X! r8 P( A3 @4 g
.text:10024C26                 mov     eax, BugCheckParameter2' N/ Q1 [7 a2 m: H& I$ V1 J
.text:10024C2B                 xor     eax, ebp) N7 N' ]. e1 l3 y
.text:10024C2D                 mov     [ebp+var_4], eax) y& @6 c1 }% d4 ?) k; F7 R
.text:10024C30                 mov     eax, [ebp+ioctl]
  W# I+ d- d' l. N6 O.text:10024C33                 push    ebx) v7 S1 v5 s. p
.text:10024C34                 mov     ebx, [ebp+inbuff]: c" g4 p6 S8 U$ R$ B6 N- u9 t
.text:10024C37                 push    esi
6 _/ W8 P) M; F! b. U2 e! R# m.text:10024C38                 mov     esi, [ebp+bytes_to_return]
, J  \# T3 [! d% e3 v% R0 K8 a.text:10024C3B                 add     eax, 7FFDDFD8h9 \1 h8 W# z% T8 n7 c& [# ~  X
.text:10024C40                 push    edi
+ @8 Y- r8 d8 C" N/ e0 ~# f5 d8 t.text:10024C41                 mov     edi, ecx
0 F. Q) X# Y+ w- Q4 l/ }.text:10024C43                 mov     [ebp+some_var], esi7 W1 c9 x; ]4 |& t- V7 V
.text:10024C46                 mov     [ebp+var_28], 0
' r7 E$ g8 A' B' ]5 N* n.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases
$ @1 k; e& _8 b4 U6 ^.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
/ w. f1 e# F! E* f; w# z.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
& f% f/ x7 y; Y. l* ?% o! e.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump2 A! A* j% M' ~$ ]% g4 r
  o1 ]% Q% t; N# j
[..]
$ E3 N5 m5 z8 D" F! z( |( q" j! H) [
) ~; u5 z2 i0 ^0 f$ V+ q0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
8 B8 D% u) X6 s; l. `) Q
# h6 X! e& M- V0 p.text:10024F5A                 lea     ecx, [edi+958h]
$ p( v+ ^4 `+ Y, s% c0 M! V.text:10024F60                 call    sub_100237B0
1 d6 ~6 m& I+ t- n  P9 K.text:10024F65                 mov     [ebp+some_var], eax, Z: }( ]- w7 f$ K
.text:10024F68                 test    eax, eax
2 x" [# v1 h+ I  A7 `1 d.text:10024F6A                 jnz     short loc_10024F7D% p4 O/ C- w6 ^8 ~) s: p
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
; {( D8 `5 ^1 [. R2 r$ D3 D6 S2 p.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer+ d+ _' Y: K- t  x3 c% X/ q6 \
% [( ]) @$ g1 }
next in IofComplete request will be rep movsd at pointer, that is under attacker's control- n7 `5 S0 A$ t8 o
' i9 i* ^. G) t2 v
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. # w! r' p" g4 A: P

( d% {2 O) z( i; `5 Z3 ZSymantec表示在2月份的补丁包中修复该漏洞。4 z  M9 K- _- e( S1 [) e

3 U4 b3 b! {) k. e$ D+ p- q& M# J相关阅读:7 {9 e9 T# w$ @% V
- W9 }: ?: ^: B- ^" m
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。4 Y; s; W1 u0 k* @4 I9 L5 ?* r

: s' |; _; N3 A$ W# e  m. l
回复

使用道具 举报

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

本版积分规则

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