日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。
0 y/ s) M" x5 x5 P2 u. Z, W& o0 n. R k9 ?% E# y1 j
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
8 m* ~" f" u* p! A5 l- z! ?2 C) c3 M: s# v+ E+ j5 \
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:2 G/ ]+ z) z1 z* b* N, |
/ J7 e# U9 H' E! s, u3 L
1 Q$ P0 A* c5 X7 o( t: b- [, C0 Z
( V: ], E- r5 P5 T2 g8 \function at 0x10024C20 is responsible for dispatching ioctl codes:
6 T- R0 I3 [6 K5 {2 a9 \
7 n# P* Q7 e- ?: R.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)
6 S5 }2 ^, P4 @3 ~ B( M.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap3 D3 { l4 ^( f! [0 z
.text:10024C205 j- w9 y1 ]/ D, z
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch$ k% @5 w( g# q6 |/ o! K* R
.text:10024C20 var_31 = byte ptr -31h
" m8 \& Z0 s! m) a# Y5 m2 d& h' U.text:10024C20 var_30 = dword ptr -30h
9 u' J) r* B# F. u; }$ ?: |.text:10024C20 some_var = dword ptr -2Ch
( W9 I" Q: |) k6 k9 W3 L.text:10024C20 var_28 = dword ptr -28h3 Z4 p$ O9 k7 E9 e" H+ J* c
.text:10024C20 var_24 = byte ptr -24h1 e! ^& o/ C6 l
.text:10024C20 var_5 = byte ptr -5' V$ Y [; }6 W
.text:10024C20 var_4 = dword ptr -4 R2 M0 W+ n, g H5 M- Q- ?* Z3 U- W
.text:10024C20 ioctl = dword ptr 8
1 v5 V4 K( N) c- t1 E* q: d.text:10024C20 inbuff = dword ptr 0Ch; G# s# j; ^2 Y, i5 W3 P( k
.text:10024C20 inbuff_size = dword ptr 10h
- F8 ?4 \$ {6 m% \" Z) j3 U.text:10024C20 outbuff_size = dword ptr 14h
8 w* s m2 Z5 X+ N+ X% {.text:10024C20 bytes_to_return = dword ptr 18h
1 q, K4 N. W/ O$ ].text:10024C20
9 y% B8 _' B: H! j( e! c.text:10024C20 push ebp8 U" C& _- ]# s! n% U
.text:10024C21 mov ebp, esp
3 ?; e# ~3 M* u4 o# @.text:10024C23 sub esp, 3Ch
9 c* P6 R% R! z9 G.text:10024C26 mov eax, BugCheckParameter2: [6 t- |, B. N7 s1 `# u& O
.text:10024C2B xor eax, ebp
+ Z: `! H% k: t0 Z1 L% X.text:10024C2D mov [ebp+var_4], eax ]$ m3 Y' O8 f
.text:10024C30 mov eax, [ebp+ioctl]
6 }; {# M- j6 D3 z8 ]3 Z; @2 b.text:10024C33 push ebx3 J& Y* n: D j3 N! \* C3 y7 m
.text:10024C34 mov ebx, [ebp+inbuff]
" F; ?# h' ^: N- F1 m7 T8 e.text:10024C37 push esi, ]) U" T$ f9 G1 j" _, `4 a
.text:10024C38 mov esi, [ebp+bytes_to_return]; y3 D. B, y; ?' e" ?$ W, ~
.text:10024C3B add eax, 7FFDDFD8h
8 M3 w! \2 y8 U% c% m) Z2 ~.text:10024C40 push edi
, O" s0 O, {( I.text:10024C41 mov edi, ecx; L4 o: p/ T5 d3 H" E" A3 v( j3 q
.text:10024C43 mov [ebp+some_var], esi7 m; Y: y% p+ B- u4 ]3 ^$ s3 |
.text:10024C46 mov [ebp+var_28], 04 e% N" T3 Z9 w& C6 v! D
.text:10024C4D cmp eax, 0A4h ; switch 165 cases l3 }' O7 H1 ~, Z& r/ {
.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case% }2 [) R) }" M& v y
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]( P2 d/ O; H, x3 R
.text:10024C5F jmp dsff_10025B50[eax*4] ; switch jump; T) C% J! \& t: a* O
5 M3 c" D$ w5 t[..]
. e8 g, g; b; T0 g, d/ V9 n' _$ j4 r- m5 G% P. u
0x80022058 case: no check for outbuff_size == 0! <--- FLAW!
, @" n; _; k+ w5 p: b, I D) ?! C! M/ l8 B, j* N: f
.text:10024F5A lea ecx, [edi+958h]
8 [0 p0 u9 r6 D1 N% d: t7 H.text:10024F60 call sub_100237B0
8 [0 |# v/ c" P4 i" x.text:10024F65 mov [ebp+some_var], eax( n6 ^+ h% c% a( r: {
.text:10024F68 test eax, eax' N, Z ]5 T6 ?# ]
.text:10024F6A jnz short loc_10024F7D
% q, e5 H4 ~3 Z.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh
- k0 g- k) e4 T+ x Y5 r, p.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer8 q q3 f3 i, u; s7 `/ Y
& r* Z. g% c! I9 A2 r
next in IofComplete request will be rep movsd at pointer, that is under attacker's control' ^( Q# I; a8 J. g7 G4 c6 b W. F3 S
# \6 s: Q6 R/ n! N2 i; vDue 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. + u9 e! s1 N2 W9 `
# D' @8 f! V1 v- ?5 HSymantec表示在2月份的补丁包中修复该漏洞。
5 z g" l9 k2 B( V4 F. P
# C% Y+ ]8 ^! }7 w8 `& y2 J) `8 a相关阅读:
" ^9 |; R5 \0 F) ~* d0 F% L9 r2 B5 n2 i5 X9 s) b7 j9 X6 y5 q
赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。! j2 ~7 Q1 p4 s- R" W/ }+ N
/ B9 N- j: F5 O+ p/ |
|