日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
0 C% G3 l8 E( X; p( }
. v+ }5 ^* P1 A( _4 n) DSymantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。, U d) B. K' P4 D1 q6 C9 j
+ I" C5 }! l) [* ]2 l& d1 K研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:% i4 W6 l6 M5 j1 A$ W' E* t7 t
# z! E; l- S$ ~5 E% H$ W
: C2 o9 a. [0 [
& A: @& J% w$ ^; p0 [ cfunction at 0x10024C20 is responsible for dispatching ioctl codes:
5 s0 D9 p& V* Y8 c+ P: I6 k+ r3 I+ v: I( H3 G7 X: X! \
.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 m" g9 q0 n7 s6 l( B- a: t+ U4 z6 e
.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap5 x8 x. Y. J; t. L4 t. D; j
.text:10024C20
: x3 H. w, ]* ]' I: ?.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch( ]* P- T q$ H5 X
.text:10024C20 var_31 = byte ptr -31h! e, j1 A4 j* |7 Y$ v C
.text:10024C20 var_30 = dword ptr -30h: g( o- J. ` P: m5 c7 m, y
.text:10024C20 some_var = dword ptr -2Ch# P, s, S9 s# r Y) X' n9 v
.text:10024C20 var_28 = dword ptr -28h
: I. G$ l+ F/ r$ r.text:10024C20 var_24 = byte ptr -24h
- ^/ p/ b* Y/ R.text:10024C20 var_5 = byte ptr -5
! f/ Z4 H" i' I& m8 J' `5 p.text:10024C20 var_4 = dword ptr -4; |6 T9 x6 W* S
.text:10024C20 ioctl = dword ptr 8 x$ V% E1 E% _
.text:10024C20 inbuff = dword ptr 0Ch
* R4 g& w. y: m7 v3 F.text:10024C20 inbuff_size = dword ptr 10h
7 G. S! f$ [5 {0 R* ^# Z C7 g' X, i9 R.text:10024C20 outbuff_size = dword ptr 14h# q" z$ y5 n4 L3 D
.text:10024C20 bytes_to_return = dword ptr 18h9 w1 b; Z0 o; ~8 P
.text:10024C20" J& Q' \' s" Z5 l- |% y, y6 G1 _
.text:10024C20 push ebp$ b+ ]" r; ?$ Q8 g
.text:10024C21 mov ebp, esp
1 Q3 c5 M" N4 j7 f3 U- S.text:10024C23 sub esp, 3Ch5 t0 `1 g( g" ?$ ~+ o
.text:10024C26 mov eax, BugCheckParameter22 M9 ~/ X: M( x+ t# V/ m; T
.text:10024C2B xor eax, ebp3 R& \6 O$ a1 J4 a$ Q
.text:10024C2D mov [ebp+var_4], eax
, e: E+ `1 b- d! @! ^ e.text:10024C30 mov eax, [ebp+ioctl]8 J; r' _( w: M7 N% ^
.text:10024C33 push ebx
3 j- ^4 H! C9 |, _/ r6 A( o) m.text:10024C34 mov ebx, [ebp+inbuff]
& h6 T0 t( w3 X.text:10024C37 push esi
) J7 ]: U& {. r. V5 O" W.text:10024C38 mov esi, [ebp+bytes_to_return]6 v1 w! F& Q X
.text:10024C3B add eax, 7FFDDFD8h
8 ]+ _0 v( a9 E$ ^0 }' @.text:10024C40 push edi! X% }3 u: W. M+ ~& h0 H
.text:10024C41 mov edi, ecx8 `1 X3 g, E+ v) A
.text:10024C43 mov [ebp+some_var], esi
+ b$ _ ~. b- W) S* t.text:10024C46 mov [ebp+var_28], 0
0 {9 |4 q! M, `* T( A, \.text:10024C4D cmp eax, 0A4h ; switch 165 cases2 W' j- V8 a' C. g
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case
- ]1 Y' a% p' Q: w.text:10024C58 movzx eax, ds:byte_10025BF0[eax]8 P$ r5 f# v& l3 Z, O: R
.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump0 `3 A+ Z( n. R# Z! ^, I, P
% C: i; s+ d8 [" q3 J
[..]/ R2 Q6 i9 M- P# z9 O
* j; v5 s7 v3 `$ R- `0x80022058 case: no check for outbuff_size == 0! <--- FLAW!& O: x) B* f O4 H* R
N' v! l5 e' [0 H1 K3 q.text:10024F5A lea ecx, [edi+958h]
/ a4 d, J; e+ s, F! K.text:10024F60 call sub_100237B0: @! K9 w/ p3 ~& b
.text:10024F65 mov [ebp+some_var], eax* Z7 Q4 B6 |5 `
.text:10024F68 test eax, eax6 }; T7 I$ ?% v/ H q
.text:10024F6A jnz short loc_10024F7D
: f7 j# e m0 \6 ]2 E3 F1 B.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
- A) Y$ F6 N6 z0 L6 c; m.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer
2 U2 Z* m5 B! t% o0 T6 C3 E# h" y# H
next in IofComplete request will be rep movsd at pointer, that is under attacker's control3 ]8 U" D. H* G7 J* B# m
/ v8 J5 Y, T( P! I" I! y3 aDue 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.
9 Z" B3 M6 Q+ Z4 I- i7 Y( p' ]2 r+ x( d3 X
Symantec表示在2月份的补丁包中修复该漏洞。/ M. c$ e- ~* ~2 R
9 M) u) O! o# ^相关阅读:
/ ?8 n$ y% \1 b( ]
" w( W7 r* t# L/ m1 S1 h4 U8 g赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。4 Y4 F9 M$ ~' r$ b. P! _
8 v+ b k% |9 v3 `& ~5 R& d |