FixVibe
Covered by FixVibecritical

SQL Injection. Կանխում է տվյալների բազայի չարտոնված մուտքը

SQL ներարկումը (SQLi) կարևոր խոցելիություն է, որտեղ հարձակվողները խանգարում են հավելվածի տվյալների բազայի հարցումներին: Ներարկելով վնասակար SQL շարահյուսություն, հարձակվողները կարող են շրջանցել նույնականացումը, դիտել զգայուն տվյալներ, ինչպիսիք են գաղտնաբառերը և վարկային քարտի մանրամասները, կամ նույնիսկ վտանգել հիմքում ընկած սերվերը:

CWE-89

SQL ներարկման ազդեցությունը

SQL ներարկումը (SQLi) թույլ է տալիս հարձակվողին միջամտել այն հարցումներին, որոնք դիմումը կատարում է իր տվյալների բազայում [S1]: Առաջնային ազդեցությունը ներառում է չթույլատրված մուտք դեպի զգայուն տվյալներ, ինչպիսիք են օգտվողի գաղտնաբառերը, վարկային քարտի տվյալները և անձնական տվյալները [S1]:

Տվյալների գողությունից բացի, հարձակվողները հաճախ կարող են փոփոխել կամ ջնջել տվյալների բազայի գրառումները՝ հանգեցնելով հավելվածի վարքագծի մշտական փոփոխության կամ տվյալների կորստի [S1]: Բարձր խստության դեպքերում SQLi-ն կարող է ընդլայնվել՝ վտանգելու հետևի ենթակառուցվածքը, հնարավորություն ընձեռելու ծառայության հերքման հարձակումները կամ կազմակերպության համակարգերի մշտական ​​հետնադուռ ապահովելու համար [S1]ZXCVFIXZVIBETOKEN2:

Արմատային պատճառ՝ մուտքագրման անապահով կառավարում

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

Քանի որ մուտքագրումը պատշաճ կերպով մեկուսացված չէ հարցման կառուցվածքից, տվյալների բազայի թարգմանիչը կարող է օգտագործել օգտվողի մուտքագրման մասերը որպես SQL կոդ, այլ ոչ թե այն դիտարկել որպես բառացի տվյալ [S2]: Այս խոցելիությունը կարող է դրսևորվել հարցման տարբեր մասերում, ներառյալ SELECT հայտարարությունները, INSERT արժեքները կամ UPDATE հայտարարությունները [S1]:

Կոնկրետ ուղղումներ և մեղմացումներ

Օգտագործեք պարամետրացված հարցումներ

SQL ներարկումը կանխելու ամենաարդյունավետ միջոցը պարամետրացված հարցումների օգտագործումն է, որը նաև հայտնի է որպես պատրաստված հայտարարություններ [S1]: Տողերի միացման փոխարեն մշակողները պետք է օգտագործեն կառուցվածքային մեխանիզմներ, որոնք կպարտադրեն տվյալների բաժանումը և [S2] ծածկագիրը:

Նվազագույն արտոնության սկզբունք

Հավելվածները պետք է միանան տվյալների շտեմարանին՝ օգտագործելով իրենց առաջադրանքների համար պահանջվող ամենացածր արտոնությունները [S2]: Վեբ հավելվածի հաշիվը չպետք է ունենա վարչական արտոնություններ և պետք է սահմանափակվի հատուկ աղյուսակներով կամ գործառնություններով, որոնք անհրաժեշտ են իր [S2] գործառույթի համար:

Մուտքի վավերացում և կոդավորում

Թեև չի փոխարինում պարամետրիզացիան, մուտքի վավերացումը ապահովում է պաշտպանության խորը [S2]: Հավելվածները պետք է օգտագործեն ընդունելի-ճանաչված լավ ռազմավարություն՝ հաստատելով, որ մուտքագրումը համապատասխանում է ակնկալվող տեսակներին, երկարություններին և ձևաչափերին [S2]:

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

FixVibe-ն արդեն ծածկում է SQL ներարկումը փակ active.sqli սկաների մոդուլի միջոցով: Ակտիվ սկանավորումներն իրականացվում են միայն տիրույթի սեփականության հաստատումից և հավաստագրումից հետո: Ստուգումը սողում է նույն ծագման GET վերջնակետերը հարցման պարամետրերով, սահմանում է ելակետային պատասխան, որոնում է SQL-ին հատուկ բուլյան անոմալիաներ և միայն հաղորդում է հայտնաբերում ժամանակի հաստատումից հետո մի քանի ուշացումների երկարությամբ: Պահեստի սկանավորումները նաև օգնում են ավելի վաղ բացահայտել հիմնական պատճառը code.web-app-risk-checklist-backfill-ի միջոցով, որը դրոշակում է չմշակված SQL զանգերը, որոնք կառուցված են ձևանմուշների միջակայքով: