FixVibe
Covered by FixVibehigh

Հայտնաբերել և կանխել միջկայքային սցենարների (XSS) խոցելիությունները

Cross-site Scripting (XSS) տեղի է ունենում, երբ հավելվածը ներառում է անվստահելի տվյալներ վեբ էջում՝ առանց համապատասխան վավերացման կամ կոդավորման: Սա թույլ է տալիս հարձակվողներին տուժողի բրաուզերում կատարել վնասակար սկրիպտներ, ինչը հանգեցնում է նստաշրջանի առևանգման, չարտոնված գործողությունների և զգայուն տվյալների բացահայտմանը:

CWE-79

Ազդեցություն

Հարձակվողը, ով հաջողությամբ շահագործում է Cross-Site Scripting (XSS) խոցելիությունը, կարող է դիմակայել որպես զոհ օգտագործող, իրականացնել ցանկացած գործողություն, որը օգտատերը լիազորված է կատարել և մուտք գործել օգտվողի ցանկացած տվյալ [S1]: Սա ներառում է սեսիայի թխուկների գողություն՝ հաշիվները հափշտակելու համար, կեղծ ձևաթղթերի միջոցով մուտքի հավատարմագրերի գրավում կամ [S1][S2] վիրտուալ խեղաթյուրում: Եթե ​​տուժողն ունի վարչական արտոնություններ, հարձակվողը կարող է լիարժեք վերահսկողություն ձեռք բերել հավելվածի և դրա տվյալների վրա [S1]:

Արմատային պատճառ

XSS տեղի է ունենում, երբ հավելվածը ստանում է օգտվողի կողմից կառավարվող մուտքագրում և ներառում է այն վեբ էջում՝ առանց պատշաճ չեզոքացման կամ կոդավորման [S2]: Սա թույլ է տալիս ներածումը մեկնաբանել որպես ակտիվ բովանդակություն (JavaScript) զոհի դիտարկիչի կողմից՝ շրջանցելով նույն ծագման քաղաքականությունը, որը նախատեսված է կայքերը միմյանցից մեկուսացնելու համար [S1][S2]:

խոցելիության տեսակները

  • արտացոլված XSS: Վնասակար սկրիպտները արտացոլվում են վեբ հավելվածից տուժածի դիտարկիչում, սովորաբար URL-ի պարամետրի միջոցով [S1]:
  • Պահված է XSS: Սկրիպտը մշտապես պահվում է սերվերում (օրինակ՝ տվյալների բազայում կամ մեկնաբանությունների բաժնում) և ավելի ուշ սպասարկվում է օգտվողներին [S1][S2]:
  • DOM-ի վրա հիմնված XSS: Խոցելիությունը ամբողջությամբ առկա է հաճախորդի կողմից օգտագործվող կոդում, որը մշակում է տվյալներ անվստահելի աղբյուրից ոչ անվտանգ եղանակով, օրինակ՝ գրել innerHTML [S1]:

Բետոնե ամրացումներ

  • Տվյալների կոդավորում ելքի վրա. Փոխակերպեք օգտագործողի կողմից կառավարվող տվյալները անվտանգ ձևի` նախքան դրանք մատուցելը: Օգտագործեք HTML օբյեկտի կոդավորումը HTML մարմնի համար, և համապատասխան JavaScript կամ CSS կոդավորում այդ կոնկրետ համատեքստերի համար [S1][S2]:
  • Զտել մուտքագրումը ժամանման ժամանակ. Կիրառել խիստ թույլտվությունների ցանկեր ակնկալվող մուտքային ձևաչափերի համար և մերժել այն ամենը, ինչը չի համապատասխանում [S1][S2]-ին:
  • Օգտագործեք անվտանգության վերնագրեր. Սահմանեք HttpOnly դրոշը նստաշրջանի թխուկների վրա՝ JavaScript-ի միջոցով մուտքը կանխելու համար [S2]: Օգտագործեք Content-Type և X-Content-Type-Options: nosniff՝ համոզվելու համար, որ դիտարկիչները սխալ չեն մեկնաբանում պատասխանները որպես [S1] գործարկվող կոդ:
  • Բովանդակության անվտանգության քաղաքականություն (CSP): Տեղադրեք ուժեղ CSP՝ սահմանափակելու աղբյուրները, որոնցից կարող են բեռնվել և գործարկվել սկրիպտները՝ ապահովելով պաշտպանական խորը շերտ ZXCVFIXVIBETOKEN0ZXFIXZVIBETOKEN.

Ինչպես է FixVibe-ն փորձարկում դրա համար

FixVibe-ն կարող էր հայտնաբերել XSS բազմաշերտ մոտեցման միջոցով՝ հիմնված սկանավորման հաստատված մեթոդոլոգիաների վրա [S1].

  • **Պասիվ սկանավորումներ.
  • Ակտիվ զոնդեր. Եզակի, ոչ վնասակար ալֆան-թվային տողերի ներարկում URL-ի պարամետրերի և ձևի դաշտերի մեջ՝ որոշելու, թե արդյոք դրանք արտացոլված են պատասխան մարմնում՝ առանց [S1] պատշաճ կոդավորման:
  • Ռեպո սկանավորումներ. Հաճախորդի կողմից JavaScript-ի վերլուծություն «լվացարանների» համար, որոնք անվստահորեն մշակում են անվստահելի տվյալները, ինչպիսիք են innerHTML, document.write կամ setTimeout-ի ընդհանուր ցուցիչները, XSS [S1].