日前,国外安全研究组织Nikita Tarakanov称在Symantec PGP Whole Disk Encryption(完整磁盘加密软件)中发现0day漏洞,该软件的内核驱动程序pgpwded.sys包含一个覆盖任意内存的漏洞,可执行任意代码,受影响的软件版本是Symantec PGP Desktop 10.2.0 Build 2599。. s: ?4 C) Q4 T( `0 K# j
7 v% L7 B- d, k1 V6 k' H2 x
Symantec通过博客文章证实该版本软件确实存在安全问题,但是利用起来比较繁琐,并且仅限于运行在Windows XP和Windows 2003的系统,成功利用该漏洞需要有计算机本地访问权限。
% j% e5 h) p4 P& R1 Y: ^& R5 L% s$ ^; v9 P( p' e% ]) d
研究员Kelvin Kwan称“该漏洞触发场景非常困难,成功利用必须进入一些错误状态,但是成功利用的话可能允许攻击者执行任意代码,获取更高级别的权限”。该漏洞详细细节如下:
5 m1 X }) B6 H1 V6 ?# l' G3 D% D0 d3 z; q
+ R, ^ ~/ d5 \# l- @& \% X( D3 O
; d9 ]$ V" g2 `! f3 f" Gfunction at 0x10024C20 is responsible for dispatching ioctl codes:
7 E8 P0 h9 K9 K& O8 t& a9 v0 Q6 W1 Y* B# c
.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)
9 ^0 O2 ^* L0 Y! I.text:10024C20 ioctl_handler_deep proc near ; CODE XREF: sub_10007520+6Ap! a1 R. o% ]) C `% G2 c
.text:10024C205 O X9 g- U, v1 a" k' x) o+ ^
.text:10024C20 DestinationString= UNICODE_STRING ptr -3Ch
1 @# A# D7 c4 l7 q4 N.text:10024C20 var_31 = byte ptr -31h6 i% K1 g5 A& {# Q
.text:10024C20 var_30 = dword ptr -30h- y6 t. t8 P5 Z1 _- A
.text:10024C20 some_var = dword ptr -2Ch4 o# D2 W9 E: o- ], y$ [! T
.text:10024C20 var_28 = dword ptr -28h
/ u! a2 T, X( @# ^5 O: P# n; y.text:10024C20 var_24 = byte ptr -24h
' n$ g3 J( i) x: ^8 D) o.text:10024C20 var_5 = byte ptr -5
2 ^2 ~- U5 l1 x" G9 k.text:10024C20 var_4 = dword ptr -49 t& a( v. X) V
.text:10024C20 ioctl = dword ptr 8
1 `% x1 [" k# K8 t& X.text:10024C20 inbuff = dword ptr 0Ch
9 I4 R, E2 j" P# t, {$ @.text:10024C20 inbuff_size = dword ptr 10h2 g/ p& o4 [) b$ M" P6 e1 \
.text:10024C20 outbuff_size = dword ptr 14h- H/ R4 n2 A4 f
.text:10024C20 bytes_to_return = dword ptr 18h
# o) g" D* U& R' k3 l.text:10024C20* T0 E ?' q% t3 a* P
.text:10024C20 push ebp. ]; ?5 O& O% \0 }1 X
.text:10024C21 mov ebp, esp2 `* F, F D8 M' h. e
.text:10024C23 sub esp, 3Ch2 B6 Q {1 @+ P6 l
.text:10024C26 mov eax, BugCheckParameter25 I2 @( y+ d6 l* o ?
.text:10024C2B xor eax, ebp
1 e% U- ]% J( w3 O& A1 s9 k.text:10024C2D mov [ebp+var_4], eax
) N6 a7 {* \% ^0 `$ u4 t7 a' U.text:10024C30 mov eax, [ebp+ioctl]
) n; T4 d0 Y S- q6 J& I.text:10024C33 push ebx9 l' y9 F2 q% U& J6 Z
.text:10024C34 mov ebx, [ebp+inbuff]
$ y- i! Y2 l3 }% @+ a) K, o% B.text:10024C37 push esi s3 L% [4 U9 M- B4 w J: N G
.text:10024C38 mov esi, [ebp+bytes_to_return]
7 S7 W' F- J$ G& [8 K6 O5 A- V* J.text:10024C3B add eax, 7FFDDFD8h+ y9 p: s' I# H1 _ g6 {! ~
.text:10024C40 push edi! m9 _+ v9 a; t5 V( H
.text:10024C41 mov edi, ecx0 q0 [: W% I' D0 k6 y0 P9 ?- g
.text:10024C43 mov [ebp+some_var], esi6 U9 z! p$ X( m7 j' l( I( C) L
.text:10024C46 mov [ebp+var_28], 0
( H3 G0 ?, D- ]! Y9 ^' V/ W.text:10024C4D cmp eax, 0A4h ; switch 165 cases
1 i2 C0 j# H+ F5 G5 J; \.text:10024C52 ja loc_10025B18 ; jumptable 10024C5F default case3 R: N; f& U( |2 v7 L
.text:10024C58 movzx eax, ds:byte_10025BF0[eax]
# _$ T& Q, u& [8 Y% C+ c.text:10024C5F jmp ds ff_10025B50[eax*4] ; switch jump
6 X4 {; V4 H& E' T6 f" k$ L, b8 g9 X3 m: A5 a
[..]( l( x {0 Z" Q g! w7 p m
" q$ b7 `* P" F5 Y% n& D# H0x80022058 case: no check for outbuff_size == 0! <--- FLAW!! T$ y4 Q! b _, Z( U/ Q/ {
8 X! U' k* u9 d! [7 [. ?$ c
.text:10024F5A lea ecx, [edi+958h]
" O4 D+ n+ g; l1 D.text:10024F60 call sub_100237B0
' N: Q1 o L# f% b0 z% P.text:10024F65 mov [ebp+some_var], eax. o. s$ c. `3 c5 D! I, Y
.text:10024F68 test eax, eax+ k" \0 u- A) H+ F2 ~
.text:10024F6A jnz short loc_10024F7D
9 I" z$ _* P+ Y2 |* z0 p/ l9 |. \.text:10024F6C mov dword ptr [ebx], 0FFFFCFFAh: b! F' i7 g* c: Y# r& L1 n
.text:10024F72 mov dword ptr [esi], 10h <--- bytes to copy to output buffer L \7 J8 o+ m) a R c/ g) D
& Z' `3 W* D* v, ~, j& Z: b6 {next in IofComplete request will be rep movsd at pointer, that is under attacker's control o- q6 C' S8 [) a$ X& ]% O8 m
7 o$ F+ N* j- O! e2 RDue 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. ) C* \( z) v' ^9 z* I( y1 i$ t
/ k! e$ B- \$ P. B8 I- KSymantec表示在2月份的补丁包中修复该漏洞。! p, ?" c+ t/ c# f6 {8 J- |
2 @9 X/ l/ P6 n \, n; |
相关阅读:
: j2 v) s& B# E" \& K0 D
/ U$ P( g/ M' j9 {( R6 f0 |. W( o( m赛门铁克的 PGP Whole Disk Encryption 为企业提供了全面的高性能完整磁盘加密功能,可对台式机、笔记本电脑和可移动介质上的所有数据(用户文件、交换文件、系统文件、隐藏文件等)进行完整磁盘加密。该完整磁盘加密软件可让数据免遭未经授权的访问,从而为知识产权、客户和合作伙伴数据提供强大的安全防护。受保护的系统可由 PGP Universal Server 集中管理,这就简化了部署、策略创建、分发和报告过程。
' k% A# L2 h ~6 ]0 n
2 I+ ^6 g; C1 ^, B |