找回密码
 立即注册
查看: 3154|回复: 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。4 v" ], O0 d" ^( W: q: S; J

( V: y" G; S% @9 f3 ySymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。3 m- h  [) J& j9 `* M2 l9 o

" t& h# A0 q  |! R研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:, I) ^7 k6 ]+ L
; A  q6 q8 L# ~8 o1 l: @
7 O* V, ^7 D! m9 m) N

* h) _- ~; W" `. n9 a" Wfunction at 0x10024C20 is responsible for dispatching ioctl codes:
% R1 T$ K3 P4 }- D3 I$ e( [" \' P
2 g/ G* O& `: v6 F.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)0 i$ n  a. r& v( o- T
.text:10024C20 ioctl_handler_deep proc near            ; CODE XREF: sub_10007520+6Ap9 I+ ^* ~3 `1 A9 G( g
.text:10024C20
# z+ Z- P6 J3 d  `.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
6 X2 F- w$ f) X7 q. J2 S6 j.text:10024C20 var_31          = byte ptr -31h
/ Y! l7 I" c! p7 v.text:10024C20 var_30          = dword ptr -30h
+ P: F1 E# d7 m4 ?; R2 P.text:10024C20 some_var        = dword ptr -2Ch: H2 f- q, z- ^  ]+ e/ a* y; n  |, N
.text:10024C20 var_28          = dword ptr -28h
0 A6 n% g* L& n' s.text:10024C20 var_24          = byte ptr -24h2 I5 S1 ~$ s! W" o. G- \2 \
.text:10024C20 var_5           = byte ptr -5
) o: f4 b! r. c# ^0 [. w5 c8 I.text:10024C20 var_4           = dword ptr -4$ G6 ^9 a6 L& E+ }0 S5 s) B
.text:10024C20 ioctl           = dword ptr  8- _2 y5 S6 e7 Q
.text:10024C20 inbuff          = dword ptr  0Ch  ~' Q4 a/ X% z
.text:10024C20 inbuff_size     = dword ptr  10h* E/ g4 |* @" ?' A/ f
.text:10024C20 outbuff_size    = dword ptr  14h' S( r& p6 z5 E1 q" R
.text:10024C20 bytes_to_return = dword ptr  18h. Q* [  R2 t3 ^' ^, k
.text:10024C20
8 a; d7 _- {4 H, R- u! z.text:10024C20                 push    ebp1 |/ l4 S) O/ q
.text:10024C21                 mov     ebp, esp
0 e$ l3 _$ k! Y.text:10024C23                 sub     esp, 3Ch
3 `/ M" t3 M0 _5 Y( r, @- v) V.text:10024C26                 mov     eax, BugCheckParameter23 E1 u: A1 k5 K- C1 m4 Z
.text:10024C2B                 xor     eax, ebp- c& i, f. v' P* [& x6 B: e" o- n
.text:10024C2D                 mov     [ebp+var_4], eax
# a+ E( E4 ], k; R.text:10024C30                 mov     eax, [ebp+ioctl]
5 D  _* U3 n9 I% E  u.text:10024C33                 push    ebx3 @$ J! G4 O- o. c
.text:10024C34                 mov     ebx, [ebp+inbuff]: q* r0 e8 M# B9 P
.text:10024C37                 push    esi
. @$ m4 J5 r" v.text:10024C38                 mov     esi, [ebp+bytes_to_return]
! l/ M7 I- z+ n# E5 v8 ^.text:10024C3B                 add     eax, 7FFDDFD8h
& x: {0 n( e1 k" _$ g7 g.text:10024C40                 push    edi+ f  B6 N$ K! t7 Z. h6 L
.text:10024C41                 mov     edi, ecx
6 s- M( P1 i9 h* y.text:10024C43                 mov     [ebp+some_var], esi! u. W" p$ J1 v; s5 h* ?( x7 b/ ?
.text:10024C46                 mov     [ebp+var_28], 0" ?+ T! f; d7 s4 T7 f
.text:10024C4D                 cmp     eax, 0A4h       ; switch 165 cases1 S3 _2 |- a% ^# h* d! |" y
.text:10024C52                 ja      loc_10025B18    ; jumptable 10024C5F default case# g" E  H9 c8 t: y- j
.text:10024C58                 movzx   eax, ds:byte_10025BF0[eax]4 |1 {! C6 w2 M1 F+ y0 s
.text:10024C5F                 jmp     dsff_10025B50[eax*4] ; switch jump
- G" c- U  p& s6 `+ Z+ ?5 X1 i; Q( t# i2 r8 h; {
[..]& |3 c8 X3 h4 s
2 \( `0 m; T) T/ T3 R% |
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!; G( u. K3 f/ O, B3 U% f; _5 F

- A( g& h3 F1 c0 Z.text:10024F5A                 lea     ecx, [edi+958h]" F6 y* j  i$ _) J' {
.text:10024F60                 call    sub_100237B0
* j: ?  i: C1 {2 f, s! t  q9 W.text:10024F65                 mov     [ebp+some_var], eax
7 G9 f: ^, X# @0 c. R.text:10024F68                 test    eax, eax
- ]( @% H3 D' X- s.text:10024F6A                 jnz     short loc_10024F7D
6 W* C# M8 @/ A' h% J.text:10024F6C                 mov     dword ptr [ebx], 0FFFFCFFAh
7 L6 p$ f) {# j" V% {.text:10024F72                 mov     dword ptr [esi], 10h <--- bytes to copy to output buffer
/ V3 w$ \: C1 ^4 o6 O
; s) H. ~) L- b3 Q& t! W) vnext in IofComplete request will be rep movsd at pointer, that is under attacker's control4 }# V( X, a0 Z
' V  t6 P$ F( ?
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. ; W7 u( C; `7 x6 s# n8 X& ]
8 `0 B6 F& Q. U+ _. q3 w6 w# d
Symantec表示在2月份的补丁包中修复该漏洞。
0 t# w( T( o& X+ x6 K
4 R7 t  {, X: ?# f% Z! s. S相关阅读:- X: L6 {4 J" O- k: Q4 @

1 P0 b& T6 J, v( t0 Y赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。5 q' _$ [0 A, K/ \5 l& V# \, F5 A% o

# I8 j. M3 O7 `" U4 k/ C6 ]7 v+ U
回复

使用道具 举报

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

本版积分规则

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