[13822] 2019-03-03_以太坊链审计报告之go-ethereum安全审计

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-18
2019-03-03_以太坊链审计报告之go-ethereum安全审计 g o - e t h e r e u m B U G X   F r e e B u f   2 0 1 9 - 0 3 - 0 3 G o   E t h e r e u m   S e c u r i t y   R e v i e w 2 0 1 7 4 2 5 使 使   1 . 1 .   2 0 1 7 4 G O R P C   H T T P w e b 1 . 2 .   1 . 2 . 1 .   P 2 P 1 . 2 . 2 .   1 . 2 . 3 .   I P C R P C C O R S : H T T P   R P C 1 . 2 . 4 .   J a v a s c r i p t A P I 1 . 2 . 5 .   E V M 1 . 2 . 6 .   g o - e t h e r e u m 2 0 1 7 - 0 4 - 2 5 _ G e t h - a u d i t _ T r u e s e c g o - e t h e r e u m T r u e S e c i n t P o o l
1 . 3 .   1 . 3 . 1 .   P 2 P   -     -   D O S g o - f u z z R L P f u z z 1 . 3 . 1 . 1 .   使 ( ) ( ) 1 . 3 . 1 . 2 .   ,   D O S , 1 . 3 . 2 .   T r u e S e c p 2 p s e c r e t s T r u e S e c s e c r e t s e n c r y p t i o n   h a n d s h a k e t w o - t i m e - p a d [ h t t p s : / / g i t h u b . c o m / e t h e r e u m / d e v p 2 p / i s s u e s / 3 2 ] ( h t t p s : / / g i t h u b . c o m / e t h e r e u m / d e v p 2 p / i s s u e s / 3 2 ) [ h t t p s : / / g i t h u b . c o m / e t h e r e u m / g o - e t h e r e u m / i s s u e s / 1 3 1 5 ] ( h t t p s : / / g i t h u b . c o m / e t h e r e u m / g o - e t h e r e u m / i s s u e s / 1 3 1 5 ) T r u e S e c r l p x . g o T r u e S e c T r u e S e c 1 6 . 8 M B f u n c   ( r w   * r l p x F r a m e R W )   R e a d M s g ( )   ( m s g   M s g ,   e r r   e r r o r )   {         . . .         f s i z e   : =   r e a d I n t 2 4 ( h e a d b u f )         / /   i g n o r e   p r o t o c o l   t y p e   f o r   n o w         / /   r e a d   t h e   f r a m e   c o n t e n t         v a r   r s i z e   =   f s i z e   / /   f r a m e   s i z e   r o u n d e d   u p   t o   1 6   b y t e   b o u n d a r y         i f   p a d d i n g   : =   f s i z e   %   1 6 ;   p a d d i n g   >   0   {         r s i z e   + =   1 6   -   p a d d i n g         }         / /   T R U E S E C :   u s e r - c o n t r o l l e d   a l l o c a t i o n   o f   1 6 . 8 M B :         f r a m e b u f   : =   m a k e ( [ ] b y t e ,   r s i z e )         . . . } 1 0 M B T r u e S e c e n c r y p t i o n   h a n d s h a k e 6 5 K B f u n c   r e a d H a n d s h a k e M s g ( m s g   p l a i n D e c o d e r ,   p l a i n S i z e   i n t ,                                             p r v   * e c d s a . P r i v a t e K e y ,   r   i o . R e a d e r )   ( [ ] b y t e ,   e r r o r )   {         . . .         / /   C o u l d   b e   E I P - 8   f o r m a t ,   t r y   t h a t .         p r e f i x   : =   b u f [ : 2 ]         s i z e   : =   b i n a r y . B i g E n d i a n . U i n t 1 6 ( p r e f i x )         i f   s i z e   <   u i n t 1 6 ( p l a i n S i z e )   {                 r e t u r n   b u f ,   f m t . E r r o r f ( " s i z e   u n d e r f l o w ,   n e e d   a t   l e a s t   . . . " )         }         / /   T R U E S E C :   u s e r - c o n t r o l l e d   a l l o c a t i o n   o f   6 5 K B :         b u f   =   a p p e n d ( b u f ,   m a k e ( [ ] b y t e ,   s i z e - u i n t 1 6 ( p l a i n S i z e ) + 2 ) . . . )         . . . } 6 5 K B T r u e S e c T r u e S e c g o r o u n t i n e I O
1 . 3 . 2 . 1 .   G o : 1 . 3 . 2 . 2 .   ,   2 0 0 6 0 3 1 1 1 . 3 . 3 .   I P C R P C I P C R P C ( H T T P W e b s o c k e t ) 访 A P I A P I ( a d m i n ,   d e b u g ) 1 . 3 . 3 . 1 .   C O R S : H T T P   R P C w e b 8 5 4 5 H T T P 访 ( ) A P I H T T P R P C ( C O R S ) w e b 访 X S S R P C   A P I , 使 w e b 访 C O R S C O R S c o m m i t   5 e 2 9 f 4 b ( 2 0 1 7 4 1 2 ) R P C w e b 访 H T T P   R P C C O R S ( L i s t i n g   1 ) w i t h ( 使 - - r p c c o r s d o m a i n ) ( L i s t i n g   2 ) (   L i s t i n g   3 ) 0 c o r s p a n i c d o w n l o a d e r . g o q o s R e d u c e C o n f i d e n c e f u n c   ( d   * D o w n l o a d e r )   q o s R e d u c e C o n f i d e n c e ( )   {         p e e r s   : =   u i n t 6 4 ( d . p e e r s . L e n ( ) )         . . .         / /   T R U E S E C :   n o   z e r o - c h e c k   o f   p e e r s   h e r e         c o n f   : =   a t o m i c . L o a d U i n t 6 4 ( & d . r t t C o n f i d e n c e )   *   ( p e e r s   -   1 )   /   p e e r s         . . . } T r u e S e c d . p e e r s . L e n ( ) T r u e S e c T r u e S e c f e t c h e r . g o d o w n l o a d e r . g o b l o c k c h a i n . g o D o w n l o a d e r e t h T r u e S e c T r u e S e c H T T P   R P C g e t h - - r p c a l l o w e d   o r i g i n s - - r p c c o r s d o m a i n   " d o m a i n " - -   r p c c o r s d o m a i n   " d o m a i n 1 , d o m a i n 2 " - - r p c c o r s d o m a i n   " * " C r o s s - O r i g i n   R e q u e s t   B l o c k e d :   T h e   S a m e   O r i g i n   P o l i c y   d i s a l l o w s   r e a d i n g   t h e   r e m o t e   r e s o u r c e   a t   h t t p : / / l o c a l h o s t : 8 5 4 5 / .   ( R e a s o n :   C O R S   h e a d e r   ' A c c e s s - C o n t r o l - A l l o w - O r i g i n   m i s s i n g ' ) . F i r e f o x a l l o w e d   o r i g i n s c o r s c o m m i t   5 e 2 9 f 4 b n e w C o r s H a n d l e r c o r s c o r s a l l o w e d   o r i g i n s
, C O R S 使 ( ) ( n u l l o r i g i n ) C O R S ( , C O R S ) ( ) L i s t i n g   1 :   r p c / h t t p . g o ,   b e f o r e   c o m m i t   5 e 2 9 f 4 b e 9 3 5 f f 2 2 7 b b f 0 7 a 0 c 6 e 8 0 e 8 8 0 9 f 5 e 0 2 0 2 L i s t i n g   2 :   r p c / h t t p . g o ,   a f t e r   c o m m i t   5 e 2 9 f 4 b e 9 3 5 f f 2 2 7 b b f 0 7 a 0 c 6 e 8 0 e 8 8 0 9 f 5 e 0 2 0 2 L i s t i n g   3 :   v e n d o r / g i t h u b . c o m / r s / c o r s / c o r s . g o L i s t i n g   4 :   C O R S   h e a d e r s   b e f o r e   c o m m i t   5 e 2 9 f 4 b L i s t i n g   5 :   C O R S   h e a d e r s   a f t e r   c o m m i t   5 e 2 9 f 4 b 1 . 3 . 4 .   J a v a S c r i p t A P I J a v a S c r i p t o t t o G o   E t h e r e u m C L I I P C / R P C 1 . 3 . 4 . 1 .   ( ) U N I X l i s t i n g   6 , 使 使 使 L i s t i n g   6 :   i n t e r n a l / j s r e / j s r e . g o g e t h   - r p c a l l o w e d   o r i g i n s c o m m i t   5 e 2 9 f 4 b O P T I O N A c c e s s - C o n t r o l - A l l o w - O r i g i n c o r s J a v a S c r i p t v a r   x h r   =   n e w   X M L H t t p R e q u e s t ( ) ; x h r . o p e n ( " P O S T " ,   " h t t p : / / l o c a l h o s t : 8 5 4 5 " ,   t r u e ) ; x h r . s e t R e q u e s t H e a d e r ( " C o n t e n t - T y p e " ,   " a p p l i c a t i o n / j s o n " ) ; x h r . o n r e a d y s t a t e c h a n g e   =   f u n c t i o n ( )   {         i f   ( x h r . r e a d y S t a t e   = =   X M L H t t p R e q u e s t . D O N E   & &   x h r . s t a t u s   = =   2 0 0 )   {         c o n s o l e . l o g ( " M o d u l e s :   "   +   x h r . r e s p o n s e T e x t ) ;         } } x h r . s e n d ( ' { " j s o n r p c " : " 2 . 0 " , " m e t h o d " : " r p c _ m o d u l e s " , " p a r a m s " : [ ] , " i d " : 6 7 } ' ) T r u e S e c a l l o w e d   o r i g i n l o c a l h o s t 1 6 5   f u n c   n e w C o r s H a n d l e r ( s r v   * S e r v e r ,   c o r s S t r i n g   s t r i n g )   h t t p . H a n d l e r   { 1 6 6           v a r   a l l o w e d O r i g i n s   [ ] s t r i n g 1 6 7           f o r   _ ,   d o m a i n   : =   r a n g e   s t r i n g s . S p l i t ( c o r s S t r i n g ,   " , " )   { 1 6 8                   a l l o w e d O r i g i n s   =   a p p e n d ( a l l o w e d O r i g i n s ,   s t r i n g s . T r i m S p a c e ( d o m a i n ) ) 1 6 9           } 1 7 0           c   : =   c o r s . N e w ( c o r s . O p t i o n s { 1 7 1                   A l l o w e d O r i g i n s :   a l l o w e d O r i g i n s , 1 7 2                   A l l o w e d M e t h o d s :   [ ] s t r i n g { " P O S T " ,   " G E T " } , 1 7 3                   M a x A g e :   6 0 0 , 1 7 4                   A l l o w e d H e a d e r s :   [ ] s t r i n g { " * " } , 1 7 5           } ) 1 7 6           r e t u r n   c . H a n d l e r ( s r v ) 1 7 7   } 1 6 4   f u n c   n e w C o r s H a n d l e r ( s r v   * S e r v e r ,   a l l o w e d O r i g i n s   [ ] s t r i n g )   h t t p . H a n d l e r   { 1 6 5           c   : =   c o r s . N e w ( c o r s . O p t i o n s { 1 6 6                   A l l o w e d O r i g i n s :   a l l o w e d O r i g i n s , 1 6 7                   A l l o w e d M e t h o d s :   [ ] s t r i n g { " P O S T " ,   " G E T " } , 1 6 8                   M a x A g e :   6 0 0 , 1 6 9                   A l l o w e d H e a d e r s :   [ ] s t r i n g { " * " } , 1 7 0           } ) 1 7 1           r e t u r n   c . H a n d l e r ( s r v ) 1 7 2   } 1 1 3           / /   A l l o w e d   O r i g i n s 1 1 4           i f   l e n ( o p t i o n s . A l l o w e d O r i g i n s )   = =   0   { 1 1 5           / /   D e f a u l t   i s   a l l   o r i g i n s 1 1 6           c . a l l o w e d O r i g i n s A l l   =   t r u e 1 1 7           } $   c u r l   - i   - X   O P T I O N S         - H   " A c c e s s - C o n t r o l - R e q u e s t - M e t h o d :   P O S T "         - H   " A c c e s s - C o n t r o l - R e q u e s t - H e a d e r s :   c o n t e n t - t y p e "         - H   " O r i g i n :   f o o b a r "   h t t p : / / l o c a l h o s t : 8 5 4 5 H T T P / 1 . 1   2 0 0   O K V a r y :   O r i g i n V a r y :   A c c e s s - C o n t r o l - R e q u e s t - M e t h o d V a r y :   A c c e s s - C o n t r o l - R e q u e s t - H e a d e r s D a t e :   T u e ,   2 5   A p r   2 0 1 7   0 8 : 4 9 : 1 0   G M T C o n t e n t - L e n g t h :   0 C o n t e n t - T y p e :   t e x t / p l a i n ;   c h a r s e t = u t f - 8 $   c u r l   - i   - X   O P T I O N S         - H   " A c c e s s - C o n t r o l - R e q u e s t - M e t h o d :   P O S T "         - H   " A c c e s s - C o n t r o l - R e q u e s t - H e a d e r s :   c o n t e n t - t y p e "         - H   " O r i g i n :   f o o b a r "   h t t p : / / l o c a l h o s t : 8 5 4 5 H T T P / 1 . 1   2 0 0   O K A c c e s s - C o n t r o l - A l l o w - H e a d e r s :   C o n t e n t - T y p e A c c e s s - C o n t r o l - A l l o w - M e t h o d s :   P O S T A c c e s s - C o n t r o l - A l l o w - O r i g i n :   f o o b a r A c c e s s - C o n t r o l - M a x - A g e :   6 0 0 V a r y :   O r i g i n V a r y :   A c c e s s - C o n t r o l - R e q u e s t - M e t h o d V a r y :   A c c e s s - C o n t r o l - R e q u e s t - H e a d e r s D a t e :   T u e ,   2 5   A p r   2 0 1 7   0 8 : 4 7 : 2 4   G M T C o n t e n t - L e n g t h :   0 C o n t e n t - T y p e :   t e x t / p l a i n ;   c h a r s e t = u t f - 8 d e b u g   A P I j s r e c r y p t o / r a n d c r y p t o / r a n d m a t h / r a n d P R N G R N G P R N G c r y p t o / r a n d P R N G 8 4   / /   r a n d o m S o u r c e   r e t u r n s   a   p s e u d o   r a n d o m   v a l u e   g e n e r a t o r . 8 5   f u n c   r a n d o m S o u r c e ( )   * r a n d . R a n d   { 8 6           b y t e s   : =   m a k e ( [ ] b y t e ,   8 ) 8 7           s e e d   : =   t i m e . N o w ( ) . U n i x N a n o ( )   / /   8 8           i f   _ ,   e r r   : =   c r a n d . R e a d ( b y t e s ) ;   e r r   = =   n i l   { 8 9                   s e e d   =   i n t 6 4 ( b i n a r y . L i t t l e E n d i a n . U i n t 6 4 ( b y t e s ) ) 9 0           } 9 1 9 2           s r c   : =   r a n d . N e w S o u r c e ( s e e d ) 9 3           r e t u r n   r a n d . N e w ( s r c ) 9 4   }
1 . 3 . 5 .   ( E V M ) ( E V M ) I O E V M ( r u n t i m e / f u z z . g o ) 使 f u z z i n g 1 . 3 . 5 . 1 .   i n t P o o l E V M 使 ( i n t p o o l . g o ) 使 使 3 . 3 3 e 9 g a s ( 3 3 0 0 U S D ) 1 0 G 1 0 G B 1 . 9 5 e 1 4 ( 1 9 5 , 0 0 0 , 0 0 0 U S D ) 1 . 3 . 5 . 2 .   使 : ( R L P ) R L P 使 1 . 3 . 6 .   1 . 3 . 6 . 1 .   使 " - r a c e " 使 使   1 . 3 . 6 . 2 .   7 1 ( ) T r u e S e c g o - f u z z T r u e S e c i n t P o o l o p c o d e 0   J U M P D E S T             / /   1   g a s 1   C O I N B A S E             / /   2   g a s 2   O R I G I N                 / /   2   g a s 3   E Q                         / /   3   g a s ,   p u t s   2 0   +   2 0   b y t e s   o n   t h e   i n t p o o l 4   J U M P                     / /   8   g a s ,   p u t s   4 - 8   b y t e s   o n   t h e   i n t p o o l i n t P o o l g a s i n t P o o l o u t   o f   m e m o r y   p a n i c g a s l i m i t i n t P o o l g a s l i m i t   t a r g e t T r u e S e c i n t P o o l c o r e / e v m . g o T r a n s f e r f u n c   T r a n s f e r ( d b   v m . S t a t e D B ,   s e n d e r ,   r e c i p i e n t   c o m m o n . A d d r e s s ,   a m o u n t   * b i g . I n t )   {         d b . S u b B a l a n c e ( s e n d e r ,   a m o u n t )         d b . A d d B a l a n c e ( r e c i p i e n t ,   a m o u n t ) } a m o u n t a m o u n t t x _ p o o l . g o ,   v a l i d a t e T x ( ) i f   t x . V a l u e ( ) . S i g n ( )   <   0   {         r e t u r n   E r r N e g a t i v e V a l u e } p 2 p T r u e S e c T r u e S e c G o e t h a s h / e t h a s h . g o e t h a s h   d a t a s e t s f u n c   ( e t h a s h   * E t h a s h )   d a t a s e t ( b l o c k   u i n t 6 4 )   [ ] u i n t 3 2   {         e p o c h   : =   b l o c k   /   e p o c h L e n g t h         / /   I f   w e   h a v e   a   P o W   f o r   t h a t   e p o c h ,   u s e   t h a t         e t h a s h . l o c k . L o c k ( )         . . .         c u r r e n t . u s e d   =   t i m e . N o w ( )   / /   T R U E S E C :   r a c e         e t h a s h . l o c k . U n l o c k ( )         / /   W a i t   f o r   g e n e r a t i o n   f i n i s h ,   b u m p   t h e   t i m e s t a m p   a n d   f i n a l i z e   t h e   c a c h e         c u r r e n t . g e n e r a t e ( e t h a s h . d a g d i r ,   e t h a s h . d a g s o n d i s k ,   e t h a s h . t e s t e r )         c u r r e n t . l o c k . L o c k ( )         c u r r e n t . u s e d   =   t i m e . N o w ( )         c u r r e n t . l o c k . U n l o c k ( ) . . . } c u r r e n t . l o c k c u r r e n t . u s e d T r u e S e c G o   E t h e r e u m g o v e n d o r   l i s t   + v e n d
7 1 1 . 4 .   1 . 4 . 1 .   1 . 4 . 2 .   h t t p s : / / g i t h u b . c o m / e t h e r e u m / g o - e t h e r e u m / b l o b / m a s t e r / d o c s / a u d i t s / 2 0 1 7 - 0 4 - 2 5 G e t h - a u d i t T r u e s e c . p d f 1 . 4 . 3 .   U R L g o   e t h e r e u m h t t p s : / / e t h e r e u m . g i t h u b . i o / g o - e t h e r e u m / g o   f u z z h t t p s : / / g i t h u b . c o m / d v y u k o v / g o - f u z z / c o m m i t   5 e 2 9 f 4 h t t p s : / / g i t h u b . c o m / e t h e r e u m / g o - e t h e r e u m / c o m m i t / 5 e 2 9 f 4 b e 9 3 5 f f 2 2 7 b b f 0 7 a 0 c 6 e 8 0 e 8 8 0 9 f 5 e 0 2 0 2 c o r s h t t p s : / / g i t h u b . c o m / r s / c o r s o t t o h t t p s : / / g i t h u b . c o m / r o b e r t k r i m e n / o t t o * g i t h u b J a v i e r l e v @   F r e e B u f . C O M T r u e S e c T r u e S e c
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则