找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2346|回复: 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。
& Z9 N& h- n; A& W' _- b
1 P9 g$ c# F- f- _, {* [) {Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
( `5 k* `6 X) F' Q! H1 S  U0 v2 V! ^, I4 r7 c  t
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:" P- k6 U. ?5 V+ t9 \

* q4 b5 E# Q  V+ m/ k 6 M- p0 ?8 D" n; ]4 _' V3 q4 Y
0 x  J" C/ e$ o; i* b6 ?$ Y7 H7 Z
function at 0x10024C20 is responsible for dispatching ioctl codes:+ [4 }, x& C* E3 H' ^/ M) z
1 i1 ?4 V, @6 a2 _% }5 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)
+ E+ W" X4 E* ~* q.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap9 D. X+ b1 T/ G* ^  k7 |
.text:10024C20
3 A2 @* M6 q% f* C) H( H.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch8 Y1 t6 o+ c& H: C# u5 L% ?
.text:10024C20 var_31          = byte ptr -31h, n% l3 }9 z) P8 E+ E7 S: t
.text:10024C20 var_30          = dword ptr -30h8 q9 Q  v; L  k# S; `6 y) O
.text:10024C20 some_var        = dword ptr -2Ch0 |2 E  y. B- L; y
.text:10024C20 var_28          = dword ptr -28h
% L5 K* Q" `' I5 d" @; U9 T.text:10024C20 var_24          = byte ptr -24h3 J/ c/ h# n- }2 Y
.text:10024C20 var_5           = byte ptr -5
3 L" x4 ]- ~9 `) _( \2 V& [.text:10024C20 var_4           = dword ptr -4$ {0 U) V) J; m& r7 k- V
.text:10024C20 ioctl           = dword ptr  8
9 V, _1 m, |- O' D1 d& o" I$ b.text:10024C20 inbuff          = dword ptr  0Ch/ J; \4 t5 ]5 N* S7 t
.text:10024C20 inbuff_size     = dword ptr  10h
1 A5 i4 P( L7 S( H' K$ k.text:10024C20 outbuff_size    = dword ptr  14h
+ I  t4 P, \" b8 f& w.text:10024C20 bytes_to_return = dword ptr  18h; ~4 r( y% X  ~7 r
.text:10024C20
3 b+ V# z4 l1 k& f& n.text:10024C20                 push    ebp
, X9 a) o3 R7 m+ ~.text:10024C21                 mov     ebp, esp
8 H7 o8 |! [: b  V) y5 q.text:10024C23                 sub     esp, 3Ch6 Q3 C- ?0 Y. h  ~  K- D
.text:10024C26                 mov     eax, BugCheckParameter2" `9 z  Y" b! u9 M" H% t( w
.text:10024C2B                 xor     eax, ebp3 t- G, b1 Z* C
.text:10024C2D                 mov     [ebp+var_4], eax
! |  ^4 C- ^$ H.text:10024C30                 mov     eax, [ebp+ioctl]2 P3 \+ p; W; e) m3 s8 k' E
.text:10024C33                 push    ebx% b9 f! K+ G1 V5 s1 S/ ?
.text:10024C34                 mov     ebx, [ebp+inbuff]
$ `& G6 D: k$ @0 p. [9 O.text:10024C37                 push    esi
2 _% K4 f+ n7 {" e.text:10024C38                 mov     esi, [ebp+bytes_to_return]
6 G( R- e5 n3 W6 p# p+ P.text:10024C3B                 add     eax, 7FFDDFD8h, l' u6 Q3 i! F4 I8 A9 u
.text:10024C40                 push    edi% f- Z' a& V0 i. ?
.text:10024C41                 mov     edi, ecx) M' i- B5 R, t- H* C$ C
.text:10024C43                 mov     [ebp+some_var], esi
8 f- ?. f# R* ^* t8 `" v.text:10024C46                 mov     [ebp+var_28], 0
! k) O8 n: P0 ^7 j.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases+ C5 K4 u4 M% B( j$ r' X3 T  H
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case3 {- e, J2 V% w! I
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]
' O( v2 B! I# G) _' |5 t+ l.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
6 H* e, O( e& Z
; q$ O2 f0 L0 I" ]7 V[..]. O; D# G+ F* C- G' F; ?
! R4 F# J* H+ y& Q: L  r. t
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!0 u2 j  v0 h: g+ @" [  _% l( A. A
# h$ P! g8 B# I& J
.text:10024F5A                 lea     ecx, [edi+958h]; a: n4 g( x' F, C7 e% O0 s
.text:10024F60                 call    sub_100237B0
* v( D6 N6 O2 S: _.text:10024F65                 mov     [ebp+some_var], eax7 z7 j  l1 f+ z( l0 s# o
.text:10024F68                 test    eax, eax
* u( y% t7 w+ v& h( [  G.text:10024F6A                 jnz     short loc_10024F7D" p% n. i4 J! b. n* v+ P* E
.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh8 r# {: m6 V" J7 L: G  M
.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer) F( S, _8 l/ ^

. E3 Z7 T' \& \! U7 I' qnext in IofComplete request will be rep movsd at pointer, that is under attacker's control3 r& K7 Y6 ^" y- l9 e! n+ y

8 {3 B$ c# |7 e2 nDue 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. 0 ?* Y* U! T; Y: I' H) _4 @3 r

' C! @8 r7 _! N  v9 jSymantec表示在2月份的补丁包中修复该漏洞。
( V6 e. f$ W2 ~" Z3 R0 s/ s' n$ C1 F
相关阅读:% z5 F* b2 O1 {0 I2 _
7 T$ X7 p$ }5 F- q" h
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。0 T2 R2 E) i8 a6 ]5 D3 a
# u! ~2 S" L5 l& c" t9 |
回复

使用道具 举报

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

本版积分规则

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