Van trobar vulnerabilitats en les biblioteca de xarxa de Rust i Go evita la validació IP

fa poc es va donar a conèixer informació sobre vulnerabilitats que van ser trobades a les biblioteques estàndard dels llenguatges Rust i Go, les quals estan relacionades amb el maneig incorrecte d'adreces IP amb dígits octals en les funcions d'anàlisi de direccions.

S'esmenta que istes vulnerabilitats permeten evitar verificacions d'adreces vàlides in aplicacions, per exemple, per organitzar l'accés a adreces d'interfície de bucle invertiu o subxarxes d'intranet quan es realitzen atacs de falsificació de sol·licituds de la banda de servidor.

Les vulnerabilitats en aquests dos llenguatges tenen realització en l'especificació les cadenes d'adreces IP basades en zero, ja que aquestes en teoria haurien d'interpretar-se com números octals, però el problema que causa aquests errors és que moltes biblioteques no tenen això en compte i simplement descarten el zero, per la qual cosa acaben tractant el valor com un nombre decimal.

Per exemple, per a poder entendre el com és interpretades les adreces IP en aquests errors, el nombre 0177 en octal és 127 en decimal i amb la qual cosa un atacant pot demanar un recurs especificant el valor «0177.0.0.1», el qual al no ser pres com octal la notació decimal d'aquest és «127.0.0.1».

És per això que en el cas d'utilitzar una de les biblioteques problemàtiques, l'aplicació no detectarà l'ocurrència de la direcció 0177.0.0.1 en la subxarxa 127.0.0.1, però de fet, a l'enviar una sol·licitud, es pot trucar a l'adreça «0177.0.0.1» la qual per la mala interpretació, les funcions de xarxa processaran aquesta com 127.0.0.1. De manera similar, es pot enganyar i verificar l'accés a les direccions de la intranet especificant valors diversos valors, els quals l'atacant avalués per a la seva possible explotació.

Pel costat de Rust, el problema es va detectar que estava subjecte a la biblioteca estàndard «std :: net» i la qual ja està catalogada sota «CVE-2021-29922». S'hi descriu que l'analitzador de les adreces IP d'aquesta biblioteca descarta un zero davant dels valors de la direcció, però només si no es van especificar més de tres dígits, per exemple, «0177.0.0.1» s'interpretarà com un valor no vàlid i es retornarà un resultat incorrecte en resposta.

La validació d'entrada incorrecta de cadenes octals a la biblioteca estàndard 'net' de rust-lang permet a atacants remots no autenticats realitzar atacs SSRF, RFI i LFI indeterminats en molts programes que depenen de rust-lang std :: net. Els octectos de l'adreça IP es deixen despullats en lloc d'avaluar-com adreces IP vàlides.

A més s'esmenta que les aplicacions que utilitzen la biblioteca std :: net :: IpAddr a l'analitzar adreces especificades per l'usuari són potencialment susceptibles a atacs SSRF (Falsificació de sol·licituds de la banda de servidor), RFI (Inclusió remota d'arxius) i BIA (Inclusió d'arxius locals). De la mateixa manera, un atacant pot ingressar 127.0.026.1, que en realitat és 127.0.22

Per exemple, un atacant que envia una adreça IP a una aplicació web que es basa en std :: net :: IpAddr, podria causar SSRF a l'ingressar dades d'entrada octal; Un atacant pot enviar adreces IP explotables si l'octet té 3 dígits, sent el octecto explotable mínim 08 que condice a denegació de servei i l'octet explotable màxim 099 el qual també condueix a denegació de servei. 

Si vols conèixer més a l'respecte sobre aquesta vulnerabilitat a Rust, pots consultar els detalls en el següent enllaç. També s'esmenta que la vulnerabilitat es va corregir en la branca Rust 1.53.0.

Quant a el problema que afecta a Go, s'esmenta que aquest està subjecte a la biblioteca estàndard 'net' i ja està catalogat sota CVE-2021-29923. En la descripció s'esmenta que permet a atacants remots no autenticats realitzar atacs SSRF, RFI i LFI indeterminats en molts programes que depenen de la funció net.ParseCIDR incorporada de golang. Els octets individuals d'IP de CIDR s'eliminen en lloc d'avaluar-los com octets d'IP vàlids.

Per exemple, un atacant pot passar el valor 00000177.0.0.1, que, quan es marca a la funció net.ParseCIDR, s'analitzarà com 177.0.0.1/24, no 127.0.0.1/24. El problema també es manifesta en la plataforma Kubernetes. La vulnerabilitat es va solucionar en la versió Go 1.16.3 i la versió beta 1.17.

Pots conèixer més a l'respecte sobre aquesta vulnerabilitat en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.