Krypta.cz - Magazín o informační bezpečnosti
  • i za normálního běhu reklamního systému je často možné propašovat do popisek obrázků vlastní kód díky nedostatečné kontrole uživatelem zadaných údajů - jak je to možné, a jak je to časté, popisuje Michal Till v článku Nové okno s cizím obsahem = reklamní trojský kůň
  • reklamní systém může být úspěšně napaden
  • mnohé reklamní systémy umožnují vkládání uživatelských skriptů běžně (moderní formy reklamy)
  • útočník může klasickými způsoby napadnout spojení mezi reklamím systémem a uživatelem webové aplikace
  • útočník může zneužít systémů pro filtrování reklamy, které mají někteří uživatelé nainstalované
Jako příklad nám poslouží prastará verze platebního systému I LIKE Q a již neexistující reklamní systém Lin(x). Nejen informativní stránky, ale i stránky s formuláři pro provedení platby (převodu) Qček obsahovlay standardní reklamní kód Linxe

...pokud je dostatecne nový IE nebo NN...
&rt;SCRIPT SRC="http://ad.linxcz.cz/sem.js?
idserver=12345=0=1=0"&rt;...&rt;/script&rt;


Čili spuštění cizího javascriptu uvnitř stránky.
To je nejhorší možná kombinace - citlivá aplikace, kde se převádějí peníze, a asi nejnebezpečnější forma reklamního kódu, která umožňuje provést se stránkou a údaji na ní naprosto cokoli. Například nahradit formulář převodu Qček vlastním, který zašle uživatelovo jméno a heslo ne platebnímu systému, ale útočníkovi. (Ten pak může fungovat jako man-in-the-middle, takže to uživatel ani nepozná.) Při troše štěstí číst údaje z formuláře a někam je "bokem" uložit nebo poslat. Co je pak platné zabezpečení systému Vilussion a SSL s drahými certifikáty světoznámé CA? Dobrá celková bezpečnost jistě pomůže, krádeží by si zřejmě dohled nad systémem nebo uživatelé všimli, je otázkou, zda před odčerpáním a proměnou Qček ve skutečné peníze, nebo až "ex post". Vkládání nezabezpečeného obsahu třetích stran do stránek, přišlých přes https, by browser něměl povolit nebo si vyžádat souhlas uživatele. V případě http spojení se samořejmě žádné varování neobjeví.
Teoreticky je například otevření kódu v IFRAME bez problémů, obsah hlavní stránky by měl být v bezpečí, neb se nachází v úplnějiné bezpečnostní doméně. Přijde mi, že v praxi, bohužel, oddělení kódu třetích stran (např. reklamního systému) od citlivých dat není spolehlivé. V nejrozšířenějších browserech bylo objeveno spoustu chyb tohoto typu (cross-frame scripting). (Pokud máte zapnutý javascript a myslíte, že Internet Exploreru není nutné neustále záplatovat, doporučuji navštívit stránky známého výzkumníka George Guninského.). Chyby v dynamicky generovaných stránkách zase naopak často umožňují převzetí domény stránky (cross-site scripting). U "běžné" webové stránky mohou být následkem znečitelnění stránky, přesměrování návštěvníků, škody na soukromí a pod., což je většinou přijatelné. Ale například u platebních systémů jistě chráněné hodnoty a zisk útočníka rostou.
Otázka pro tvůrce zabezpečených webových aplikací: "Věříte reklamnímu sytému jako sami sobě?". Historie Lin(x)e ukazuje, že takovou důvěru reklamnímu systému nelze poskytnout. Doby, kdy nikdo netušil, kde bude mít doména linx.cz namesrvery příští hodinu, jsou jsou snad ještě v živé paměti. Kód vložený jako SCRIPT tedy rozhodně ne. V případě aplikací se středními bezpečnostními nároky, řekněme feemail, je asi snesitelná reklama, realizovaná pomocí čistého IMG, nebo IFRAME. I když by IFRAME teoreticky postačoval všude, přimlouval bych se za maximální separaci. I když by sám dírou a podmínkou zneužití nebyl, reklamní systém by např. umožnil snadno a přesně distribuovat útočný kód, vzužívající např. croos-site scripting. Co tedy zbývá? Provozovat důvěryhodný interní reklamní systém, nebo, alepoň někde, reklamu oželet. Na stránkách, kde je bezpečnosti opravdu zapotřebí, podle mého názoru reklamní kód veřejného systému nemá co dělat.