В мениджъра на пакети Cargo, използван за управление на пакети и компилация на проекти на Rust, бяха открити две уязвимости, които могат да бъдат експлоатирани при зареждане на специално оформени пакети от външни репозитори. Утвърдителите казват, че проблемът не засяга потребителите на официалното репозитори crates.io. Първата уязвимост (CVE-2022-36113) позволява презаписване на първите два байта във всеки файл, в зависимост от текущите права за достъп. Втората уязвимост (CVE-2022-36114) може да бъде използвана за изчерпване на свободното дисково пространство.
Уязвимостите ще бъдат отстранени в версията на Rust 1.64, насрочена за 22 септември. На уязвимостите е присвоен нисък риск, тъй като подобен вреден ефект може да бъде причинен чрез използване на непроверени пакети от външни репозитори с помощта на стандартната възможност за стартиране на собствени обработчици от предоставените в пакета скриптове за компилация или процедурни макроси. При това, гореспоменатите проблеми се различават по това, че тяхната експлоатация се извършва на етапа на разкриване на пакета след зареждането (без компилация).
Конкретно, след зареждане на пакета, cargo го разопакова в каталога ~/.cargo и записва признак за успешно разопаковане в файла .cargo-ok. Същността на първата уязвимост е, че създателят на пакета може да постави символична връзка с име .cargo-ok, което ще доведе до запис на текста „ok“ в файла, на който сочи връзката.
Втората уязвимост е предизвикана от отсъствието на ограничение на размера на извлечените данни от архива, което може да бъде използвано за създаване на „zip-бомби“ (в архива могат да бъдат поставени данни, които позволяват постигане на максимална степен на компресия за формата zip — около 28 милиона пъти; в този случай, например, специално подготвен zip файл с размер 10 МБ ще доведе до разопаковане на около 281 ТБ данни).
Източник: opennet.ru
