Záverečná pasáž článku o tom, že ono rozšíření prohlížeče "dokonce" může spouštět na navštívených webech cizí kód a vlastně tedy provádět s danou stránkou cokoliv, je snad na stránkách roota trošku trapné zjištění, ne? Tiše jsem předpokládal, že pro zdejší čtenáře je zřejmé, že kdokoli, kdo je schopen do stránky dostat svůj script (javascript), je schopen s danou stránkou dělat naprosto cokoliv - a rozhodně to nemusí být formou pluginu prohlížeče - typicky dobrovolně vkládané scripty G, FB, ...
Ale já narážel na to, že obecně uživatel musí počítat s tím, že vždy dává v šanc informace, které "sděluje" aplikaci (zde prohlížeči) a všem jejím "rozšířením" - v případě prohlížeče pak ještě i scriptům, které s prohlížečem samotným nesouvisí - typicky externím scriptům vloženým do stránky autorem nebo tzv. bookmarkletem, který je v tomto ohledu spíše rozšířením prohlížeče. A to platí i zde - plugin prostě může se stránkou a mou interakcí s ní udělat, co je mu libo. A jestli onen výkonný kód není přímo v pluginu, ale načítá se z domovské stránky jeho autora, je, myslím, vedlejší.
Zkrátka a dobře, jistá dávka paranoie je při užívání IT přínosná :-)
Za externí skripty vložené do stránky zodpovídá provozovatel stránky, z bezpečnostního hlediska je to pro uživatele úplně stejné, jako interní skripty.
Informace, které sděluje uživatel prohlížeči, nemají být dostupné všem rozšířením, a rozšíření nemohou s libovolnou stránkou dělat, co je libo – pokud to někde jde aniž by to uživatel pluginu povolil, je to vážná bezpečnostní chyba. Například je to pravděpodobně důvod, proč prohlížeče nezveřejňují API pro správu hesel – aby se minimalizovala možnost nějaké bezpečnostní chyby, která způsobí, že prohlížeč heslo vyzradí pluginu. (Externí správci hesel pak tato omezení obcházejí vkládáním JavaScriptu do všech stránek, takže výsledek je z bezpečnostního hlediska i spolehlivosti ještě horší…)
Zda rozšíření stahuje skript z webu také není tak nepodstatné. Skript přímo v rozšíření je možné zkontrolovat, skript stahovaný z webu může být pokaždé jiný. A při stahování skriptu z webu vzniká nový vektor útoku – podstrčit rozšíření falešný skript.
Uživatel nebude studovat zdrojový kód stránky, aby zjistil, že/jestli jsou tam scripty od G, FB, TW a nejrůznějších dalších služeb. Jsem přesvědčený, že žádný provozovatel stránek, který si do nich nacpe kódy zmíněných služeb neví, co všechno ty scripty dělají - jen spoléhá na to, že "tak známé značky" nebudou riskovat pověst a "dělat něco nekalého". Takže běžný uživatel nikdy neví, kdo všechno sleduje, co na webu podniká. A čí je to "zodpovědnost" je v reálu už nejspíš jedno - právě proto, že scripty od mnoha známých služeb cpou do svých stránek asi všichni. Tolik ke scritpům přímo obsaženým ve stránce, ať už je psal autor stránky nebo je nalinkoval odjinud. Pluginy nebo bookmarklety mohou do stránky vložit JS a tedy jsou rovnocenné výše diskutovaným interním scriptům - mohou si na stránce dělat, co se jim zamane. Nemusí tedy nijak řešit interní zacházení s hesly v prohlížeči samotném, vedou si vlastní přehledy.
Uživatel nebude studovat zdrojový kód stránky, aby zjistil, že/jestli jsou tam scripty od G, FB, TW a nejrůznějších dalších služeb.
A nebude studovat ani skripty, které používá přímo provozovatel stránek. Akorát nějak nevím, jak se to týká tématu.
Jsem přesvědčený, že žádný provozovatel stránek, který si do nich nacpe kódy zmíněných služeb neví, co všechno ty scripty dělají - jen spoléhá na to, že "tak známé značky" nebudou riskovat pověst a "dělat něco nekalého".
Byl bych opatrný s používáním slova žádný. A opět, provozovatel stránek, který si nezjistí, co dělají skripty externích služeb, si nezjistí ani to, co dělají interní skripty – skripty redakčního systému, knihovny…
Pluginy nebo bookmarklety mohou do stránky vložit JS
Ne, nemohou. Pokud chcete tvrdit opak, předveďte rozšíření pro Chrome, které má v manifestu uvedená následující oprávnění:
"permissions": [ "notifications", "https://*.seznam.cz/" ]
a které vloží JavaScript na zobrazenou stránku třeba Googlu, PayPalu nebo Centrum.cz.
myslím, že mi nebudete opravdu schopen najít žádného takového uživatele, který si skutečně prověřil, co všechno ony používané scripty dělají - nebo ano?
Pluginy a bookmarklety - nevím jak jsou na tom dnes prohlížeče/pluginy a nemám v úmyslu to zjišťovat a proč zrovna pro Chrome? Vím, že dřív nebyl problém pohnat pluginem JS na danou stránku. Pokud však víte, co je ono druhé zmiňované slovo za tím "pluginy", tedy "bookmarklet", tak víte, že to není nic jiného, než právě javascript (většinou praktický a užitečný - původně uvedený jako cíl odkazu určený pro uložení do bookmarků). Tedy přesně to, o čem se bavíme - script vložený do konkrétní stránky. Typicky taková udělátka nabízí třeba G pro překlad aktuální stránky do jiného jazyka, nabízí je snad všechny zkracovače adres, nabízel jej i FB atd. (příklady: http://jdem.cz/cj9be2)
Znova zopakuji - bookmarklety nic jiného než JS klikem aplikovaný na danou/libovolnou strnku nejsou.
myslím, že mi nebudete opravdu schopen najít žádného takového uživatele, který si skutečně prověřil, co všechno ony používané scripty dělají - nebo ano?
že/jestli jsou tam scripty od G, FB, TW a nejrůznějších dalších služeb
Mezi „zjistit přítomnost skriptu“ a „prověřit, co všechno skript dělá“ je dost podstatný rozdíl, nemyslíte? Mimochodem, neexistence důkazu není důkaz neexistence.
nevím jak jsou na tom dnes prohlížeče/pluginy a nemám v úmyslu to zjišťovat
Takže ty nesmysly, které tady píšete, jsou založené na tom, že nevíte a vědět nehodláte. Jak typické.
proč zrovna pro Chrome?
Protože jsem si Chrome vybral. Pro vyvrácení vašeho tvrzení, že jakýkoli plugin (ve skutečnosti se celou dobu bavíme o rozšíření, WoT je rozšíření, ale chápu, že spousta lidí neví, v čem je rozdíl) v prohlížeči může vložit do libovolné stránky svůj JavaScriptový kód, stačí najít libovolné rozšíření pro některý z běžných prohlížečů, které to udělat nemůže.
Pokud však víte, co je ono druhé zmiňované slovo za tím "pluginy", tedy "bookmarklet"
To, že vy píšete o věcech, o kterých nic nevíte, neznamená, že tak dělají i ostatní. Já jsem o bookmarkletech nepsal. Bavíme se tu o možnostech vkládání skriptu tam, kde by to člověk nečekal – pokud vkládání skriptu někdo nečeká u bookmarkletu, je to jeho neznalost, stejně jako když to nečeká u rozšíření, které má oprávnění manipulovat se stránkou.
Znova zopakuji - bookmarklety nic jiného než JS klikem aplikovaný na danou/libovolnou strnku nejsou.
Ano, když náhodou něco víte, je potřeba to často opakovat. Ještě kdyby se vám podařilo najít téma, se kterým by to souviselo…
Připomínám, že se celou dobu bavíme o vašem tvrzení z komentáře zakládajícího vlákno, které předpokládá, že libovolné rozšíření prohlížeče může manipulovat s obsahem stránky – a tento předpoklad není pravdivý.
Tak pro Jirku, jéčko, Citanus006, Lol Phirae a další – vysvětlení, jak fungují rozšíření v prohlížečích.
Rozšíření prohlížeče je kombinace HTML, CSS a JavaScriptu, zabalená do jednoho balíčku, která nějakým způsobem doplňuje funkcionalitu webového prohlížeče nebo webových stránek. Běží v sandboxu prohlížeče a má přidělená určitá oprávnění (případně může o přidělení oprávnění požádat za běhu. Oprávnění je třeba komunikace s nativní aplikací, posílání notifikací, přístup k historii prohlížeče, načítání dat z internetu – a také možnost manipulace s obsahem stránky (s DOMem). Toto oprávnění umožňuje do stránky vložit svůj skript. Dále oprávnění zahrnují i seznam webů, na kterých může být rozšíření aktivní (může být aktivní i na všech stránkách).
Nebo-li existují rozšíření, která mohou vkládat skript do stránky (a je jich spousta), ale to neznamená, že to mohou dělat všechna rozšíření. Klidně si jako uživatel můžu vybrat a používat jen taková rozšíření, která tohle právo nevyžadují, nebo která ho mají jenom pro některé konkrétní weby. A konkrétně u rozšíření WoT z jeho popisu v článku nevidím důvod, proč by potřebovalo právo pro manipulaci s obsahem stránky. Zda to rozšíření to oprávnění vyžadovalo může zjistit někdo, kdo ho má nainstalované, nebo z manifestu v instalačním balíčku.
Jak ve kterém prohlížeči. Třeba Firefox začínal na rozšířeních v XUL. Tato rozšíření mají plný přístup k privilegovaným funkcím, fakticky se dostávají na úroveň prohlížeče. Jo, Mozilla začala s novým druhém rozšíření, která fungují jinak a možná dokonce musejí na některé věci vyžadovat oprávnění, faktem ale je, že jsem ještě nikdy neviděl, že by se mě Firefox na oprávnění zeptal.
IE na tom může být – až na použitou technologií (asi nebude používat XUL) – podobně.
Problém je v tom, že se obecná tvrzení o rozšíření ve všech prohlížečích snadno vyvracejí. Stejně jak jste správně vyvrátil, že každé rozšíření má ke každé stránce přístup (což sice bude fungovat jen za předpokladu správné funkce sandboxu, ale dejme tomu), lze snadno vyvrátit, že každé rozšíření běží v sandboxu.
V případě Chrome, Firefoxu a Opery běží každé rozšíření v sandboxu, rozdíl je v tom, jakou úroveň oddělení který sandbox poskytuje. Sandbox v Chrome, nové Opeře a nových rozšířeních Firefoxu umožňuje nastavit oprávnění pro jednotlivá API a oprávnění pro manipulaci s DOMem pro jednotlivé servery.
Starší rozšíření pro Firefox založená na XUL myslím oprávnění nemají, ale to neznamená, že tam sandbox není – pořád ta rozšíření nemají přístup ke všem funkcím prohlížeče, pořád nemohou třeba přímo zapisovat na disk, spouštět procesy nebo libovolně komunikovat po síti, mohou využít jenom služeb, které Firefox rozšířením poskytuje (které mohou zahrnovat přístup k souborům, síťovou komunikaci, spouštění procesů nebo cokoli dalšího, ale pořád je to jen nějaká brána mezi sandboxem a prohlížečem a celým operačním systémem).
Internet Explorer myslím rozšíření nemá, má jen pluginy, tj. nativní kód spouštěný v rámci prohlížeče (pluginy mají i ostatní prohlížeče). Pluginy prohlížeč opravdu pod kontrolou prakticky nemá – ale pluginy jsou něco jiného (např. Flash je plugin), WoT není plugin.
No v tom XYUL „sandboxu“ jsou rozšíření omezena na API jako třeba https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcess , takže mohou vlastně všechno… tomu bych pak moc neříkal sandbox.
Je docela možné, že k tomuto API bude mít přístup i moderní rozšíření.
U IE byla možnost nějak rozšiřovat funkcionalitu prohlížeče, ostatně různé toolbars svého času frčely… Jak jinak byste to nazval než rozšíření? Pod pojmem plugin si představím něco, co řeší další MIME typ v prohlížeči.
Ty toolbary do MSIE jsou také pluginy. Plugin je nativní kód, který se s prohlížečem propojuje pomocí prostředků systému (dynamické knihovny, IPC). Rozšíření je něco, co je interpretováno prohlížečem a je na něm 100% závislé. Rozšíření nemůže dělat nic jiného, než k čemu mu prohlížeč poskytne nějaké API.
Na to, abyste dokázal, že sandbox neexistuje, byste potřeboval mnohem silnější tvrzení, než že je snadbox v některých případech hodně propustný. V mnoha různých sandboxech byly nalezeny různé chyby, které dávaly kódu v sandboxu mnohem větší možnosti, než by měl mít – tím se ten sadnbox ovšem nezruší, existuje stále.
Vysvětluju vám to proto, protože špatně čtete vy. Celá diskuse začala tvrzením, že rozšíření WoT mohlo vkládat do stránky libovolné skripty, protože všechna rozšíření mohou do libovolné stránky vložit libovolný skript. Toto tvrzení je nepravdivé, protože v Chrome, Firefoxu (u nového typu rozšíření) i Opeře je potřeba k manipulaci s DOMem (a tedy vložení skriptu) oprávnění – když rozšíření takové oprávnění nemá, skript vložit nemůže. Vaše tvrzení, že existují rozšíření, která skripty vkládají, je k ničemu, protože jste dokázal malý kvantifikátor, ale potřeboval byste dokázat velký.
Že mohou rozšíření vkládat skripty do stránek, tomu se tu nikdo nedivil, naopak se tu sešlo několik takových, kteří existenci jednoho rozšíření, které to dělat může, považovali za důkaz, že to mohou dělat všechna rozšíření.
Doufám, že už teď všichni přítomní chápou, že tvrzení „všechna rozšíření mají možnost libovolně manipulovat s DOMem libovolné stránky v prohlížeči“ je nepravdivé, a že toto tvrzení nejde vyvrátit příkladem rozšíření, které takové oprávnění má.