Խաչաձև սկրիպտավորումը (XSS) խոցելիություն է, որը թույլ է տալիս հարձակվողին վնասակար սկրիպտներ ներարկել վեբ էջի մեջ, սկրիպտներ, որոնք այնուհետև աշխատում են մեկ այլ օգտատիրոջ զննարկչում, կարծես այնտեղ լինեն։ Այն մշտապես դասակարգվում է որպես... OWASP-ի լավագույն 10-յակը, և սա մնում է ամենատարածված եղանակներից մեկը, որով հարձակվողները գողանում են սեսիայի տվյալները, առևանգում հաշիվները կամ աննկատելիորեն խաթարում են ծրագրի վստահությունը սեփական օգտատերերի մոտ։
SAST գործիքները այս խոցելիությունները վաղ հայտնաբերելու ամենաարդյունավետ միջոցներից մեկն են՝ սկանավորելով սկզբնական կոդը՝ գտնելու այն ճշգրիտ օրինաչափությունները, որոնք թույլ են տալիս XSS-ին աննկատ անցնել, նախքան այդ կոդը երբևէ կհասնի արտադրության: Այս գրառման մեջ՝ XSS-ի երեք ամենատարածված տեսակները, թե ինչ տեսք ունեն դրանք իրական կոդում և ինչպես SAST գործիքները (գումարած մի քանի կոդավորման մեթոդներ) փակեցին դրանք նախքան դրանք առաքելը։
Որո՞նք են XSS խոցելիությունները և ինչո՞ւ պետք է հոգ տանել դրանց մասին։
XSS խոցելիությունները առաջանում են, երբ հավելվածը ընդունում է անվստահելի մուտքային տվյալներ, այսինքն՝ օգտատիրոջ կողմից URL-ում մուտքագրված, տեղադրվող կամ փոխանցված տվյալներ, և այն վերադարձնում է էջ՝ առանց նախապես պատշաճ կերպով վավերացնելու կամ խուսափելու։ Երբ դա տեղի է ունենում, հարձակվողը կարող է սովորական տեքստի փոխարեն գաղտնի ներմուծել սկրիպտ, և զննարկիչը չի կարողանում տարբերակել դրանք. այն պարզապես գործարկում է այն՝ նույն վստահությամբ և թույլտվություններով, ինչ էջի մնացած մասը։
Ահա թե ինչն է XSS-ը դարձնում վտանգավոր, չնայած հիմքում ընկած սխալը հաճախ փոքր է։ Մեկ չախտահանված մուտքագրման դաշտը կարող է թույլ տալ հարձակվողին գողանալ սեսիայի քուքիները և առևանգել մուտքագրված հաշիվը, աննկատ կերպով վերահասցեագրել օգտատերերին ֆիշինգային էջ, գրանցել ստեղնաշարի սեղմումները կամ վերաշարադրել այցելուի տեսած բովանդակությունը՝ այս ամենը առանց ձեր սերվերներին անմիջականորեն դիպչելու։ Խոցելիությունն ամբողջությամբ կայանում է նրանում, թե ինչպես է զննարկիչը վստահում ձեր ծրագրի սեփական ելքին։
Ահա թե ինչու է XSS-ը այդքան հաճախ հայտնվում OWASP-ի լավագույն 10-յակում. այն չի պահանջում բարդ շահագործման շղթա, միայն մեկ անտեսված մուտքային տվյալներ, և պայթյունի շառավիղը տարածվում է յուրաքանչյուր օգտատիրոջ վրա, ով բեռնում է ազդակիր էջը։
XSS հարձակումների բացահայտում. Երեք ամենատարածված տեսակները
1. Պահված XSS. Մշտական սպառնալիք
Պահված XSS-ը սերվերի վրա մշտապես տեղադրում է վնասակար սկրիպտ, ուստի այն ավտոմատ կերպով գործարկվում է յուրաքանչյուր օգտատիրոջ համար, ով հետագայում դիտում է տուժած էջը։
Պահված XSS խոցելիությունները առաջանում են, երբ վնասակար սկրիպտները մշտապես պահվում են սերվերի վրա (օրինակ՝ տվյալների բազայում) և կատարվում են, երբ օգտատերը մուտք է գործում տուժած էջ։
Example: մեկնաբանության դաշտ, որը ընդունում է չհաստատված օգտատիրոջ մուտքագրումը.
2. Արտացոլված XSS. Ներկայացված պահին
Արտացոլված XSS-ը գտնվում է մեկ մշակված հղման մեջ, սկրիպտը գործարկվում է միայն այն ժամանակ, երբ զոհը սեղմում է դրա վրա, սովորաբար ֆիշինգի կամ սոցիալական ինժեներիայի միջոցով։
Արտացոլված XSS-ը տեղի է ունենում, երբ վնասակար սկրիպտներ են ներդրվում URL-ներում և կատարվում, երբ օգտատերը փոխազդում է հղման հետ, ինչը սովորաբար իրականացվում է ֆիշինգի կամ սոցիալական ինժեներիայի միջոցով։
Example:
https://example.com/search?q=
3. DOM-ի վրա հիմնված XSS. Բրաուզերում թաքնված հարձակումներ
DOM-ի վրա հիմնված XSS-ը երբեք չի դիպչում սերվերին, վնասակար սկրիպտը կատարվում է ամբողջությամբ հաճախորդի կողմից՝ JavaScript-ի միջոցով, որը սխալ է մշակում էջի բովանդակությունը։
Այս տեսակի դեպքում վնասակար սկրիպտները շահագործում են հաճախորդի կողմից JavaScript-ի խոցելիությունները՝ փաստաթղթի օբյեկտային մոդելը (DOM) մանիպուլյացիաների համար։
Example: JavaScript-ի հատված, որը դինամիկ կերպով արտապատկերում է օգտատիրոջ չմաքրված մուտքագրումը։
var input = location.hash.substring(1);
document.getElementById("output").innerHTML = input; // Vulnerable
Հետաքրքիր է, թե այս օրինաչափություններից քանի՞սն արդեն գոյություն ունեն ձեր սեփական կոդային բազայում։ Xygeni-ի SAST ավտոմատ կերպով սկանավորում է պահված, արտացոլված և DOM-ի վրա հիմնված XSS ռիսկերը, նախքան դրանք հասնեն pull request.
Ինչպես SAST Գործիքները կանգնեցնում են XSS-ը իր հունից
Ստատիկ հավելվածների անվտանգության փորձարկում (SAST) գործիքները անգնահատելի են XSS խոցելիությունները ծրագրային ապահովման մշակման կյանքի ցիկլի վաղ փուլում հայտնաբերելու համար (SDLC).
Հիմնական Առավելությունները
Բռնել խնդիրները վաղ զարգացման փուլում
SAST Գործիքները սկանավորում են սկզբնական կոդը՝ խոցելի օրինաչափություններ հայտնաբերելու համար, նախքան ծրագիրը տեղակայելը։
Նշված խոցելիության օրինակ՝
document.getElementById("output").innerHTML = userInput; // Vulnerable
Անվտանգ այլընտրանք.
document.getElementById("output").textContent = sanitize(userInput); // Secure
Վերլուծեք ամբողջ կոդային բազան
Մոդեռն SAST Գործիքները ոչ միայն վերլուծում են հատուկ կոդը, այլև սկանավորում են կախվածությունները և երրորդ կողմի գրադարանները՝ հայտնաբերելով թաքնված ռիսկերը։
Անխափան ինտեգրվել CI/CD
SAST գործիքները ավտոմատ կերպով սկանավորում են XSS խոցելիությունները pull requests և կանխել անապահով կոդի միաձուլումը։
Կենտրոնացեք ամենակարևորի վրա
SAST Գործիքները առաջնահերթություն են տալիս շտկումներին՝ գնահատելով խոցելիությունների շահագործելիությունը և լրջությունը, թույլ տալով թիմերին նախ լուծել ամենակարևոր խնդիրները։
Ինչպես է Xygeni-ն օգնում ձեզ հաղթել XSS-ի դեմ պայքարում
Xygeni-ն համատեղում է ստատիկ վերլուծությունը, արհեստական բանականության վրա հիմնված վերականգնումը և մատակարարման շղթայի տեսանելիությունը՝ XSS խոցելիությունը գտնելու և այն իրականում շտկելու միջև եղած բացը լրացնելու համար: Ահա թե ինչպես.
- Code Security (SAST): Սկանավորում է առաջին կողմի կոդը XSS-ի և այլ ներարկման թերությունների համար՝ գրվելուն պես, բռնելով դրանք տեղակայումից առաջ։ OWASP Benchmark-ում Xygeni-SAST XSS հայտնաբերման դեպքում ցույց է տալիս 100% ճշմարիտ դրական ցուցանիշ՝ նվազագույն կեղծ դրականներով։
- Արհեստական ինտելեկտի ավտոմատ շտկում. Անմիջապես շտկում է նշված XSS խոցելիությունները մշակողի համար նախատեսված լուծումներով՝ ստեղծելով pull request Ձեր կոդային բազային համապատասխան անվտանգ այլընտրանքով, ձեռքով թարմացման կարիք չկա։
- Վնասակար ծրագրերից պաշտպանություն. Հսկում է կախվածությունները և երրորդ կողմի գրադարանները՝ ներարկված կամ վնասված կոդի առկայության համար, որպեսզի բաց կոդով փաթեթում թաքնված խոցելի ձևանմուշը չվրիպի ձեր առաջին կողմի կոդի վերանայումից։
- IDE և CI/CD Ինտեգրում. Նշում է խնդիրները անմիջապես IDE-ում կոդի գրվելուն պես և նշումներ է անում։ pull requests ավտոմատ կերպով տարածվում է GitHub-ում, GitLab-ում, Bitbucket-ում, Azure DevOps-ում և Jenkins-ում, որպեսզի խոցելի կոդը սկզբում չմիավորվի։
Կառուցեք դիմացկուն հավելվածներ. խորհուրդներ՝ կայքերի միջև սկրիպտավորումը կանխելու համար
Ձեր դիմումները ավելի անվտանգ դարձնելու համար, կիրառեք այս մեթոդները զուգահեռաբար SAST գործիքներ:
- Մաքրեք օգտատիրոջ մուտքագրված տվյալները՝ Օգտագործեք DOMPurify-ի նման գրադարաններ՝ հուսալի մաքրման համար։
- Կոդավորել ելքերը՝ Միշտ կոդավորեք դինամիկ տվյալները, նախքան դրանք զննարկիչում ցուցադրելը։
- Կիրառեք բովանդակության անվտանգության քաղաքականությունները (CSP): Սահմանափակեք սկրիպտի կատարումը վստահելի աղբյուրներով։
- Կոդի աուդիտները դարձրեք շարունակական, այլ ոչ թե պարբերական։ Ձեռքով վերանայումներ պլանավորելու փոխարեն, գործարկեք Xygeni-ն SAST սկանավորում է որպես pre-commit կեռիկ կամ անմիջապես ձեր մեջ CI/CD pipeline (GitHub, GitLab, Bitbucket, Azure DevOps, Jenkins), այնպես որ յուրաքանչյուր commit ստուգվում է ավտոմատ կերպով, և անապահով կոդը երբեք չի հասնում միաձուլման։
Պատրա՞ստ եք պաշտպանել ձեր ծրագրերը XSS-ից:
XSS խոցելիությունները պարտադիր չէ, որ սպառնան ձեր հավելվածի անվտանգությանը: Հասկանալ, թե ինչպես են դրանք աշխատում, հայտնաբերել դրանք SAST գործիքները, և անվտանգ կոդավորման պրակտիկային հետևելը կարող է ձեր ազդեցությունը գրեթե զրոյի հասցնել, նախքան հարձակվողը երբևէ կգտնի այդ բացը։
At Քսիգենի, մենք ստեղծված ենք այս խոցելիությունները վաղ հայտնաբերելու, իրականում կարևորագույնները առաջնահերթություն տալու և դրանք ձեր հասանելիությունից դուրս պահելու համար։ pipelineամբողջությամբ։
Գիրք ցուցադրում, կամ սկսեք անվճար սկանավորել ձեր կոդը այսօր։
ՀՏՀ
Ի՞նչ է XSS խոցելիությունը։
XSS-ը (Cross-Site Scripting) խոցելիություն է, որը թույլ է տալիս հարձակվողին վնասակար սկրիպտ ներարկել վեբ էջի մեջ, որը այնուհետև գործարկվում է մեկ այլ օգտատիրոջ զննարկիչում, կարծես այն օրինական կայքի մաս լինի։
Որո՞նք են XSS-ի երեք հիմնական տեսակները։
Պահված XSS (սկրիպտը պահվում է սերվերի վրա և աշխատում է յուրաքանչյուր այցելուի համար), արտացոլված XSS (սկրիպտը ներդրված է հղման մեջ և աշխատում է միայն այդ հղման վրա սեղմելիս) և DOM-ի վրա հիմնված XSS (սկրիպտն ամբողջությամբ կատարվում է զննարկիչում՝ անվտանգ կլիենտ-կողմի JavaScript-ի միջոցով՝ առանց սերվերի ներգրավման):
Can SAST Գործիքները որսում են DOM-ի վրա հիմնված XSS-ը։
Այո, ժամանակակից SAST Գործիքները սկանավորում են հաճախորդի կողմից JavaScript-ը՝ նույն անվտանգ օրինաչափությունների (օրինակ՝ DOM-ում անմիջապես գրված չմաքրված մուտքային տվյալներ) հայտնաբերման համար, որոնք առաջացնում են DOM-ի վրա հիմնված XSS, այլ ոչ թե միայն սերվերի կողմից կոդը։
XSS-ը դեռևս տարածված խոցելիություն է՞:
Այո։ XSS-ը շարունակում է մնալ OWASP-ի լավագույն 10-յակի մշտական գրառում, հիմնականում այն պատճառով, որ ընդամենը մեկ անտեսված մուտքագրման դաշտ է բավարար ամբողջ ծրագրի օգտատերերին բացահայտելու համար։
Ինչպե՞ս է SAST գործիք, որը տարբերվում է վեբ հավելվածների firewall-ից (WAF)՝ XSS կանխարգելման համար։
A SAST Գործիքը տեղակայումից առաջ գտնում է ձեր սկզբնական կոդի խոցելի ձևանմուշը, ուստի սխալը երբեք չի ուղարկվում: WAF-ը գտնվում է արդեն աշխատող ծրագրի առջև և փորձում է արգելափակել չարամիտ հարցումները կատարման ժամանակ, այն անվտանգության ցանց է, այլ ոչ թե հիմքում ընկած կոդի լուծում:







