Sårbarheter i networkd-dispatcher som tillåter root-åtkomst

Säkerhetsforskare från Microsoft har identifierat två sårbarheter (CVE-2022-29799, CVE-2022-29800) i networkd-dispatcher-tjänsten, kodnamnet Nimbuspwn, som tillåter en oprivilegierad användare att utföra godtyckliga kommandon med root-behörighet. Problemet är åtgärdat i versionen av networkd-dispatcher 2.2. Det finns ingen information om publicering av uppdateringar efter distributioner ännu (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher används i många Linux-distributioner, inklusive Ubuntu, som använder bakgrundsprocessen systemd-networkd för att konfigurera nätverksparametrar, och utför funktioner liknande NetworkManager-dispatcher, d.v.s. är engagerad i att starta skript när tillståndet för en nätverksanslutning ändras, till exempel används det för att starta ett VPN efter att huvudnätverksanslutningen har upprättats.

Bakgrundsprocessen associerad med networkd-dispatcher körs som root och tar emot händelsesignaler via D-bussen. Information om händelser relaterade till förändringar i tillståndet för nätverksanslutningar skickas av systemd-networkd-tjänsten. Problemet är att oprivilegierade användare kan generera en icke-existerande tillståndshändelse och trigga deras skript att köras som root.

Systemd-networkd är utformat för att endast köra systemhanterarskript som finns i katalogen /etc/networkd-dispatcher och inte tillgängliga för användarersättning, men på grund av en sårbarhet (CVE-2022-29799) i filsökvägens bearbetningskod, fanns det en möjlighet till en out-of-bounds baskatalog och lansering av godtyckliga skript. I synnerhet när filsökvägen till skriptet bildades användes OperationalState- och AdministrativeState-värdena som överfördes via D-Bus, där specialtecken inte raderades. Angriparen kunde generera sitt eget tillstånd, vars namn innehöll tecknen "../" och omdirigera nätverksdispatcher-anropet till en annan katalog.

Den andra sårbarheten (CVE-2022-29800) är relaterad till ett rastillstånd - mellan att kontrollera skriptparametrarna (som tillhör root) och att köra det, var det en kort tidsperiod, tillräckligt för att ersätta filen och kringgå kontrollen om skriptet tillhör root-användaren. Dessutom kontrollerade networkd-dispatcher inte för symboliska länkar, inklusive när man kör skript genom underprocessen.Popen-anrop, vilket avsevärt förenklade organisationen av attacken.

Driftteknik:

  • En katalog "/tmp/nimbuspwn" och en symbolisk länk "/tmp/nimbuspwn/poc.d" skapas som pekar på katalogen "/sbin", som används för att söka efter körbara filer som ägs av root.
  • För körbara filer från "/sbin" skapas filer med samma namn i katalogen "/tmp/nimbuspwn", till exempel för filen "/sbin/vgs" är en körbar fil "/tmp/nimbuspwn/vgs" skapad, ägd av en oprivilegierad användare, i vilken koden som angriparen vill köra placeras i.
  • En signal skickas via D-Bus till nätverksdispatcherprocessen som indikerar värdet "../../../tmp/nimbuspwn/poc" i OperationalState. För att skicka en signal i namnutrymmet "org.freedesktop.network1" användes möjligheten att koppla sina hanterare till systemd-networkd, till exempel genom manipulationer med gpgv eller epmd, eller så kan man dra fördel av att systemd-networkd körs inte som standard (till exempel på Linux Mint).
  • Efter att ha tagit emot signalen bygger Networkd-dispatcher en lista över körbara filer som ägs av rotanvändaren och som är tillgängliga i katalogen "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d", som faktiskt länkar till "/sbin".
  • I det ögonblick när listan över filer tas emot, men skriptet ännu inte har lanserats, omdirigeras den symboliska länken från "/tmp/nimbuspwn/poc.d" till "/tmp/nimbuspwn" och networkd-dispatcher kommer att starta skript som är värd för angriparen med root-rättigheter.

Sårbarheter i networkd-dispatcher som tillåter root-åtkomst


Källa: opennet.ru

Lägg en kommentar