日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。+ W Q* ?7 G5 c! |2 l6 }# @0 A
$ ` x0 U/ U6 F, n! |- o& T3 qSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
; d; a. {6 f; A- v' m0 n: w
- }9 J& S: T( d研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
3 ?) E) P* J9 ^( x7 a
- B* Z) e1 y7 _
8 g$ g! z* Y9 r4 m; y2 p/ S
) C9 e! a. |: ?9 x/ mfunction at 0x10024C20 is responsible for dispatching ioctl codes:4 n# u8 C7 }9 `+ T
* @" }9 m0 `) x, J.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 @) U# L) K8 Z0 K+ F/ y.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap
0 z& z' v6 L4 Y2 x: C. Q.text:10024C20' T& A/ v( j. g/ c
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch2 k' s, w8 z O1 o
.text:10024C20 var_31 = byte ptr -31h# h; w" E9 F' D+ Y$ o' }8 r2 {4 Q
.text:10024C20 var_30 = dword ptr -30h1 n( B/ |# j8 x8 z+ U
.text:10024C20 some_var = dword ptr -2Ch& J+ P9 A$ x' @6 i2 h5 b
.text:10024C20 var_28 = dword ptr -28h
+ f! S9 Q: X5 M/ U) Z9 ].text:10024C20 var_24 = byte ptr -24h0 M9 D( N' t! ?; `0 u
.text:10024C20 var_5 = byte ptr -5( e$ ^7 b9 w1 |5 W; o4 B
.text:10024C20 var_4 = dword ptr -4
- \& V; m5 m3 B$ C0 Q. t8 B. Z.text:10024C20 ioctl = dword ptr 8
! X3 w; I5 Z" W6 W: e.text:10024C20 inbuff = dword ptr 0Ch
+ D: B# Q) T; q& O.text:10024C20 inbuff_size = dword ptr 10h+ ]7 V! o& Z* C7 F) h! o, `& K" V
.text:10024C20 outbuff_size = dword ptr 14h8 T2 t0 W5 W' [
.text:10024C20 bytes_to_return = dword ptr 18h1 @! s" ~8 C+ Z/ A4 W
.text:10024C20
& x" v4 g- `: R( a ?.text:10024C20 push ebp
1 H4 [) o1 N& W, K2 l; ^/ E7 ?% ^, B.text:10024C21 mov ebp, esp: t( R3 d ?8 `/ L6 T E$ i
.text:10024C23 sub esp, 3Ch
2 W4 v4 o% B! }" Q6 c.text:10024C26 mov eax, BugCheckParameter2% M3 I: m9 \: ^- f# _+ t8 }
.text:10024C2B xor eax, ebp. Q3 j! Y6 G$ n l: d4 w
.text:10024C2D mov [ebp+var_4], eax) `' j6 ]% O/ U0 Y
.text:10024C30 mov eax, [ebp+ioctl]
% \8 N- ~# F5 }. p.text:10024C33 push ebx2 Q8 D# w- ^9 A% N# l$ K* Y' g, b
.text:10024C34 mov ebx, [ebp+inbuff]
5 u8 U8 h! b: `7 ?.text:10024C37 push esi
. ^/ f+ J, q# b, @.text:10024C38 mov esi, [ebp+bytes_to_return]
" N/ y% K% g' H' n4 i+ M0 p5 }" [.text:10024C3B add eax, 7FFDDFD8h8 x6 h9 s& i# [& h7 q" l" s6 u
.text:10024C40 push edi- K; E( c6 Z' \6 C5 A B8 y% a
.text:10024C41 mov edi, ecx
; \5 R! o6 ?8 a6 e9 ?) c.text:10024C43 mov [ebp+some_var], esi3 O7 M3 B# `+ C# ?
.text:10024C46 mov [ebp+var_28], 0
3 D% F' W% i9 V4 z.text:10024C4D cmp eax, 0A4h ; switch 165 cases
/ c; u$ `) F5 I.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
- {2 d0 d/ v$ [7 [3 n v.text:10024C58 movzx eax, ds:byte_10025BF0[eax]9 b: c& u, L P' A* ?
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump. j; L/ E8 R0 d, l' q" z: \" J
0 r5 Z: f0 t" y9 g[..]5 S' y4 c! r+ e4 e' R+ q
0 A+ V0 m' T2 g+ d, ^& \0x80022058 case: no check for outbuff_size == 0! <--- FLAW!; H5 |2 Z3 }$ W+ v' P9 W- A6 l
4 l+ {8 C2 P T3 X5 S9 I( i7 L
.text:10024F5A lea ecx, [edi+958h]
g3 c, {, c0 I# i.text:10024F60 call sub_100237B0- o" r/ y, I) ?
.text:10024F65 mov [ebp+some_var], eax. c3 e7 P' o4 \7 `9 {
.text:10024F68 test eax, eax
7 {& k& u( i" A; f. t* Q.text:10024F6A jnz short loc_10024F7D; T) E1 @7 b A% h" W& v; V' l$ q
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh2 _# @ I- x; ^: X9 ?* z% @% k9 L
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
- f2 b) z5 R$ ~: c
7 |5 d, x) n; r6 Q% dnext in IofComplete request will be rep movsd at pointer, that is under attacker's control. t1 l( u5 e, I: a: b/ w8 n
4 Y* h; U w3 f) {$ l7 e
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.
. {$ h# H2 ~, m; [4 W, D" q7 i7 J1 X# c
Symantec表示在2月份的补丁包中修复该漏洞。; J# E4 L* K# r7 R* R: T
4 z% U, \5 R0 j8 c2 Z7 {+ s
相关阅读:
& S/ C; x% V$ E8 W- b7 V$ O" c6 l; C" m d1 d! S4 V
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
; p+ Q+ j) D8 J' S( S6 }0 E; ? I
|