V aplikaci Snapd byla zjištěna chyba zabezpečení který je již popsán v (CVE-2019-7304), což umožňuje neprivilegovanému uživateli získat oprávnění správce (root) v systému.
Pro ty, kteří Snapd neznají, můžeme vám říci, že se jedná o sadu nástrojů pro správu samostatných balíčků ve formátu Snap. K otestování zranitelnosti systémů byly zveřejněny dva prototypy exploitu.
- První, který umožňuje útočníkovi vytvořit nového uživatele v systému.
- Druhá možnost umožňuje útočníkovi nainstalovat jakýkoli druh okamžitého balíčku do systému a spustit kód jako root (instalací balíčku v režimu „devmode“ s přílohou ovladače, která je při instalaci balíčku volána s oprávněním root).
Co jsou to za činy?
Exploze vytvořená k využití první naznačené možnosti dříve přeskočit kontroly kontroly přístupu použít omezenou funkci API místní služby snapd.
Toto dotazuje systém na uživatelské jméno a veřejný klíč SSH z poskytnuté e-mailové adresy a poté na základě této hodnoty vytvoří místního uživatele.
Úspěšné využití této verze vyžaduje odchozí připojení k internetu a službu SSH přístupnou přes localhost.
Druhý exploit vytvořen využít druhého zdůrazněného bodu, na rozdíl od předchozího popsaného využití, nevyžaduje spuštění služby SSH.
také bude fungovat na novějších verzích Ubuntu bez připojení k internetu, takže je odolný vůči změnám a efektivní v omezených prostředích.
Toto zneužití Mělo by to být také účinné v systémech jiných než Ubuntu, které mají nainstalovaný snapd, ale nejsou kompatibilní s API kvůli syntaxi prostředí Linuxu.
Některé starší systémy Ubuntu (například verze 16.04) nemusí mít nainstalované snapd komponenty potřebné ke stažení.
Pokud je tomu tak, tato verze zneužití jej může spustit k instalaci těchto závislostí. Během této instalace lze snapd upgradovat na nezranitelnou verzi.
Chcete-li o nich vědět něco více, můžete získat další podrobnosti Na následujícím odkazu.
Z čeho se tato zjištěná chyba skládá?
Zranitelnost je způsobena nedostatek řádných kontrol v modulu snapd při zpracování adresy externího soketu v procesu hodnocení přístupových práv pro unixové sokety.
Při zpracování požadavků na API prostřednictvím soketu Unix, je zkontrolováno UID uživatele přidruženého k připojení a na základě toho je učiněno rozhodnutí o přístupu.
Uživatel může připojit řetězec «; uid = 0; » na název souboru se soketem (například vytvořit soket "/ tmp / sock; uid = 0;") a tento řetězec bude zpracován jako součást adresy soketu klienta.
Při analýze parametrů v snapd identifikátor uživatele je přiřazen cyklickým vyhledáváním pomocí masky "; Uid =" na řádku, který také obsahuje název souboru se soketem (například při vytváření klientského soketu "/ tmp / sock; uid = 0;" tento řádek má formu "pid = 5275; uid" = 1000; socket = / run / snapd.socket; / tmp / sock; uid = 0; «).
Proto, pokud existuje řetěz "; Uid = 0;" v názvu soketu bude identifikátor přiřazen z něj, a nikoli z běžného parametru se skutečným UID.
Místní útočník může pomocí této chyby získat přístup k soketu /run/snapd.socket k snapd privilegovanému API a získat oprávnění správce (předchozí chyby zabezpečení používají API v2 / create-user a / v2 / snaps).
Jaké verze to ovlivňuje a řešení již existuje?
Problém se projevuje ve verzích snapd od 2.28 do 2.37 a ovlivňuje všechny podporované větve Ubuntu (od 14.04 do 18.10) a také v distribucích odvozených od kterékoli z uvedených verzí.
Problém ovlivňuje také distribuce Fedory a Debian, ve kterém je snapd nabízen z běžných úložišť.
Chyba zabezpečení byla opravena ve verzi snapd 2.37.1, stejně jako aktualizace balíčků pro distribuce Ubuntu a Debian.