Sebezhetőségek az AppArmorban, amelyek root hozzáférést biztosíthatnak a rendszerben.

A Qualys felderítette az AppArmor kötelező hozzáférés-ellenőrzési rendszerében található 9 sebezhetőséget, amelyek közül a legveszélyesebbek lehetővé teszik, hogy egy helyi, nem privilegizált felhasználó root jogokat szerezzen a rendszerben, elhagyja az izolált konténereket és megkerülje az AppArmor által megadott korlátozásokat. A sebezhetőségek kódneve CrackArmor. A CVE-azonosítók még nem lettek kiosztva. Sikeres privilegizálási példák mutatkoztak be az Ubuntu 24.04 és a Debian 13 rendszereken.

A problémák az AppArmor LSM-moduljában találhatók a 2017-ben kiadott Linux 4.11 kernel óta, és megjelennek az AppArmor-t használó disztribúciókban, mint például az Ubuntu, a Debian, az openSUSE és a SUSE (az openSUSE/SUSE 16-tól kezdve alapértelmezés szerint a SELinux van engedélyezve, de az AppArmor opcióként megmaradt). A sebezhetőségeket javító javításokat átadták a Linux kernel fejlesztőinek, és a következő napokban az 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 és 5.10.253 frissítések részeként felajánlják a felhasználóknak. A javítást a mai napon megjelent kernelcsomag-frissítésekben is megtalálhatók az Ubuntu számára. Ezen kívül az Ubuntu-ban megjelentek a sudo, sudo-ldap és util-linux (amely tartalmazza a su segédprogramot) csomagok frissítései, amelyekben kiküszöbölték a hibákat, amelyek lehetővé tették az AppArmor sebezhetőségének kihasználását. A Debian esetében a frissítés előkészítése folyamatban van.

A problémák az AppArmor-ban található „confused-deputy” általános sebezhetőséggel kapcsolatosak, amely lehetővé teszi a nem privilegizált felhasználók számára, hogy tetszőleges AppArmor profilokat töltsenek be, cseréljenek ki és töröljenek. Ez a sebezhetőség közvetlenül felhasználható a programok és szolgáltatások védelmének letiltására helyi és távoli támadások ellen (például a /sys/kernel/security/apparmor/.load, .replace és .remove pszeudofile-ok írásával, hogy eltávolítsák a cupsd és rsyslogd korlátozásait), szolgáltatásmegtagadási helyzetek előidézésére (tiltó profilok alkalmazásával) és névkörnyezet-korlátozások megkerülésére (új AppArmor „userns” profil betöltésével például a /usr/bin/time-hoz, amely lehetővé teszi a korlátlan user namespace-ek létrehozását).

Az AppArmor profilok cseréjének lehetősége szintén lehetővé teszi a root jogosultságok megszerzését privilegizált segédprogramok, például a su és sudo új profiljaival, amelyek blokkolják a hozzáférést bizonyos rendszerhívásokhoz. Különösen a root jogosultságot lehet megszerezni a setuid (CAP_SETUID) művelet blokkolásával a sudo segédprogram esetében, kombinálva a MAIL_CONFIG környezeti változó manipulálásával a postai beállítások könyvtárának módosításához. a szerver Postfix.

A módszer lényege, hogy ha problémák merülnek fel, a sudo segédprogram e-mailt küld a rendszergazdának, elindítva a /usr/sbin/sendmail-t. A jogosultságok visszavonásának blokkolásával elérhető, hogy ezt a folyamatot root jogosultságokkal futtassák, és a sudo futtatása előtt a MAIL_CONFIG környezeti változó beállításával más konfigurációkat is át lehet adni a sendmail segédprogramnak, például meg lehet adni a saját postdrop kezelőnket, amely az e-mail küldésekor aktiválódik. $ mkdir /tmp/postfix $ cat > /tmp/postfix/main.cf < /tmp/postfix/postdrop <> /tmp/postfix/pwned EOF $ chmod -R 0755 /tmp/postfix $ apparmor_parser -K -o sudo.pf < /sys/kernel/security/apparmor/.replace Jelszó: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Művelet nem engedélyezett sudo: nem tudta megnyitni /etc/sudoers: Művelet nem engedélyezett sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Művelet nem engedélyezett sudo: hiba az audit plugin inicializálásakor: sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)

Más jogosultságnövelési módszerekként említik az AppArmor kódjában található hibákat, amelyek a Linux kernel szintjén működnek. Bemutatják, hogyan lehet root jogosultságokat szerezni olyan sebezhetőségek által, amelyek a free() művelet duplafenntartásához és egy már felszabadított memória területhez való hozzáféréshez (use-after-free) kapcsolódnak az AppArmor profilok betöltésének és cseréjének kódjában. Például az AppArmor egy profilt tárol az aa_loaddata struktúrában, amelyhez a memória a slab-cache kmalloc-192-ben van fenntartva, miközben a versenyhelyzet miatt nem zárható ki a már felszabadított struktúra által elfoglalt memória elérése. Ezt a problémát felhasználhatjuk, hogy ellenőrzést szerezzünk a felszabadított memória felett, és újra kioszthassuk a felszabadított memóriaoldalt a /etc/passwd fájl tartalmának leképezésére, valamint a root jelszóbeli sor felülírására.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster