Уразлівасці ў пакетным мэнэджары 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

Дадаць каментар