Праект па рэалізацыі ўтыліт sudo і su на мове Rust

Арганізацыя ISRG (Internet Security Research Group), якая з'яўляецца заснавальнікам праекту Let's Encrypt і спрыяе пасоўванню HTTPS і развіццю тэхналогій для падвышэння абароненасці інтэрнэту, прадставіла праект Sudo-rs па стварэнні напісаных на мове Rust рэалізацый утыліт sudo і su, якія дазваляюць выконваць каманды ад імя іншых карыстальнікаў. Пад ліцэнзіямі Apache 2.0 і MIT ужо апублікаваная папярэдняя версія Sudo-rs, пакуль не гатовая да паўсюднага выкарыстання. Праект, праца над якім пачалася ў снежні 2022 года, плануюць завяршыць у верасні 2023 года.

У цяперашні час праца засяроджана на рэалізацыі ў Sudo-rs функцый, якія дазваляюць выкарыстоўваць утыліту ў якасці празрыстай замены sudo у тыпавых сцэнарах выкарыстання (канфігурацыі sudoers па змаўчанні ў Ubuntu, Fedora і Debian). У будучыні плануецца стварыць бібліятэку, якая дазваляе ўбудоўваць функцыянальнасць sudo у іншыя праграмы, і падаць альтэрнатыўны метад налады, які дае магчымасць абыйсціся без разбору сінтаксісу файла канфігурацыі sudoers. На базе рэалізаванай функцыянальнасці sudo таксама будзе падрыхтаваны варыянт утыліты su. Дадаткова ў планах згадваецца падтрымка SELinux, AppArmor, LDAP, сродкаў аўдыту, магчымасць аўтэнтыфікацыі без выкарыстання PAM і рэалізацыя ўсіх опцый каманднага радка sudo.

Па дадзеных кампаній Microsoft і Google каля 70% уразлівасцяў выкліканыя небяспечнай працай з памяццю. Мяркуецца, што выкарыстанне мовы Rust для распрацоўкі su і sudo дазволіць зменшыць рызыку з'яўлення ўразлівасцяў, выкліканых небяспечнай працай з памяццю, і выключыць з'яўленне такіх памылак, як зварот да вобласці памяці пасля яе вызвалення і вынахад за межы буфера. Распрацоўка Sudo-rs вядзецца інжынерамі з Ferrous Systems і Tweede Golf на сродкі, прадстаўленыя такімі кампаніямі, як Google, Cisco, Amazon Web Services.

Бяспечная праца з памяццю забяспечваецца ў Rust падчас кампіляцыі праз праверку спасылак, адсочванне валодання аб'ектамі і ўлік часу жыцця аб'ектаў (вобласці бачнасці), а таксама праз адзнаку карэктнасці доступу да памяці падчас выканання кода. Rust таксама дае сродкі для абароны ад цэлалікіх перапаўненняў, патрабуе абавязковай ініцыялізацыі значэнняў зменных перад выкарыстаннем, лепш апрацоўвае памылкі ў стандартнай бібліятэцы, ужывае канцэпцыю нязменнасці (immutable) спасылак і зменных па змаўчанні, прапануе моцную статычную тыпізацыю для мінімізацыі лагічных памылак.

Крыніца: opennet.ru

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