Používám počítač Ubuntu Linux. Když spouštím aplikace napsané různými dodavateli, jako je Chrome a Firefox, všiml jsem si, že všechny běží s mým uid. Ale pokud tomu tak je, každý soubor, který vytvoří v systému souborů, bude mít také stejné uid. Jak potom v linuxu mohou dvě vzájemně nedůvěryhodné aplikace udržovat své soubory před sebou v bezpečí?
- používání zásad ACL aplikací A může stále umožnit aplikaci B číst soubory A – prostřednictvím uživatelské části (uživatel, skupina, jiná)
- Musí aplikace používat šifrování, aby vzájemně chránily svá data?
Přijatá odpověď:
Doslovná odpověď zní, že pod vaším účtem neběží žádná nedůvěryhodná aplikace. Pokud chcete spustit nedůvěryhodnou aplikaci, spusťte ji pod jiným účtem nebo na virtuálním počítači.
Typické operační systémy pro stolní počítače, jako je Unix a Windows, a typické mobilní operační systémy, jako je Android a iOS, mají různé modely zabezpečení. Unix je víceuživatelský operační systém se vzájemně nedůvěryhodnými uživateli. Aplikace jsou považovány za důvěryhodné:všechny aplikace uživatele běží ve stejném kontextu zabezpečení. Služby , na druhou stranu jsou poněkud méně důvěryhodné:jsou obvykle spouštěny pod vyhrazeným účtem, aby se snížil dopad v případě bezpečnostní chyby.
Existují dva hlavní důvody, proč unixový bezpečnostní model funguje tímto způsobem:
- Negativním důvodem je historie:když byl navržen Unix, aplikace pocházely od malé skupiny programátorů a byly podporovány pověstí dodavatele nebo byly poskytovány jako zdrojový kód nebo obojí. Zadních vrátek se v aplikacích báli jen zřídka. Navíc málo aplikací komunikovalo přes síť, takže bylo relativně málo příležitostí ke spuštění a zneužití zranitelnosti. Neexistovala proto žádná silná motivace izolovat aplikace od sebe.
- Pozitivním důvodem je funkčnost:izolace aplikací spoustu věcí znemožňuje. Pokud má každá aplikace svou vlastní datovou oblast, sdílení dat mezi aplikacemi je obtížné. Na typickém unixovém systému je velmi běžné, že stejná data zpracovává více aplikací. To platí zejména proto, že Unix nemá žádné jasné oddělení mezi „aplikacemi“ a „operačním systémem“. Webový prohlížeč je aplikace. Nemožnost stáhnout soubor do vámi zvoleného adresáře, protože prohlížeč je omezen na svůj vlastní adresář, je otravná. Program, který zobrazuje nabídky a ikony při přihlášení, je také aplikací na stejné úrovni. Stejně tak správci souborů, kteří ze své podstaty potřebují přístup ke všem vašim souborům. Stejně tak shelly a další interpreti, kteří provádějí skripty všude. Když tisknete dokument z textového procesoru, může to zahrnovat aplikaci pro převod dokumentu do formátu pro tisk a jinou aplikaci pro odeslání dat do tiskárny.
Ačkoli je nyní autorů aplikací mnohem více než před 40 lety, aplikace jsou stále obvykle distribuovány prostřednictvím důvěryhodných kanálů, které nesou označení reputace. (To platí výrazně více pro Linux než pro Windows, což je jeden z důvodů, proč jsou viry častější pod Windows.) Pokud se zjistí, že aplikace má zadní vrátka, byla by okamžitě stažena z linuxových softwarových repozitářů.
Související:Debian – změnit velikost kořenového oddílu bez odinstalace a přeinstalace Linuxu (nebo ztráty dat)?Mobilní operační systémy byly navrženy s ohledem na různé hrozby. Byly navrženy pro systémy pro jednoho uživatele, ale s aplikacemi pocházejícími ze zcela nedůvěryhodných zdrojů.
Izolace aplikací si začíná pronikat do desktopových unixových systémů. Některé distribuce provozují určité programy v rámci bezpečnostních rámců, jako je AppArmor nebo SELinux, které omezují, co aplikace může dělat. Cena těchto bezpečnostních omezení spočívá v tom, že někdy znemožňují žádoucí použití, například brání omezené aplikaci v otevírání souborů v určitých adresářích.
Šifrování by bylo úplně zbytečné. Šifrování chrání pouze data při přenosu (přes síť) nebo v klidu (uloženo na disku), nechrání data na živém systému – pokud subsystém A dešifruje svá data, pak je na OS, aby zabránil subsystému B v přístupu k dešifrovaným datům, a proto nezáleží na tom, zda data byla dešifrována A nebo uložena nešifrovaná. Operační systém může šifrovat data, ale pouze za účelem jejich ochrany v případě odcizení paměťového média.
Pokud chcete spouštět kód, kterému nedůvěřujete, nejlepší věc, kterou můžete udělat, je spustit jej na virtuálním počítači. Poskytněte virtuálnímu počítači přístup pouze k souborům, které aplikace potřebuje (např. nesdílejte svůj domovský adresář).