Lennart Poettering bemutatja a run0-t a systemd v256-ban, mely egy friss megközelítés a biztonságos jogosultságnöveléshez, amely a hagyományos SUID binárisok fokozatos kiváltását célozza.
A sudo parancs széles körben elismert alapvető eszközként szolgál mindennapi Linux műveleteinkben annyira, hogy gyakran már szinte természetesnek vesszük a jelenlétét. De mi lenne, ha azt mondanám, hogy napjai meg vannak számlálva, és a systemd új verziói kezdetét jelenthetik a naplementének?
Legfrissebb bejegyzésében Lennart Poettering, a systemd mögött álló zseni megosztja kritikáját és erős alternatíváját a hosszú ideje létező sudo parancsnak.
Arra hivatkozik, hogy a sudo alapvető problémája abban rejlik, hogy SUID tulajdonsággal rendelkezik, ami lehetővé teszi egy folyamat számára a felhatalmazásokkal történő végrehajtását, részben a nem privilégizált kóddal történő részleges irányítás mellett, aprólékos manuális takarításra kényszerítve, mely egy recept a potenciális biztonsági incidensekre.
„Személy szerint úgy gondolom, hogy a legnagyobb probléma a sudoval az, hogy ez egy SUID bináris. Az óriási támadási felület, a bővítmények, a hálózati hozzáférés és minden más, ami utána jön, csak súlyosbítja a fő problémát…”
Ezen felismerés fényében, a biztonságosabb rendszerépítés iránti víziója teljesen kizárja a SUID binárisokat, és olyan architektúrát támogat, ahol a privilégizált kód függetlenül működik a nem privilégizált beavatkozástól.
Folytatja gondolatmenetét Poettering:
„Tehát, az én ideális világomban egyáltalán nem lenne SUID a rendszeren. Dobáljuk ki a SUID koncepcióját a UNIX rossz ötleteinek szeméttelepére. Egy végrehajtási kontextus a privilégizált kód számára, amely félig az ellenőrzése alatt áll a nem privilégizált kódtól, és amelynek gondos, manuális takarításra van szüksége, egyszerűen nem ez a módja, ahogyan a biztonságtervezést 2024-ben végezni kellene.”
Ezután jön a run0, a systemd legújabb innovációja, amely a v256-os verzióban lesz elérhető. Ez nem csak egy új eszköz, hanem egy újragondolt systemd-run, mely elérhető egy szimbolikus linken keresztül, ami szimulálja a sudo-t anélkül, hogy valóban SUID bináris lenne.
Úgy működik, hogy kéri a szolgáltatáskezelőt a parancsok végrehajtására a célfelhasználó UID-jével, létrehoz egy új PTY-t (pszeudoterminal), és adatokat továbbít az eredeti TTY és a PTY között.
Ez a beállítás biztosítja, hogy a parancs izolált környezetben fut, frissen létrehozva a PID 1-től függetlenül, anélkül, hogy bármilyen problémás kontextust örökölne a kliensből.
Ezenkívül a run0 elkerüli a hagyományos konfigurációs bonyodalmakat a polkit használatával az engedélyezéshez, egyszerűsítve a felhasználói interakciókat, és tovább biztosítva a végrehajtási folyamatot.
Az eszköz egy felhasználóbarát funkciót is bevezet: amikor emelt jogosultságokkal működik, megváltoztatja a terminál háttérszínét vöröses árnyalatra, egyfajta vizuális jelzésként az emelt státuszról – mely egy egyszerű mégis hatékony emlékeztető arra, hogy felelősségteljesen kell kezelni a jogosultságokat.
Összefoglalva, egy dolog biztos – ez további vitákat fog kiváltani a Linux közösségben. Egy másik biztos dolog az, hogy a systemd v256 jelenleg 88%-ban kész, és már csak kevés van hátra a végleges stabil kiadásig.