[29068] 2021-07-16_【漏洞分析】CVE-2021-22555:将x00x00变成10000$

文档创建者:s7ckTeam
浏览次数:0
最后更新:2025-01-19
2021-07-16_【漏洞分析】CVE-2021-22555:将x00x00变成10000$ C V E - 2 0 2 1 - 2 2 5 5 5   x 0 0 x 0 0     1 0 0 0 0 $ O t s   2 0 2 1 - 0 7 - 1 6 O t s C V E - 2 0 2 1 - 2 2 5 5 5     L i n u x   N e t f i l t e r     1 5   k C T F     k u b e r n e t e s   p o d     1 0 0 0 0     2 0 0 0 0   B l e e d i n g T o o t h   L i n u x C V E - 2 0 1 6 - 3 1 3 4 C V E - 2 0 1 6 - 4 9 9 7 g r e p m e m c p y ( ) m e m s e t ( ) N e t f i l t e r I P T _ S O _ S E T _ R E P L A C E I P 6 T _ S O _ S E T _ R E P L A C E C A P _ N E T _ A D M I N + 3 2 6 4 便 x t _ c o m p a t _ t a r g e t _ f r o m _ u s e r ( ) w h e r e m e m s e t ( ) t a r g e t - > t a r g e t s i z e -   / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / n e t / n e t f i l t e r / x _ t a b l e s . c v o i d   x t _ c o m p a t _ t a r g e t _ f r o m _ u s e r ( s t r u c t   x t _ e n t r y _ t a r g e t   * t ,   v o i d   * * d s t p t r , u n s i g n e d   i n t   * s i z e ) { c o n s t   s t r u c t   x t _ t a r g e t   * t a r g e t   =   t - > u . k e r n e l . t a r g e t ;
t a r g e t s i z e T C P M S S T T L N F Q U E U E t a r g e t s i z e   8   p a d   >   0 .   N F L O G   0 x 4 C   s t r u c t   x t _ e n t r y _ m a t c h s t r u c t   x t _ e n t r y _ t a r g e t G F P _ K E R N E L _ A C C O U N T s t r u c t   c o m p a t _ x t _ e n t r y _ t a r g e t   * c t   =   ( s t r u c t   c o m p a t _ x t _ e n t r y _ t a r g e t   * ) t ; i n t   p a d ,   o f f   =   x t _ c o m p a t _ t a r g e t _ o f f s e t ( t a r g e t ) ; u _ i n t 1 6 _ t   t s i z e   =   c t - > u . u s e r . t a r g e t _ s i z e ; c h a r   n a m e [ s i z e o f ( t - > u . u s e r . n a m e ) ] ;     t   =   * d s t p t r ; m e m c p y ( t ,   c t ,   s i z e o f ( * c t ) ) ; i f   ( t a r g e t - > c o m p a t _ f r o m _ u s e r )         t a r g e t - > c o m p a t _ f r o m _ u s e r ( t - > d a t a ,   c t - > d a t a ) ; e l s e m e m c p y ( t - > d a t a ,   c t - > d a t a ,   t s i z e   -   s i z e o f ( * c t ) ) ;     p a d   =   X T _ A L I G N ( t a r g e t - > t a r g e t s i z e )   -   t a r g e t - > t a r g e t s i z e ; i f   ( p a d   >   0 ) m e m s e t ( t - > d a t a   +   t a r g e t - > t a r g e t s i z e ,   0 ,   p a d ) ;     t s i z e   + =   o f f ;     t - > u . u s e r . t a r g e t _ s i z e   =   t s i z e ;     s t r l c p y ( n a m e ,   t a r g e t - > n a m e ,   s i z e o f ( n a m e ) ) ;     m o d u l e _ p u t ( t a r g e t - > m e ) ; s t r n c p y ( t - > u . u s e r . n a m e ,   n a m e ,   s i z e o f ( t - > u . u s e r . n a m e ) ) ;     * s i z e   + =   o f f ;     * d s t p t r   + =   t s i z e ; } s t r u c t   x t _ n f l o g _ i n f o   { / *   ' l e n '   w i l l   b e   u s e d   i f f   y o u   s e t   X T _ N F L O G _ F _ C O P Y _ L E N   i n   f l a g s   * / _ _ u 3 2     l e n ; _ _ u 1 6     g r o u p ; _ _ u 1 6     t h r e s h o l d ; _ _ u 1 6     f l a g s ; _ _ u 1 6     p a d ; c h a r         p r e f i x [ 6 4 ] ; } ; / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / n e t / n e t f i l t e r / x _ t a b l e s . c
  >   0 x 1 0 0 s l a b   k m a l l o c - 5 1 2   k m a l l o c - 5 1 2     k m a l l o c - 8 1 9 2     0 x 4 C     0 x 4 C   C V E - 2 0 1 6 - 6 1 8 7   L i n u x     5   C O N F I G _ S L A B _ F R E E L I S T _ H A R D E N E D   0 x f f f f 9 1 a 4 9 c b 7 f 0 0 0     0 x f f f f 9 1 a 4 0 0 0 0 0 0 0 0     0 x 9 c b 7 f 0 0 0 使 2 0 x f f f f 9 1 a 4 9 c b 7 f 0 0 0 0 x f f f f 9 1 a 4 9 c b 7 0 0 0 0 s t r u c t   x t _ t a b l e _ i n f o   5 . 4   G F P _ K E R N E L _ A C C O U N T G F P _ K E R N E L _ A C C O U N T J a n n   H o r n     5 . 9   使   S l a b   使 使 G F P _ K E R N E L _ A C C O U N T . m s g s n d ( ) 使 G F P _ K E R N E L _ A C C O U N T m s g _ m s g 使   2 0 2 1     3   A l e x a n d e r   P o p o v     L i n u x     C V E - 2 0 2 1 - 2 6 7 0 8 s t r u c t   x t _ t a b l e _ i n f o   * x t _ a l l o c _ t a b l e _ i n f o ( u n s i g n e d   i n t   s i z e ) { s t r u c t   x t _ t a b l e _ i n f o   * i n f o   =   N U L L ; s i z e _ t   s z   =   s i z e o f ( * i n f o )   +   s i z e ; i f   ( s z   <   s i z e o f ( * i n f o )   | |   s z   > =   X T _ M A X _ T A B L E _ S I Z E ) r e t u r n   N U L L ;     i n f o   =   k v m a l l o c ( s z ,   G F P _ K E R N E L _ A C C O U N T ) ; i f   ( ! i n f o ) r e t u r n   N U L L ; m e m s e t ( i n f o ,   0 ,   s i z e o f ( * i n f o ) ) ;     i n f o - > s i z e   =   s i z e ; r e t u r n   i n f o ; }
  s t r u c t   m s g _ m s g 使   m s g s n d ( ) / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / i p c / m s g u t i l . c s t a t i c   s t r u c t   m s g _ m s g   * a l l o c _ m s g ( s i z e _ t   l e n ) { s t r u c t   m s g _ m s g   * m s g ; s t r u c t   m s g _ m s g s e g   * * p s e g ; s i z e _ t   a l e n ;     a l e n   =   m i n ( l e n ,   D A T A L E N _ M S G ) ;     m s g   =   k m a l l o c ( s i z e o f ( * m s g )   +   a l e n ,   G F P _ K E R N E L _ A C C O U N T ) ; i f   ( m s g   = =   N U L L ) r e t u r n   N U L L ;     m s g - > n e x t   =   N U L L ;     m s g - > s e c u r i t y   =   N U L L ;     l e n   - =   a l e n ;     p s e g   =   & m s g - > n e x t ; w h i l e   ( l e n   >   0 )   { s t r u c t   m s g _ m s g s e g   * s e g ;         c o n d _ r e s c h e d ( ) ;         a l e n   =   m i n ( l e n ,   D A T A L E N _ S E G ) ;         s e g   =   k m a l l o c ( s i z e o f ( * s e g )   +   a l e n ,   G F P _ K E R N E L _ A C C O U N T ) ; i f   ( s e g   = =   N U L L ) g o t o   o u t _ e r r ;         * p s e g   =   s e g ;         s e g - > n e x t   =   N U L L ;         p s e g   =   & s e g - > n e x t ;         l e n   - =   a l e n ;     } r e t u r n   m s g ; o u t _ e r r :     f r e e _ m s g ( m s g ) ; r e t u r n   N U L L ;
s t r u c t   m s g _ m s g s t r u c t   m s g _ m s g s e g i n   s t r u c t   m s g _ m s g m l i s t . n e x t n e x t 使 使 使     4 0 9 6 m s g g e t ( ) s t r u c t   m s g _ m s g 使     4 0 9 6 m s g s n d ( )   1 } / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / i n c l u d e / l i n u x / m s g . h / *   o n e   m s g _ m s g   s t r u c t u r e   f o r   e a c h   m e s s a g e   * / s t r u c t   m s g _ m s g   { s t r u c t   l i s t _ h e a d   m _ l i s t ; l o n g   m _ t y p e ; s i z e _ t   m _ t s ;         / *   m e s s a g e   t e x t   s i z e   * / s t r u c t   m s g _ m s g s e g   * n e x t ; v o i d   * s e c u r i t y ; / *   t h e   a c t u a l   m e s s a g e   f o l l o w s   i m m e d i a t e l y   * / } ; / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / i n c l u d e / l i n u x / t y p e s . h s t r u c t   l i s t _ h e a d   { s t r u c t   l i s t _ h e a d   * n e x t ,   * p r e v ; } ; / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / i p c / m s g u t i l . c s t r u c t   m s g _ m s g s e g   { s t r u c t   m s g _ m s g s e g   * n e x t ; / *   t h e   n e x t   p a r t   o f   t h e   m e s s a g e   f o l l o w s   i m m e d i a t e l y   * / } ;
使   1 0 2 4 m s g s n d ( ) [ 2 ]   1 0 2 4   s e t s o c k o p t ( I P T _ S O _ S E T _ R E P L A C E ) s t r u c t   x t _ t a b l e _ i n f o [   3 x t _ t a b l e _ i n f o A ]   1 0 2 4     1   -   ( 1 0 2 4   /   6 5 5 3 6 )   使 4   [ 0 ,   4 0 9 6 )   使 m s g r c v ( ) w i t h   M S G _ C O P Y
使   -   使 m s g r c v ( ) [   5 ]   S M A P 使   u n i x   使   s o c k e t p a i r ( )   1 0 2 4   仿 s t r u c t   m s g _ m s g 6 s t r u c t   m s g _ m s g m l i s t . n e x t   4 1 4 1 4 1 4 1   S M A P     m s g r c v ( ) s t r u c t   m s g _ m s g .   m _ t s / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / i p c / m s g u t i l . c s t r u c t   m s g _ m s g   * c o p y _ m s g ( s t r u c t   m s g _ m s g   * s r c ,   s t r u c t   m s g _ m s g   * d s t ) { s t r u c t   m s g _ m s g s e g   * d s t _ p s e g ,   * s r c _ p s e g ; s i z e _ t   l e n   =   s r c - > m _ t s ; s i z e _ t   a l e n ; i f   ( s r c - > m _ t s   >   d s t - > m _ t s ) r e t u r n   E R R _ P T R ( - E I N V A L ) ;     a l e n   =   m i n ( l e n ,   D A T A L E N _ M S G ) ;
1 0 2 4 - s i z e o f ( s t r u c t   m s g _ m s g ) D A T A L E N _ M S G = 4 0 9 6 - s i z e o f ( s t r u c t   m s g _ m s g ) .   s t r u c t   m s g _ m s g m l i s t . n e x t s t r u c t   m s g _ m s g 使 n e x t D A T A L E N _ M S G m l i s t . n e x t   f a k e   s t r u c t   m s g _ m s g   1 0 2 4 使 使 s t r u c t   m s g _ m s g 使 m l i s t . n e x t m l i s t . p r e v 使   7 F a k e s t r u c t   m s g _ m s g   n e x t   使   u n i x   s t r u c t   s k _ b u f f [   8 ] s t r u c t   s k _ b u f f 使 使 s t r u c t   m s g _ m s g m e m c p y ( d s t   +   1 ,   s r c   +   1 ,   a l e n ) ;     . . . r e t u r n   d s t ; }
G F P _ K E R N E L _ A C C O U N T .   J a n n   H o r n   s t r u c t   p i p e _ b u f f e r   k m a l l o c - 1 0 2 4     1 0 2 4   s t r u c t   p i p e _ b u f f e r p i p e ( ) a l l o c _ p i p e _ i n f o ( ) s t r u c t   p i p e _ b u f _ o p e r a t i o n s   K A S L R / S M E P s t r u c t   p i p e _ b u f f e r o p s a n o n _ p i p e _ b u f _ o p s   . d a t a   / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / f s / p i p e . c s t r u c t   p i p e _ i n o d e _ i n f o   * a l l o c _ p i p e _ i n f o ( v o i d ) {     . . .     u n s i g n e d   l o n g   p i p e _ b u f s   =   P I P E _ D E F _ B U F F E R S ;     . . .     p i p e   =   k z a l l o c ( s i z e o f ( s t r u c t   p i p e _ i n o d e _ i n f o ) ,   G F P _ K E R N E L _ A C C O U N T ) ;     i f   ( p i p e   = =   N U L L )         g o t o   o u t _ f r e e _ u i d ;     . . .     p i p e - > b u f s   =   k c a l l o c ( p i p e _ b u f s ,   s i z e o f ( s t r u c t   p i p e _ b u f f e r ) ,                       G F P _ K E R N E L _ A C C O U N T ) ;     . . . } / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / i n c l u d e / l i n u x / p i p e _ f s _ i . h s t r u c t   p i p e _ b u f f e r   {     s t r u c t   p a g e   * p a g e ;     u n s i g n e d   i n t   o f f s e t ,   l e n ;     c o n s t   s t r u c t   p i p e _ b u f _ o p e r a t i o n s   * o p s ;     u n s i g n e d   i n t   f l a g s ;     u n s i g n e d   l o n g   p r i v a t e ; } ; s t r u c t   p i p e _ b u f _ o p e r a t i o n s   {     . . .     / *       *   W h e n   t h e   c o n t e n t s   o f   t h i s   p i p e   b u f f e r   h a s   b e e n   c o m p l e t e l y       *   c o n s u m e d   b y   a   r e a d e r ,   - > r e l e a s e ( )   i s   c a l l e d .       * /     v o i d   ( * r e l e a s e ) ( s t r u c t   p i p e _ i n o d e _ i n f o   * ,   s t r u c t   p i p e _ b u f f e r   * ) ;     . . . } ; / /   h t t p s : / / g i t . k e r n e l . o r g / p u b / s c m / l i n u x / k e r n e l / g i t / t o r v a l d s / l i n u x . g i t / t r e e / f s / p i p e . c s t a t i c   c o n s t   s t r u c t   p i p e _ b u f _ o p e r a t i o n s   a n o n _ p i p e _ b u f _ o p s   =   {     . r e l e a s e     =   a n o n _ p i p e _ b u f _ r e l e a s e ,     . t r y _ s t e a l     =   a n o n _ p i p e _ b u f _ t r y _ s t e a l ,     . g e t         =   g e n e r i c _ p i p e _ b u f _ g e t , } ;
  . d a t a     . t e x t   a n o n _ p i p e _ b u f _ o p s s t r u c t   p i p e _ b u f f e r s t r u c t   s k _ b u f f [   9 s t r u c t   p i p e _ b u f f e r ]   s t r u c t   s k _ b u f f   s t r u c t   p i p e _ b u f f e r a n o n _ p i p e _ b u f _ o p s   J O P / R O P     u n i x   [   1 0 s t r u c t   p i p e _ b u f f e r ] s t r u c t   p i p e _ b u f f e r o p s s t r u c t   p i p e _ b u f _ o p e r a t i o n s r e l e a s e [ + ]   a n o n _ p i p e _ b u f _ o p s :   f f f f f f f f a 1 e 7 8 3 8 0 [ + ]   k b a s e _ a d d r :   f f f f f f f f a 0 e 0 0 0 0 0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则