A Linux 6.11 lehetővé teszi a /proc/[pid]/mem hozzáférés szigorítását a jobb biztonság érdekében

A Microsoftnál dolgozó Christian Brauner Linux mérnök elküldte különféle pull kéréseit az általa felügyelt kernelterületekre a Linux 6.11 összevonási ablak előtt. Az egyik legérdekesebb pull kérése Brauner részéről ebben a ciklusban a „vfs procfs” frissítések, amelyek most lehetővé teszik a folyamatok /proc/[pid]/mem fájljaihoz való hozzáférés korlátozását.

A Linux 6.11 lehetővé teszi a /proc/[pid]/mem hozzáférés szigorítását a jobb biztonság érdekében

Az új SECURITY_PROC_MEM_RESTRICT_WRITES Kconfig opció lehetővé teszi a mem fájlok írásának korlátozását a folyamatok esetében, hacsak az aktuális folyamat nem végez ptrace műveletet az adott feladathoz.

Brauner a Collabora-nál dolgozó Adrian Ratiu javításaival együtt a pull kérésben magyarázza:

„Ez a munka tartalmazza a /proc//mem hozzáférés korlátozását. Az évek során különféle exploitok kezdték kihasználni a /proc//mem-et (lásd [1] és [2]). Különösen érdekes a [2], mivel egy tetszőleges terhelést telepített a noexec tárolóból egy futó folyamatba, majd végrehajtotta azt. Az a terhelés egy ELF betöltőt tartalmazott, hogy tetszőleges kódot futtasson a noexec tárolóról.
A legnagyobb probléma, hogy a /proc//mem figyelmen kívül hagyja az oldalak engedélyeit a FOLL_FORCE használatával, amelyet többször is megvitattak a listán és azon kívül.
Sajnos különféle használati esetek vannak a /proc//mem használatára, így lehetetlen egyszerűen kikapcsolni. Ezek legalább tartalmazzák a PTRACE_POKEDATA-t és a seccomp notifikátort, amelyet rendszerhívások emulálására használnak.
Tehát adjunk a felhasználói térnek egy módot a /proc//mem hozzáférés korlátozására kernel parancssori opciókon keresztül. Az „all” beállítása minden folyamat számára korlátozza a hozzáférést, míg a „ptracer” lehetővé teszi a hozzáférést a ptracerek számára:
(1) A FOLL_FORCE használatának korlátozása a proc_mem.restrict_foll_force segítségével
(2) A /proc//mem olvasásának megnyitásának korlátozása.
(3) A /proc//mem írásának megnyitásának korlátozása.
(4) Írás korlátozása a /proc//mem-re.
A finomhangolt kezelés szintje nem a kedvencem, mivel a disztribúcióknak valamelyest ismerniük kell a FOLL_FORCE és a /proc//mem hozzáférésének általános következményeit. Azok a használati esetek, ahol a /proc//mem hozzáférés szükséges, már eleve alapos ismereteket feltételeznek annak következményeiről. Különösen, amikor a seccomp notifikátorról és a gdb-ről van szó a folyamat állapotának ellenőrzése vagy emulálása kapcsán. Ez végül meggyőzött, hogy elfogadjam ezt. Ha szükségünk van valami egyszerűbbre, nyitott vagyok rá.”

Ez az új biztonsági funkció most Linus Torvalds általi elfogadásra vár, amint a 6.11 verzió összevonási ablaka megnyílik, amely holnap kezdődik, ha a 6.10 verzió kiadásának nincs valami halasztó oka.