日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
8 t2 T" W ^8 Y* a# Y$ z* @2 I6 |, J$ @# V! _
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
" f! V5 q; y' K* r) N" i% z, T% m, r3 r
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:2 N y. m Q$ W
4 W; U6 ?% h7 D0 [' p# ]
1 b* _ w: c+ H1 y! e' R( p
9 m' n& I8 M- V+ D! S/ y+ Yfunction at 0x10024C20 is responsible for dispatching ioctl codes:) d0 X4 s4 J1 p# j( X$ B
1 E8 Y5 i( t, U3 P 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)
( w" ]" I9 j/ V& K+ P3 {# ].text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap/ b# i3 N3 J7 X7 h' m
.text:10024C20( [: {; g# M4 t' f
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
# @& l, B% `7 q! j! j.text:10024C20 var_31 = byte ptr -31h
, ^6 E4 ]) O T+ J7 a$ I$ _.text:10024C20 var_30 = dword ptr -30h
) a5 S. s) J0 ^2 \.text:10024C20 some_var = dword ptr -2Ch2 g( p9 N9 @# T+ W. T1 R
.text:10024C20 var_28 = dword ptr -28h
) y Z* R; M& \.text:10024C20 var_24 = byte ptr -24h9 w5 i- D5 V# J/ `1 u; s( g
.text:10024C20 var_5 = byte ptr -5( ]$ e: v9 x0 f+ d6 b
.text:10024C20 var_4 = dword ptr -4
' Z* z3 O, O' U" w" ?.text:10024C20 ioctl = dword ptr 87 I# W- P: R3 |6 D2 ?
.text:10024C20 inbuff = dword ptr 0Ch
& W; [; {/ W. H) @( i+ \.text:10024C20 inbuff_size = dword ptr 10h/ v* p, U) x: z# o' G" @) X. [, I
.text:10024C20 outbuff_size = dword ptr 14h
! S# z7 I1 K: [- _.text:10024C20 bytes_to_return = dword ptr 18h
1 S0 N9 v# O4 W. }3 @, ]7 s.text:10024C20
b+ c! ?/ K$ ^8 U1 d# {.text:10024C20 push ebp3 M& }4 h% j# I
.text:10024C21 mov ebp, esp2 T, ~( y8 s2 _$ G; @4 a
.text:10024C23 sub esp, 3Ch
- R# M( ~+ ?9 r+ Y.text:10024C26 mov eax, BugCheckParameter2" x$ j9 p9 j7 c) C
.text:10024C2B xor eax, ebp& x; @3 i8 O+ X. u1 R9 X
.text:10024C2D mov [ebp+var_4], eax
- b: \7 ]* H3 I.text:10024C30 mov eax, [ebp+ioctl]
( r! C# ?; t3 i0 {9 ]; ~# X7 R.text:10024C33 push ebx: H$ A7 }( I/ R Q8 U! _0 W
.text:10024C34 mov ebx, [ebp+inbuff]0 z5 R4 Q: I+ h# O5 ` G
.text:10024C37 push esi7 e% B% r [) J* v9 m) v# Y7 C! Q
.text:10024C38 mov esi, [ebp+bytes_to_return]
/ q0 b, Z/ p }0 w.text:10024C3B add eax, 7FFDDFD8h4 h- L3 r+ b- s& O
.text:10024C40 push edi$ m& |; N; _8 U5 ] k/ w; Q! l
.text:10024C41 mov edi, ecx1 g# V, N8 J$ D r. {5 M1 f$ N* Q
.text:10024C43 mov [ebp+some_var], esi
2 {0 c, F( c9 A" y/ W.text:10024C46 mov [ebp+var_28], 0
2 ]4 ~3 O9 O, I2 E/ {.text:10024C4D cmp eax, 0A4h ; switch 165 cases
8 B. N- m- r0 d! p0 S& }# ~) \.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case" [) R# L8 Y! g1 k( s% a
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
. t1 i0 B2 R3 D! @7 {/ `& u8 H( X. j2 U.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump
2 E! l0 _% H9 e4 v" E& r0 g( x% t7 w) R4 R% e
[..]
6 M4 M& `. i8 r7 n8 k1 W. L! v/ f+ J, \. L3 K' @7 O- L
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!4 \! _' J( F4 C* O- r* r
{. u7 w" ]6 S5 L
.text:10024F5A lea ecx, [edi+958h]
/ J$ f' [8 f& I$ c2 R.text:10024F60 call sub_100237B0
4 W1 y6 I1 J% B5 [% a8 i- z.text:10024F65 mov [ebp+some_var], eax
1 M$ b. R8 C5 o; y9 i3 o.text:10024F68 test eax, eax
# Y x# \# t! T& l6 [, C& g# l.text:10024F6A jnz short loc_10024F7D
, ^8 u0 `; W- ~# Q5 ~- Y.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
7 p$ u" R6 [# p.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
: H7 {: t6 r. j# T' [
( D) s9 }8 a" f/ k% X dnext in IofComplete request will be rep movsd at pointer, that is under attacker's control
6 M2 {$ e$ f- a3 h$ n0 a2 t* P! N; s9 f1 h6 ?9 O
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. ; b: H! h# E3 Y" Q; k. _
# `5 M9 h7 q) ?2 c
Symantec表示在2月份的补丁包中修复该漏洞。
% }$ e" v, U% m. _" b$ ^# m
: b: j6 h+ Y7 h" f' R# U相关阅读: v3 @: y9 x4 Q, B
( @* N y8 v5 |1 I赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
! ?4 A8 `8 p% |/ o( \4 q' _ c7 m" C5 ^$ B
|