Een ernstige kwetsbaarheid voor geheugenbeschadiging in polkit’s pkexec (voorheen PolicyKit) is eindelijk ontdekt na 12+ jaar. Dit programma is te vinden in vrijwel alle moderne Linux-distributies.

Als het niet het een is, is het wel het ander. Nadat een echt Linux-probleem —  de heap-overflow-bug in het fs/fs_context.c-programma van de Linux-kernel  — is gevonden en verholpen, wordt een nieuw beveiligingsprobleem ontdekt. Dit keer heeft beveiligingsbedrijf Qualys een werkelijk gevaarlijke kwetsbaarheid voor geheugencorruptie ontdekt in pkexec van polkit , CVE-2021-4034 .

Polkit, voorheen bekend als PolicyKit, is een systemd SUID-rootprogramma. Het is standaard geïnstalleerd in elke grote Linux-distributie.

Deze kwetsbaarheid is gemakkelijk te misbruiken. En daarmee kan elke gewone gebruiker volledige rootrechten krijgen op een kwetsbare computer door deze kwetsbaarheid in de standaardconfiguratie te misbruiken. Zoals Qualys in zijn korte beschrijving van het probleem schreef: “Deze kwetsbaarheid is de droom van een aanvaller die uitkomt.”

Waarom dit zo erg is:

  • Pkexec is standaard geïnstalleerd op alle grote Linux-distributies.
  • Qualys heeft Ubuntu, Debian, Fedora en CentOS uitgebuit in hun tests, en ze zijn er zeker van dat andere distributies ook kunnen worden misbruikt.
  • Pkexec is kwetsbaar sinds de oprichting in mei 2009 (commit c8c3d83, “Add a pkexec(1) command”).
  • Een onbevoegde lokale gebruiker kan misbruik maken van dit beveiligingslek om volledige rootrechten te krijgen.
  • Hoewel dit beveiligingslek technisch gezien een geheugenbeschadiging is, kan het direct en betrouwbaar worden misbruikt op een architectuuronafhankelijke manier.
  • En, last but not least, het kan worden misbruikt, zelfs als de polkit-daemon zelf niet actief is.

Het is zo gevaarlijk omdat het programma zelf zo krachtig is; het is een onderdeel voor het beheren van systeembrede privileges in Unix-achtige besturingssystemen. Hoewel we weten dat Linux kan worden aangevallen, kunnen Solaris en andere Unix-systemen ook kwetsbaar zijn. We weten echter dat OpenBSD  niet kan worden aangevallen door exploits die deze kwetsbaarheid gebruiken.

Red Hat beoordeelt de PwnKit met een Common Vulnerability Scoring System (CVSS)-score van 7,8. Dit is eem hoge score.

Bij correct gebruik biedt Polkit een georganiseerde manier voor niet-bevoorrechte processen om te communiceren met bevoorrechte processen. Het is ook mogelijk om polkit te gebruiken om commando’s uit te voeren met verhoogde privileges met behulp van het commando pkexec gevolgd door het commando dat bedoeld is om te worden uitgevoerd met root-permissie.

Met andere woorden, pkexec lijkt op het sudo-commando. Debian-ontwikkelaars beschrijven het inderdaad als “de sudo van systemd.”

Deze kwetsbaarheid, die al meer dan 12 jaar in het zicht verborgen is, is een probleem met de manier waarop pkexec omgevingsvariabelen leest. De korte versie, volgens Qualys, is: “Als ons PATH “PATH=name=.” is, en als de directory “name=.” bestaat en een uitvoerbaar bestand met de naam “value” bevat, dan is een verwijzing naar de string ” name=./value” wordt out-of-bounds naar envp[0] geschreven.”

Hoewel Qualys geen demonstratie-exploit zal uitbrengen, is het bedrijf er zeker van dat het niet lang zal duren voordat de exploits beschikbaar zijn. Eerlijk gezegd is het niet zo moeilijk om een ​​PwnKit-aanval te maken.

Daarom moet u zo snel mogelijk een patch verkrijgen en toepassen bij uw Linux-distributeur. Als er geen patches beschikbaar zijn voor uw besturingssysteem, kunt u de SUID-bit uit pkexec verwijderen als tijdelijke oplossing. Dit door root aangedreven shell-commando stopt bijvoorbeeld aanvallen:

# chmod 0755 /usr/bin/pkexec

Zou je al aangevallen kunnen zijn? Dat is mogelijk. Als er een slordige aanval op je systeem is geweest, kijk dan of er sporen in de logs staan. Meestal is dit ofwel “De waarde voor de SHELL-variabele is niet gevonden in het /etc/shells-bestand” of “De waarde voor de omgevingsvariabele […] bevat verdachte inhoud.”

Maar een geavanceerde aanvaller kan een PwnKit-aanval uitvoeren zonder sporen achter te laten in de logs.

 

Kijk voor meer oplossingen en technische details van de PwnKit-kwetsbaarheid op de blog van Qualys