找回密码
 立即注册
查看: 3054|回复: 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。
% A" K- P! }& B. U3 d: e! Z4 d# Z+ R7 i. {# m5 i
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
: P4 a( S9 D) W9 y! o& Q1 E# w, X3 l
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:0 z9 r5 z+ k) e& S* S
. s. q" D& o, ^! Y0 [& O% @8 }% O0 r
" o! v1 Z4 `4 U! [5 y) x% ~. O
% k) S& Q, g. T9 y& Y" o; ^
function at 0x10024C20 is responsible for dispatching ioctl codes:
( m9 A' D$ _6 H) Y6 |" h8 f6 d! z& v6 S  e* }* X! V9 W
.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)
7 \; o2 d5 d3 q% V.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap6 ?+ [- u8 S+ D& W- s. I
.text:10024C20
. q8 ~5 i0 n  l( L; ~.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
; e9 g& v" j. @.text:10024C20 var_31          = byte ptr -31h
. n- Z$ L* {; q" X.text:10024C20 var_30          = dword ptr -30h
; `+ O% V% H* Q$ S.text:10024C20 some_var        = dword ptr -2Ch
) B5 o0 g0 {3 B6 t: \6 X# g.text:10024C20 var_28          = dword ptr -28h
9 Z+ s, n8 \2 r2 r, I& t/ Q# Y6 L.text:10024C20 var_24          = byte ptr -24h
8 C' B3 k4 x2 B( l$ p" X.text:10024C20 var_5           = byte ptr -58 G  @2 r* H+ q- |, I3 L- a  }$ x2 |/ O
.text:10024C20 var_4           = dword ptr -4
( R; n$ |7 w1 _6 [" {# H; T.text:10024C20 ioctl           = dword ptr  89 H( p6 q* _  g- Q
.text:10024C20 inbuff          = dword ptr  0Ch
* o- X: k5 T" b7 R6 l9 z$ z.text:10024C20 inbuff_size     = dword ptr  10h
0 H* M) F) f/ m" p$ D! L.text:10024C20 outbuff_size    = dword ptr  14h& D6 Z& y0 j, [' H. i, N( }6 W* p
.text:10024C20 bytes_to_return = dword ptr  18h
; ~6 w8 o. I4 J- h3 v* }: ~.text:10024C208 P: z0 X4 Z& C6 L. k/ y
.text:10024C20                 push    ebp- [3 e; L2 h6 e, c
.text:10024C21                 mov     ebp, esp
, h* v0 }* ~% i" [! d.text:10024C23                 sub     esp, 3Ch" u4 k  \. V. A0 ?: B, w; w- W
.text:10024C26                 mov     eax, BugCheckParameter2' m0 l! Z- q  Y6 V
.text:10024C2B                 xor     eax, ebp3 p- y7 N/ `& j' a
.text:10024C2D                 mov     [ebp+var_4], eax' P2 S9 t$ A+ @+ M2 }/ Q' W
.text:10024C30                 mov     eax, [ebp+ioctl]) D3 }5 c2 c6 q2 d1 x. t9 J' ?5 j6 H0 D
.text:10024C33                 push    ebx
) G! |' A5 O& e5 Y$ o7 o.text:10024C34                 mov     ebx, [ebp+inbuff]" R3 F9 B2 h+ y% {1 h' G( ?4 M. I
.text:10024C37                 push    esi
4 B2 v' f+ n# v5 l/ S.text:10024C38                 mov     esi, [ebp+bytes_to_return]
8 Z# U* [$ f  L  P# b.text:10024C3B                 add     eax, 7FFDDFD8h  {0 b1 q) B! X( e( K. J
.text:10024C40                 push    edi
, Q( Y$ r! s. y9 ~.text:10024C41                 mov     edi, ecx
7 {& Y  [" ~  l& u) v* g7 [4 |9 |.text:10024C43                 mov     [ebp+some_var], esi9 N+ ?4 O; n6 P
.text:10024C46                 mov     [ebp+var_28], 0
$ d9 s7 ?' J: F6 R, l4 L.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases% ^) w0 c2 V- C2 H7 K
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case
* O+ I  A( q2 m* p& `, a.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]7 V" l, c9 r  b, ~" P4 F
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
& I: K0 F$ h7 {- r
# ?% S0 @2 T5 k" `2 p. @[..]' G) r' m/ |5 s% J) a+ H
$ Z: R8 {4 {6 q$ ?' b9 `# Z
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!$ k" ~  Z" r8 \8 q" N
( L8 o: o4 b4 h$ _( v
.text:10024F5A                 lea     ecx, [edi+958h]  q: {# J6 }7 V  Z+ s
.text:10024F60                 call    sub_100237B0! V8 J* c6 `, l- p
.text:10024F65                 mov     [ebp+some_var], eax2 a( X7 _8 f8 `7 `+ F4 o. h
.text:10024F68                 test    eax, eax
' M! O: [6 u, ^. q: q.text:10024F6A                 jnz     short loc_10024F7D
& @- H2 D5 ~4 `& {& M4 }8 a0 F+ W.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh9 S9 n( p1 u9 A* q! Y
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
+ `1 C$ G; @5 s1 |- E+ D
% ]- e* J2 y5 V6 T& `3 ynext in IofComplete request will be rep movsd at pointer, that is under attacker's control! I& ^$ C8 K1 Y: i. y
' `% i( Y/ |) g1 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.
$ t2 j0 t7 N, g7 C8 l& G& F  O( q+ b& R$ p
Symantec表示在2月份的补丁包中修复该漏洞。
4 F; k: K. }7 y; k& ~% C
$ H  ~2 q- {( m9 ^1 h* Z  F3 Q相关阅读:
  R4 B+ x) r- f
3 F5 p: m- v8 M- G" F赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
8 |: s# T! B# N
, V- e% d& _6 S* C
回复

使用道具 举报

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

本版积分规则

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