Ze ontdekten een kwetsbaarheid in firejail die root-toegang tot het systeem toestond

Ze hebben onlangs het nieuws vrijgegeven dat: er is een kwetsbaarheid geïdentificeerd (reeds vermeld onder CVE-2022-31214) in de sandbox-tool van de Firejail-app, wordt gedetailleerd beschreven dat de gedetecteerde fout een lokale gebruiker in staat zou kunnen stellen root te worden op het hostsysteem.

Firejail gebruikt het naamruimtemechanisme, AppArmor, en systeemaanroepfiltering (seccomp-bpf) in Linux voor isolatie, maar vereist verhoogde bevoegdheden om een ​​geïsoleerde release te configureren, die het verkrijgt door te binden aan het suid rootvlag-hulpprogramma of uit te voeren met sudo.

De kwetsbaarheid is te wijten aan een fout in de logica van de optie “–join=" », ontworpen om verbinding te maken met een geïsoleerde omgeving die al actief is (vergelijkbaar met de login-opdracht voor een sandbox-omgeving) met de omgeving gedefinieerd door de ID van het proces dat erin wordt uitgevoerd. In de pre-lanceringsfase detecteert firejail de privileges van het gespecificeerde proces en past deze toe op het nieuwe proces dat zich bij de omgeving voegt met de optie “–join”.

Voordat u verbinding maakt, controleert of het opgegeven proces wordt uitgevoerd in de firejail-omgeving. Deze controle evalueert het bestaan ​​van het bestand /run/firejail/mnt/join. Om de kwetsbaarheid te misbruiken, een aanvaller kan een fictieve niet-geïsoleerde firejail-omgeving simuleren met behulp van de mount-naamruimte en er vervolgens verbinding mee te maken met de optie "–join".

Als de configuratie de modus voor het verbieden van het verkrijgen van extra privileges in nieuwe processen (prctl NO_NEW_PRIVS) niet inschakelt, zal firejail de gebruiker verbinden met een fictieve omgeving en proberen de gebruikersnaamruimteconfiguratie van gebruikers-ID's (naamruimtegebruiker) van het init-proces toe te passen ( PID 1).

De meeste logica achter de join-functie zit in de broncode uit het bestand `src/firejail/join.c`. Kritieke delen van de code worden uitgevoerd met verhoogde privileges (effectieve UID 0). De ID van het proces doorgegeven als een commando het regelargument wordt gecontroleerd om te bepalen of het een r . iscontainer en bepaal enkele van zijn eigenschappen die: Dit geldt ook voor het nieuwe invoerproces.

De belangrijkste criteria om te beslissen of u deelneemt aan het doelproces slaagt is de aanwezigheid van een bestand in de mount-naamruimte van het doel, proces gevonden in /run/firejail/mnt/join. Deze verificatie gebeurt op de f`is_ready_for_join()` functie. Het bestand wordt geopend met lDe `O_RDONLY|O_CLOEXEC`-vlaggen en het resultaat `fstat()` moeten voldoen aan de volgende eisen:

– het bestand moet een normaal bestand zijn.
– het bestand moet eigendom zijn van userid 0 (gezien vanaf de eerste gebruiker)
naamruimte).
– het bestand moet 1 byte groot zijn.

Als gevolg hiervan het proces verbonden via "firejail --join" zal eindigen in de naamruimte originele gebruikers-ID van de gebruiker met ongewijzigde privileges, maar in een andere mountpoint-ruimte, volledig gecontroleerd door de aanvaller.

De resulterende "samengevoegde" shell zal nu leven op de eerste gebruiker
namespace, maar met behoud van de oorspronkelijke normale gebruikersrechten de mount-naamruimte wordt beheerd door de aanvaller. Net zo
de configuratie van nonewprivs niet is toegepast, kan de aanvaller nu
voer setuid-root-programma's uit binnen deze mount-naamruimte

Een aanvaller kan met name setuid-root-programma's uitvoeren in de ruimte van het aankoppelpunt dat hij heeft gemaakt, waardoor hij bijvoorbeeld de /etc/sudoers-configuratie of PAM-parameters in de bestandshiërarchie kan wijzigen en de mogelijkheid krijgt om opdrachten als root uit te voeren met behulp van sudo of zijn hulpprogramma's.

Ten slotte is het vermeldenswaard dat er een functionele exploit is ontwikkeld, getest op huidige versies van openSUSE, Debian, Arch, Gentoo en Fedora met het firejail-hulpprogramma geïnstalleerd.

Het probleem is opgelost in firejail-versie 0.9.70. Als beveiligingsoplossing kunt u de configuratie (/etc/firejail/firejail.config) instellen op "no join" en "force-nonewprivs yes".

Eindelijk als u er meer over wilt wetenkunt u de details in het volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.