Те откриха уязвимости в мрежовите библиотеки на Rust и Go, предотвратяващи валидирането на IP

наскоро беше публикувана информация за уязвимостите които бяха намерени в стандартните библиотеки на езиците Ръждай и тръгвай, които са свързани с неправилно използване на IP адреси с осмични цифри във функциите за анализ на адреса.

Споменава се, че дТези уязвимости ви позволяват да избягвате проверките на валидни адреси иn приложения, например, за организиране на достъпа до адреси на интерфейса с обратна връзка или подмрежи в интранет, когато се извършват атаки за фалшифициране на заявки от страна на сървъра.

Уязвимостите в тези два езика Низовете на IP адреси имат реализация в спецификацията базирано на нула, тъй като сте на теория те трябва да се тълкуват като осмични числа, но проблемът, причиняващ тези проблеми, е, че много библиотеки пренебрегват това и просто изхвърлят нулата по този начин те в крайна сметка третират стойността като десетично число.

Например, за да се разбере как IP адресите се интерпретират в тези грешки, числото 0177 в осмично число е 127 в десетичен знак и с което нападателят може да поиска ресурс, определящ стойността "0177.0.0.1", която, тъй като не е взета като осмична, десетичната нотация за това е "127.0.0.1".

Ето защо в случай на използване на една от проблемните библиотеки, приложението няма да открие появата на адреса 0177.0.0.1 в подмрежата 127.0.0.1, но всъщност при изпращане на заявка може да бъде извикан адресът „0177.0.0.1“, който поради неправилно тълкуване мрежовите функции ще обработят това като 127.0.0.1. По подобен начин достъпът до интранет адресите може да бъде измамен и проверен чрез посочване на различни стойности, които нападателят ще оцени за възможна експлоатация.

От страната на Rust, проблемът е подложен на стандартната библиотека "std :: net" и който вече е каталогизиран под „CVE-2021-29922“. Това описва това анализаторът на IP адреса на тази библиотека изхвърля нула пред стойностите на адреса, но само ако не са посочени повече от три цифри, например „0177.0.0.1“ ще се интерпретира като невалидна стойност и в отговор ще бъде върнат неправилен резултат.

Неправилното валидиране на въвеждането на осмичен низ в стандартната "net" библиотека на rust-lang позволява на неудостоверени отдалечени атакуващи да извършват неопределени SSRF, RFI и LFI атаки върху много програми, които зависят от rust-lang std :: net. Октетите на IP адреса се оставят разделени, вместо да се оценяват като валидни IP адреси.

Споменава се също, че приложения, които използват библиотеката std :: net :: IpAddr при анализиране на посочени адреси от потребител са потенциално податливи на SSRF атаки (измама на заявка от страна на сървъра), RFI (отдалечено включване на файлове) и БСК (включване на локални файлове). По същия начин нападателят може да въведе 127.0.026.1, което всъщност е 127.0.22

Например, нападател, който изпраща IP адрес до уеб приложение, базирано на std :: net :: IpAddr, може да предизвика SSRF чрез въвеждане на осмични входни данни; Нападателят може да изпраща експлоатируеми IP адреси, ако октетът има 3 цифри, с минималния експлоатируем октет 08, който води до отказ на услуга, и максималния експлоатируем октет 099, който също води до отказ на услуга. 

Ако искате да научите повече за тази уязвимост в Rust, можете да проверите подробностите В следващия линк. Споменава се също, че уязвимостта е отстранена в клона Rust 1.53.0.

Възможно най-скоро към проблема, който засяга to Go, се споменава, че това е предмет на стандартната библиотека «net» и вече е вписан под CVE-2021-29923. В описанието е посочено, че позволява на неупълномощени отдалечени нападатели да извършват SSRF, RFI и LFI атаки неопределен в много програми, които зависят от вградената в golang net.ParseCIDR функция. Отделните IP октети на CIDR се премахват, вместо да се оценяват като валидни IP октети.

Например, атакуващият може да предаде стойността 00000177.0.0.1, която, когато е проверена във функцията net.ParseCIDR, ще бъде анализирана като 177.0.0.1/24, а не 127.0.0.1/24. Проблемът се проявява и на платформата Kubernetes. Уязвимостта беше отстранена в Go версия 1.16.3 и бета версия 1.17.

Можете да научите повече за това относно тази уязвимост В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.