日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。: Q( H3 ^; X& W8 Y4 a6 A
: D9 ~' {! z6 v3 i1 V+ I
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。+ \1 J* f8 B5 @! r- L
% i/ v d8 p1 ]研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:: D" b9 Z! i7 @/ Y9 \+ P* `
* G9 O( v$ _# E# i7 Z+ ]$ \# Y ! @" T" b" K. J @4 I9 x' }7 _
" f% N9 d- J+ k' R& u# f1 v
function at 0x10024C20 is responsible for dispatching ioctl codes:8 Z# Z) d* i) K5 e' ?' _
/ h5 \. h! Q" Z% p; S
.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)
8 g- z- ?- \6 E8 z" h4 z.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap
4 Y$ r8 f' s& J.text:10024C200 D% {% E8 Z" b" U6 Z" t
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
/ ]+ q) b3 T1 I+ `3 M, [' x.text:10024C20 var_31 = byte ptr -31h) Z' }1 m* ?4 T1 G$ E; k- u
.text:10024C20 var_30 = dword ptr -30h
2 P4 x0 g7 d- s.text:10024C20 some_var = dword ptr -2Ch
" e, l" M& A8 N.text:10024C20 var_28 = dword ptr -28h
- |" z7 s- y0 x' B+ x4 J( {.text:10024C20 var_24 = byte ptr -24h
- E; h* m" l, f3 o. V.text:10024C20 var_5 = byte ptr -5% O1 ]0 D0 {! t; S) f
.text:10024C20 var_4 = dword ptr -4
9 j$ X. {1 i. c8 G5 ~4 Q: ?.text:10024C20 ioctl = dword ptr 8
# c) h$ G, X* A& F3 G: x7 g.text:10024C20 inbuff = dword ptr 0Ch3 R' [4 h0 f# T
.text:10024C20 inbuff_size = dword ptr 10h
& }2 G0 p# e( v. Z.text:10024C20 outbuff_size = dword ptr 14h) c: V8 h- M3 }
.text:10024C20 bytes_to_return = dword ptr 18h* C+ s2 S8 s {" X# b
.text:10024C20- x5 N( |$ A# S3 J% j
.text:10024C20 push ebp
5 ?% ~$ G3 m" \" x5 W% ?.text:10024C21 mov ebp, esp
( |, Y/ H q6 {. _. J& r: B.text:10024C23 sub esp, 3Ch8 }4 o1 d* k4 {+ e" r" t
.text:10024C26 mov eax, BugCheckParameter2
; ~. I( Z6 ]" H9 u) U* G.text:10024C2B xor eax, ebp
" w, y$ j+ d7 ~3 m6 a% E5 s9 x.text:10024C2D mov [ebp+var_4], eax; g/ R7 ^& F, l: ~
.text:10024C30 mov eax, [ebp+ioctl]% a+ v4 s$ N% K. H
.text:10024C33 push ebx" w3 v' k, o5 v# _ ]' \- K
.text:10024C34 mov ebx, [ebp+inbuff] ?8 M: D6 V$ |5 ]
.text:10024C37 push esi, i& y/ s3 m5 S0 V. o, u7 _3 @: N* s
.text:10024C38 mov esi, [ebp+bytes_to_return]0 D8 Y* k+ y8 w) ?9 A2 _+ j
.text:10024C3B add eax, 7FFDDFD8h5 B& q2 A, S, `& C( b/ F! m! h: X
.text:10024C40 push edi3 @8 R" [ J: v( a6 c& E
.text:10024C41 mov edi, ecx( I! x- W$ B9 _/ K, u/ `- J
.text:10024C43 mov [ebp+some_var], esi
: C9 }/ I3 q& k/ _& n6 b# A# \% W+ N" f.text:10024C46 mov [ebp+var_28], 0
9 q- K; ^. v! z+ W" O! {' s* o.text:10024C4D cmp eax, 0A4h ; switch 165 cases4 m% X. s3 M# t4 ]+ m7 I; j
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
3 s$ s% H8 B! R1 K& f) l* y J.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
/ p3 [+ k- r; J- o& _.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump' s# L( n/ a2 W
E7 f; S) z1 V" p- F1 b[..]7 H9 c5 ]8 J+ W8 y+ E9 |5 X0 a
% J( {( n. v% I* B P$ s0 `6 L! N0x80022058 case: no check for outbuff_size == 0! <--- FLAW!) ~, S) ^% i; _
0 f# X# S2 k+ b.text:10024F5A lea ecx, [edi+958h]
& j- v3 Q* l4 l# O8 K& |" r& ^.text:10024F60 call sub_100237B0
; O/ c; N; P& O; T( z c.text:10024F65 mov [ebp+some_var], eax( T2 |# J9 E/ h$ J3 K% ^3 o1 u) h
.text:10024F68 test eax, eax* A% Q2 V: ~8 N' C
.text:10024F6A jnz short loc_10024F7D
& y/ |7 n6 d; W+ L2 U.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh8 f1 _ L# g* z2 P; H
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
! | V/ q* n% `3 Y6 Q+ L: q
! X2 {1 {' u% x* L( V2 d' o5 nnext in IofComplete request will be rep movsd at pointer, that is under attacker's control( j$ \, |; n2 T( M3 K, D
$ t5 }9 P0 m; j8 d) h
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.
# s: z1 a B. i, D4 P# G2 A6 e# u
) c1 @5 x* l& m/ `; dSymantec表示在2月份的补丁包中修复该漏洞。
3 t. Q7 W- C) S9 G- d1 j* V: C! q" d" T1 q! ]# C
相关阅读:
/ K0 a& C1 {" u9 {
! y0 |( y1 y/ x$ X8 P赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
. _6 p- L1 k g; g2 q( V! v: O8 ?1 k9 g. x' ]9 D
|