Уразливості в пакетному менеджері Cargo, що застосовується для проектів мовою Rust

У пакетному менеджері 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

Додати коментар або відгук