Nalezena chyba zabezpečení v subsystému tty jádra Linuxu

Výzkumníci z týmu Google Project Zero zveřejnili nedávno prostřednictvím příspěvku na blogu nový způsob využívání zranitelností (CVE-2020-29661) při implementaci obslužné rutiny ioctl TIOCSPGRP Linuxový kernel tty subsystéma také podrobné ochranné mechanismy, které by mohly tyto zranitelnosti blokovat.

V příspěvku je uvedeno, že problém je způsoben chybou v nastavení zámku, což vedlo k race condition v kódu /tty/tty_jobctrl.c, který byl použit k vytvoření podmínek pro přístup k paměti po spuštění (use-after-free), zneužité uživatelským prostorem prostřednictvím manipulace s ioct- voláním TIOCSPGRP.

Kromě zveřejněných informací také bylo provedeno funkční exploit demo pro eskalaci privilegií v Debian 10 s jádrem 4.19.0-13-amd64 a což také nevylučuje, že to může ovlivnit různé distribuce, mezi nimiž jsou samozřejmě ty založené a odvozené od Debianu.

Mnoho jednotlivých technik využití a možností zmírnění, které zde popisuji, není nových. Myslím si však, že stojí za to sepsat je dohromady, aby se ukázalo, jak se různá zmírnění vzájemně ovlivňují s docela normálním exploitem bez použití.

Fragmenty kódu v tomto příspěvku na blogu, které jsou relevantní pro exploit, jsou převzaty z předchozí verze 4.19.160, protože na tom je založeno cílové jádro Debianu; některé další úryvky kódu jsou z hlavní řady Linuxu.

Zároveň v publikovaném článku důraz není ani tak kladen na techniku ​​vytvoření funkčního exploitu, ale na jaké nástroje tam jsou v jádře chránit se proti takovým zranitelnostem.

Závěr je zklamáním, jak je zmíněno, že metody jako segmentace paměti v haldě a řízení přístupu k paměti po jejím uvolnění se v praxi nepoužívají, protože vedou ke snížení výkonu a ochraně založené na CFI (Control Flow Integrity), která blokuje exploity v pozdějších verzích. fáze útoku, vyžaduje zlepšení.

Speciálním typem koncového zařízení jsou pseudoterminály, které se používají, když například otevíráte terminálovou aplikaci v grafickém prostředí nebo se připojujete ke vzdálenému stroji přes SSH. Zatímco ostatní koncová zařízení jsou připojena k nějakému druhu hardwaru, oba konce pseudoterminálu jsou řízeny uživatelským prostorem a pseudoterminály lze volně vytvářet uživatelským prostorem (bez oprávnění).

Kdykoli je otevřen / dev / ptmx (zkratka pro "pseudo-terminální multiplexer"), výsledný deskriptor souboru představuje stranu zařízení (v dokumentaci a zdrojích jádra označovanou jako "hlavní pseudoterminál") zařízení. new pseudo -terminál.

 Odpovídající terminálové zařízení (ke kterému se shell normálně připojuje) je automaticky vytvořeno jádrem v / dev / pts / .

Když se podíváme na to, co by mohlo z dlouhodobého hlediska změnit, důraz je kladen na používání pokročilých statických analyzátorů nebo používání paměťově bezpečných jazyků, jako jsou dialekty Rust a C s rozšířenými anotacemi (jako osvědčené C) k vytváření kontrolorů stavu, zámků, objekty a ukazatele. Metody ochrany také zmiňují povolení režimu panic_on_oops, čímž se struktury jádra stanou pouze pro čtení a omezí přístup k systémovým voláním prostřednictvím mechanismů, jako je seccomp.

Chyba způsobující problém bylo to opraveno v linuxovém jádře 3. prosince loňského roku. Problém se projevuje v jádrech před verzí 5.9.13, ale většina distribucí opravila problém v aktualizacích balíčku jádra, které byly nabízeny minulý rok.

Je také zmíněna podobná zranitelnost (CVE-2020-29660), která byla nalezena současně při implementaci volání TIOCGSID ioctl, ale byla také všude odstraněna.

Konečně Máte-li zájem o tom vědět více, můžete zkontrolovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.