Pravidelně aktualizuji svůj systém, kdykoli mě upozorní na aktualizace softwaru. To je jedna z věcí, kterým prostě věřím, že budou fungovat, aniž bych znal podrobnosti, ale nedávno jsem se začal zajímat:Jak to mám vědět?
- proces kontroly aktualizací zobrazí pouze legitimní aktualizace?
- aktualizace, které obdržím a nainstaluji, nejsou škodlivé?
Vím, že mám sadu softwarových zdrojů, které si sám specifikuji pomocí URL, a že jestli těmto zdrojům důvěřuji, je moje rozhodnutí. Co se ale stane, jakmile tyto adresy URL určím?
Z toho, co je dnes běžné, bych měl podezření, že pravost těchto zdrojů je ověřena něčím ve stylu HTTPS / SSL, tj. E. Mám nějaké certifikáty, které jsou ověřeny vůči nějaké autoritě, to znamená, že potřebuji někde nainstalovat spolehlivé kořenové certifikáty (pravděpodobně jsou součástí systému).
Dále předpokládám, že balíčky jsou kryptograficky podepsané, jako u GPG nebo podobně.
Jsou tyto předpoklady správné? Kde mohu zkontrolovat použité klíče/certifikáty? Jak mohu ověřit, zda jsou ty správné? Jak mohu ověřit, že jsou skutečně používány? Existují možnosti konfigurace, které činí proces více či méně obezřetným, a jaké jsou jejich výchozí hodnoty? Jsou známy útoky nebo se v poslední době vyskytly zranitelnosti? Zdá se, že si pamatuji, že systém Windows měl nedávno podobný problém.
Jsem na 12.04, ale předpokládám, že na to lze odpovědět obecněji.
Přijatá odpověď:
To je skvělá otázka. Odpověď je (samozřejmě) poměrně složitá, ale dovolte mi ji pro vás rozebrat. Nejprve se podívejme na technické procesy:
Řetěz důvěry
K zabezpečení APT nepoužíváme SSL, používáme kryptografické hashe (dnes SHA256) a podpisy OpenPGP. To vám umožní důvěřovat nedůvěryhodným zrcadlům a vyhnout se nutnosti důvěřovat CA PKI.
Když přidáte úložiště do sources.list
APT , musíte také přidat jeho klíč PGP do důvěryhodného svazku klíčů APT pomocí apt-key
příkaz. Klíčenka je dodávána s klíči pro úložiště Ubuntu. A když použijete apt-add-repository
pro přidání PPA, přidá klíč (získaný z Launchpadu přes SSL) za vás.
Řetězec důvěry je:
- Každý
sources.list
vstupní body APT doRelease
soubor v úložišti sRelease.gpg
podpis (nebo je lze zkombinovat jakoInRelease
soubor). Tento soubor popisuje úložiště a musí být podepsán klíčem v klíčence vašeho APT. Release
soubor obsahuje kryptografické hashe všechPackages
aSources
soubory. Zde jsou uvedeny všechny balíčky a verze dostupné v úložišti.Packages
aSources
soubory obsahují kryptografické hash každého balíčku.- Samotné balíčky nejsou podepsané. Je to zbytečné, existuje k nim řetězec důvěry ze souboru Release, podepsaného zrcadlem. Zdrojové balíčky používané k sestavení binárních balíčků jsou však podepsané PGP vývojářem, který je nahrál.
Více o formátu úložiště si můžete přečíst na wiki Debianu.
Tento řetězec znamená, že nemusíme důvěřovat žádným zprostředkujícím zrcadlům, můžeme se spolehnout, že balíček, který nainstalujeme, je identický s tím, který byl přítomný při podpisu souboru Release.
Klíčenku APT můžete zkontrolovat spuštěním sudo apt-key finger
.
Ověření klíčů archivu Ubuntu
Jak víte, co by tam mělo být? Pokud nedůvěřujete svému počítači, nemůžete věřit žádnému programu na něm, že by vám nelhal (například apt-key
), a toto cvičení je marné. Předpokládejme tedy, že je to jen z akademického zájmu, a ověřte obsah svazku klíčů z definitivního zdrojového balíčku, který je PGP podepsaný vývojářem, který jej nahrál.
Stáhněte si ubuntu-keyring
zdrojový balíček a podívejte se, co by tam mělo být:
$ apt-get source ubuntu-keyring
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 20.0 kB of source archives.
Get:1 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (dsc) [1542 B]
Get:2 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (tar) [18.5 kB]
Fetched 20.0 kB in 0s (0 B/s)
dpkg-source: info: extracting ubuntu-keyring in ubuntu-keyring-2012.05.19
dpkg-source: info: unpacking ubuntu-keyring_2012.05.19.tar.gz
$ gpg --verify ubuntu-keyring_2012.05.19.dsc
gpg: Signature made Sat May 19 03:33:12 2012 SAST
gpg: using RSA key 0x393587D97D86500B
gpg: Good signature from "Colin Watson <[email protected]>"
gpg: aka "Colin Watson <[email protected]>"
gpg: aka "Colin Watson <[email protected]>"
gpg: aka "Colin Watson <[email protected]>"
$ gpg --no-default-keyring --keyring ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg --fingerprint
ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg
-------------------------------------------------------------
pub 1024D/0x40976EAF437D05B5 2004-09-12
Key fingerprint = 6302 39CC 130E 1A7F D81A 27B1 4097 6EAF 437D 05B5
uid Ubuntu Archive Automatic Signing Key <[email protected]>
sub 2048g/0x251BEFF479164387 2004-09-12
pub 1024D/0x46181433FBB75451 2004-12-30
Key fingerprint = C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451
uid Ubuntu CD Image Automatic Signing Key <[email protected]>
pub 4096R/0x3B4FE6ACC0B21F32 2012-05-11
Key fingerprint = 790B C727 7767 219C 42C8 6F93 3B4F E6AC C0B2 1F32
uid Ubuntu Archive Automatic Signing Key (2012) <[email protected]>
pub 4096R/0xD94AA3F0EFE21092 2012-05-11
Key fingerprint = 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
uid Ubuntu CD Image Automatic Signing Key (2012) <[email protected]>
Vím, že je to ve skutečnosti podpis Colina Watsona, protože jsem se s ním několikrát setkal a vzájemně jsme si ověřili totožnost a podepsali si klíče. Pokud máte klíč v silné sadě PGP, měli byste být schopni k němu najít cestu důvěry. Také vím, že mu mohu věřit, že nahraje správný ubuntu-keyring
balíček.
Pro Debian existuje balíček (debian-keyring
) obsahující klíče PGP všech vývojářů Debianu a můžete jej použít k ověření podpisů zdrojových balíčků. Ubuntu nemá ekvivalent, ale mnoho vývojářů Ubuntu je také vývojáři Debianu a všechny klíče PGP našich vývojářů jsou k dispozici na jejich profilech v Launchpadu.
Další otázky
Jak poznám, že aktualizace nejsou škodlivé?
Jde o důvěru. Musíte plně důvěřovat každému repozitáři, který používáte. Dáváte správcům každého úložiště oprávnění spouštět věci jako root na vašem počítači.
Balíčky Ubuntu mohou nahrávat pouze vývojáři Ubuntu, kterým byla udělena práva k nahrávání od vývojářské členské rady (ve které momentálně působím). Chcete-li požádat o práva na nahrávání, musíte být zastánci několika stávajících vývojářů Ubuntu, kteří s vámi spolupracovali a důvěřují vašim schopnostem pracovat sami. Bez práv k nahrávání musí být nahrávání sponzorováno vývojáři, kteří mají práva (což by mělo zahrnovat kontrolu nahrávání).
Pro aktualizace po vydání má Ubuntu přísné zásady týkající se obsahu aktualizací. Měly by obsahovat pouze minimum záplat pro opravu známých chyb. Opravy jsou před přijetím kontrolovány členy týmů SRU / Security.
Je zřejmé, že PPA a úložiště třetích stran nemají všechna tato omezení. Musíte důvěřovat vlastníkům PPA, že jsou rozumní.
Všechny balíčky Ubuntu a PPA mají k dispozici zdroj, takže si je může kdokoli prohlédnout.
Existují možnosti konfigurace, které činí proces více či méně obezřetným, a jaké jsou jejich výchozí hodnoty?
Ověřování podpisu můžete v APT vypnout, ale ve výchozím nastavení je samozřejmě zapnuté. Když se pokusíte nainstalovat něco z nepodepsaného / nedůvěryhodného úložiště, apt vás přinutí potvrdit, že to opravdu chcete udělat.
Existují známé útoky nebo se v poslední době vyskytla zranitelná místa?
Vzpomínám si na jednu, chybu Debianu 499897. Debian to obejde tak, že souborům Release udělí datum vypršení platnosti, po kterém už jim nelze věřit. Ubuntu to zatím nepodporuje.
Související:Jak vyhledat název aktuálního pracovního prostoru?