日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。* v' ^4 {, O" g% C) Q N U
- x8 t' \! \, P4 Y( }
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
0 v1 o5 i- ~! Z2 P) W) g4 t ^
4 z3 Y1 h; c) b: b) a3 z研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
2 w2 }2 B2 N3 A8 a. L: V; W$ @2 e6 Y# n v7 y8 Z/ E" H
" d( o' I7 f0 T% X7 a* n
' N/ s8 N6 M9 O7 M: ]function at 0x10024C20 is responsible for dispatching ioctl codes:
- w" R$ @) n8 F: k* h4 m2 L2 v" ?9 k4 u. }* }
.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); _+ n/ f9 \9 C0 h" m! H( j/ p
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap, V- D- N" _. ?% [4 r9 l2 m/ _
.text:10024C20- s' S& M x2 g' A# E7 x4 n
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch# y- P1 L" I- e+ g
.text:10024C20 var_31 = byte ptr -31h5 r# I! K! J5 e0 R c1 L& k* L
.text:10024C20 var_30 = dword ptr -30h' n6 S. u& K, N& ^/ v
.text:10024C20 some_var = dword ptr -2Ch
4 | J& D }' H0 C4 V- Z/ n.text:10024C20 var_28 = dword ptr -28h
! v0 k" I! K0 g' x2 H.text:10024C20 var_24 = byte ptr -24h
2 ?1 r; c* }# N) i8 t% X. Z- v: F.text:10024C20 var_5 = byte ptr -5: Y3 C$ l- o8 ]' y* D& _
.text:10024C20 var_4 = dword ptr -4
9 o) k/ d8 x& C1 m7 {.text:10024C20 ioctl = dword ptr 8
# K: b) m4 s: G; ?) y.text:10024C20 inbuff = dword ptr 0Ch' x8 t% s& w8 @; T
.text:10024C20 inbuff_size = dword ptr 10h
& \- e- S" H$ S" h0 u) F.text:10024C20 outbuff_size = dword ptr 14h
) S% a& M% I3 ]2 ?6 N.text:10024C20 bytes_to_return = dword ptr 18h ~7 ^3 s9 `3 r1 W4 x7 @
.text:10024C20
: a1 i- ]! w$ ]" |, F.text:10024C20 push ebp3 i6 B" x7 q$ }( Z7 v
.text:10024C21 mov ebp, esp$ M7 q# Y4 L; \* l6 L& W
.text:10024C23 sub esp, 3Ch
* B) R, q0 N, a3 d% \.text:10024C26 mov eax, BugCheckParameter2+ m8 J/ u* t0 }* s v6 _5 y
.text:10024C2B xor eax, ebp# T5 A7 l" y0 ~5 o3 C
.text:10024C2D mov [ebp+var_4], eax, d6 s3 S& j" G, a4 {
.text:10024C30 mov eax, [ebp+ioctl]+ ]3 O0 A9 o% I! I8 b' x7 }3 F
.text:10024C33 push ebx, Y, F# R( A1 u8 ~9 [6 E
.text:10024C34 mov ebx, [ebp+inbuff]
) Y! J. g% E" M- J3 ].text:10024C37 push esi
! r& N! i: s: @) @4 s. z.text:10024C38 mov esi, [ebp+bytes_to_return]
7 q9 }, i: Z/ z0 s$ d.text:10024C3B add eax, 7FFDDFD8h
6 Q( q, c% {8 W' W' g' I.text:10024C40 push edi
; X/ {3 { U7 @2 i7 K.text:10024C41 mov edi, ecx
, y5 [1 \5 L, D _5 a) M.text:10024C43 mov [ebp+some_var], esi
3 H1 L9 c$ W% A.text:10024C46 mov [ebp+var_28], 0
5 Q0 _# Q2 J1 y8 ?6 s.text:10024C4D cmp eax, 0A4h ; switch 165 cases
: \# J1 B( n1 ?/ ]/ {.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case8 \' t5 i8 q6 \" J
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]/ I( L# K, k5 F8 K) p3 x& A* \
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump8 m3 e, X6 T5 T2 f
( A& v4 l7 n8 x4 ^' b: d
[..]; H. {1 m8 ?6 `4 _7 P: l# K" \
) i; B4 ] P3 q% h, p- h/ B0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
( A. j# K7 C5 a) B7 |2 c& x$ B- w8 D9 D& W2 O, {$ I! p% F6 `8 U; X4 C
.text:10024F5A lea ecx, [edi+958h]
$ L; M% V, F3 N/ V1 u9 l5 N' Q.text:10024F60 call sub_100237B0# {. N0 V9 P3 A# j5 {/ E
.text:10024F65 mov [ebp+some_var], eax8 m2 w X- k! I+ t" ~# T
.text:10024F68 test eax, eax
. s' ?6 X' _1 e) g9 X.text:10024F6A jnz short loc_10024F7D g4 X- e4 D( s/ {# F2 H; x
.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh' T/ w! Z4 L% S9 u3 T/ \0 @/ _
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
" |' K) q" t' Q
" } B: t0 K4 a0 t5 Hnext in IofComplete request will be rep movsd at pointer, that is under attacker's control6 x3 M! ?4 d) F" k
" l- y+ Y) n* j: a! KDue 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. 6 d, P4 \. E/ |5 i" [5 v
0 ~/ l8 |3 s4 j- j- g3 X4 S0 ~: B3 {
Symantec表示在2月份的补丁包中修复该漏洞。
( | d- @: a3 {$ q! w- W' ]+ G7 Z6 c, c5 e, W
相关阅读:
+ h# C) l9 D& c& B# R% k% x
$ u9 S# }: L6 ^" I8 r8 N/ {- E赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
6 v6 N1 T( S: |. z% H w. d* M$ U, Q( X; c% V! }. q: F
|