յուրաքանչյուր pull request Վերջնակետը ավելացնող կամ փոփոխող գործողությունները փոխում են ձեր API հարձակման մակերեսը։ API անվտանգության գործիքների մեծ մասը դա չի նկատում, մինչև այդ վերջնակետը ակտիվ չլինի և արդեն երթևեկություն չի ստանա։ Այդ ժամանակ շտկումը այլևս կոդի վերանայման մեկ տողանոց փոփոխություն չէ, այլ միջադեպի արձագանքման զրույց։
API-ի անվտանգությունը ռիսկերը գտնելու և փակելու պրակտիկա է, թե ինչպես է ծրագիրը բացահայտում իր վերջնակետերը. ով կարող է կանչել դրանք, ինչ տվյալներ են վերադարձնում և արդյոք նրանք անում են այն, ինչ նշված է փաստաթղթերում։
Այս խնդրի համար կառուցված գործիքակազմի մեծ մասը API-ն փորձարկում է աշխատանքի ընթացքում, դրսից, այնպես, ինչպես կաներ հարձակվողը։ Այդ մոտեցումը գործում է, բայց այն գործում է միայն API-ի տեղակայումից հետո։ Քսիգենի ընտրում է նախորդ ուղին. այն կարդում է ձեր սկզբնական կոդը և ձեր API սպեցիֆիկացիան նախքան որևէ հարցում վերջնակետին հասնելը։
API-ը փորձարկելու չորս եղանակ և դրանցից յուրաքանչյուրի պատասխանը
Հասուն ծրագրերի մեծ մասը գործարկում է հետևյալներից մեկից ավելի՝
- Ստատիկ փորձարկում վերլուծում է սկզբնական կոդը և API-ի սպեցիֆիկացիաները տեղակայումից առաջ։ Այն պատասխանում է «ի՞նչ բացահայտեցինք մենք հենց նոր» հարցին։ Սա այն մոտեցումն է, որի վրա կենտրոնանում է այս հոդվածը։
- Դինամիկ փորձարկում (DAST) ուղարկում է իրական տրաֆիկ գործող API-ին և դիտարկում, թե ինչպես է այն արձագանքում։ Այն պատասխանում է. «Ի՞նչն է իրականում հասանելի և շահագործելի հենց հիմա» հարցին։
- Մշուշոտ Վերջնակետերում սխալ կամ անսպասելի մուտքային տվյալներ է ուղարկում մակերեսային վթարների և եզրային պատյանների խափանումների։ Այն պատասխանում է «ի՞նչ է խափանվում մուտքային տվյալների տակ, որոնք մենք չէինք կանխատեսում»։
- Ձեռքով ներթափանցման փորձարկում Ավելացնում է մարդկային դատողություն՝ ավտոմատացված գործիքների կողմից բաց թողնված տրամաբանական թերությունները գտնելու համար։ Այն պատասխանում է հետևյալ հարցին. «Ի՞նչ կարող էր միացնել խելացի հարձակվողը»։
Սրանցից ոչ մեկը չի փոխարինում մյուսներին։ Դրանք կյանքի ցիկլի տարբեր փուլերում պատասխանում են տարբեր հարցերի, և ծրագրերի մեծ մասի միջև եղած բացը առաջինն է։
Ինչու՞ API անվտանգության գործիքների մեծ մասը չափազանց ուշ է տեսնում ռիսկը
Գործարկման ժամանակի API-ի անվտանգության թեստավորումը երթևեկություն է ուղարկում գործող ծրագրին և հետևում, թե ինչպես է այն արձագանքում: Այն օրինական և անհրաժեշտ շերտ է: Այն նաև կառուցվածքով ուշացման ցուցանիշ է. վերջնակետը պետք է գոյություն ունենա, տեղակայված լինի և հասանելի լինի, նախքան գործարկման ժամանակի սկաները կարողանա որևէ բան ասել դրա մասին: Ինչ էլ որ գտնի, այն արդեն իսկ բաց է եղել այնքան ժամանակ, որքան պահանջվել է սկանավորման համար:
Այդ ժամանակային խնդրի տակ կա երկրորդ բացը։ Գործարկման գործիքները կարող են ստուգել միայն այն, ինչի մասին գիտեն։ Եթե վերջնակետը երբեք չի փաստաթղթավորվել, կամ OpenAPI սպեցիֆիկացիան հնացել է նոր երթուղի ուղարկելու պահին, գործարկման ժամանակի սկաները ոչ մի կերպ չի կարող իմանալ, որ այն այնտեղ է։ Այն ստուգում է քարտեզը, այլ ոչ թե տարածքը։
Ստատիկ API անվտանգության թեստավորումը լրացնում է երկու բացթողումները՝ տեղակայումից առաջ ստուգումը տեղափոխելով այնտեղ, որտեղ սահմանված է վերջնակետը՝ ձեր կոդը և ձեր API սպեցիֆիկացիան։ Նույնը pull request որը ներկայացնում է վերջնակետը, սա է pull request որը բացահայտում է դրա ռիսկը։
Ինչ է իրականում նշանակում ստատիկ API անվտանգությունը
Xygeni-ն ձեր API ինվենտարը կառուցում է երկու աղբյուրից՝ ձեր ծրագրի սկզբնական կոդից և ձեր API սպեցիֆիկացիաներից, ներառյալ OpenAPI-ն և Swagger-ը։
Միայն սպեցիֆիկացիաներով ինվենտարը ցույց է տալիս այն վերջնակետերը, որոնք ինչ-որ մեկը հիշել է փաստաթղթավորել: Միայն կոդով ինվենտարը ցույց է տալիս, թե ինչ կա, բայց ոչ պարտադիր, թե ինչպես է այն նախատեսված օգտագործման համար: Երկուսն էլ կարդալը ձեզ տալիս է ամբողջական պատկերը՝ ձեր թիմերի կողմից փաստաթղթավորված վերջնակետերը, և այն վերջնակետերը, որոնք ոչ ոք չի փաստաթղթավորել:
Այդ գույքագրումը հիմքն է, որի վրա կառուցվում է մնացած ամեն ինչ.
- Հայտնաբերված API-ների ընդհանուր թիվը և ռիսկի տակ գտնվող ակտիվների չափումը բազայինի համեմատ
- Վերջնակետերը բաժանված են HTTP մեթոդով
- Խնդիրները խմբավորված են ըստ ծառայության
- Յուրաքանչյուր վերջնակետ՝ իր մեթոդով, ուղով, սպասարկմամբ, մոդուլով, նույնականացման վիճակով և ռիսկի գնահատականով
Ձեր ինժեներական ղեկավարները տեսնում են ձեր API մակերեսի ձևը՝ առանց որևէ տոմս բացելու։
Xygeni-ի կողմից հայտնաբերված յուրաքանչյուր վերջնակետ՝ իր մեթոդով, նույնականացման վիճակով և ռիսկի գնահատականով, կառուցված կոդի և սպեցիֆիկացիայի համատեղ հիման վրա։
Production note Կտրեք AI տեսակավորման վահանակը API անվտանգության ցանկացած էկրանի նկարից։
Համապատասխանեցված է OWASP API-ի անվտանգության լավագույն 10-ի հետ
Արդյունքները խոսում են այն շրջանակի մասին, որն արդեն օգտագործում են ձեր անվտանգության թիմերը և ձեր աուդիտորները: Xygeni-ն հայտնաբերում է ռիսկը OWASP API-ի միջոցով: Լավագույն 10 (2023):
| OWASP- ը | Ռիսկ | Ինչ է դա նշանակում գործնականում |
|---|---|---|
API1 | Կոտրված օբյեկտի մակարդակի թույլտվություն | Վերջնակետը վերադարձնում կամ փոփոխում է մեկ այլ օգտատիրոջ կամ վարձակալի պատկանող տվյալները |
API2 | Անվավերացված վերջնակետեր | Երթուղին հասանելի է առանց որևէ նույնականացման |
API3 | Տվյալների չափազանց մեծ ազդեցություն | Պատասխանը վերադարձնում է ավելի շատ դաշտեր, քան զանգահարողին անհրաժեշտ է կամ պետք է տեսնի։ |
API3 | Զանգվածային նշանակում | Վերջնակետը ընդունում և կիրառում է այն դաշտերը, որոնք երբեք նախատեսված չէին ընդունելու համար։ |
API3 / API10 | Պատասխաններում զգայուն տվյալներ | PII, PCI կամ PHI տվյալները հաճախորդին հասնում են այնպիսի վերջնակետից, որը չպետք է դրանք ուղարկի։ |
API4 | Գների սահմանափակումները բացակայում են | Վերջնակետը պաշտպանություն չունի չարաշահման կամ կոպիտ ուժի կիրառման զանգերից |
API5 | Կոտրված ֆունկցիայի մակարդակի լիազորում | Վերջնակետը կատարում է արտոնյալ գործողություն՝ առանց ստուգելու, թե արդյոք զանգահարողը թույլատրված է։ |
API7 | SSRF | API-ը կարող է խաբեությամբ կիրառվել՝ հարձակվողի անունից հարցումներ կատարելու համար։ |
API8 | JWT-ի սխալ կարգավորում | Թոքենի վավերացումը, ստորագրումը կամ ժամկետի ավարտը սխալ է կարգավորված |
API8 | CORS-ի սխալ կարգավորում | Խաչաձև ծագման կանոնները բավականաչափ թույլատրելի են շահագործելի լինելու համար |
API9 | Զոմբիների և որբերի վերջնակետեր | Հնացած կամ մոռացված երթուղիներ, որոնք դեռևս հասանելի են, և երթուղիներ, որոնք ոչ մեկին չեն պատկանում |
Մեկ կատեգորիա միտումնավոր բացակայում է: API6-ը՝ զգայուն բիզնես հոսքերին անսահմանափակ մուտքը, պահանջում է հասկանալ, թե ինչ պետք է թույլ տա բիզնես գործընթացը, և ոչ մի ստատիկ վերլուծիչ դա հավաստիորեն չի հայտնաբերում: Ցանկացած վաճառող, որը պնդում է հակառակը, ձեզ վաճառում է նշման վանդակ: Այդ մեկը մնում է ձեր սպառնալիքների մոդելավորման և ձեր ներթափանցման թեստավորողների մոտ:
Ոչ բոլոր արդյունքներն են նույնը. տվյալների զգայունություն և թունավոր համակցություններ
Արդյունքների հարթ ցանկը չհաստատված առողջության ստուգման վերջնակետին վերաբերվում է նույն կերպ, ինչ չհաստատված վերջնակետին, որը վերադարձնում է հաճախորդների գրառումները: Սրանք նույն խնդիրը չեն, և առաջնահերթության որոշման մոդելը, որը դրանք նույնականորեն գնահատում է, ձեր թիմերին սովորեցնում է անտեսել ցանկը:
Xygeni-ն դասակարգում է յուրաքանչյուր վերջնակետի կողմից մշակվող տվյալները՝ հարցման պարամետրերում և պատասխաններում նշելով PII, PCI և PHI-ն, և զուգակցում է դրանք վերջնակետի նույնականացման վիճակի հետ։
Այն նաև փոխկապակցում է նույն վերջնակետում հայտնաբերված տվյալները և մեծացնում է դրանց ծանրությունը, երբ դրանք կուտակվում են։ Պատասխանում անձնական տվյալների արտահոսքն ինքնին լուրջ արդյունք է։ Վերջնակետում նույն արտահոսքը, որը չի պահանջում նույնականացում, կարևոր է, և հարթակը գնահատում է այն այդպես՝ կապը ձեռքով նկատելու փոխարեն։
Zombie and Orphan Endpoints: Կոդի և սպեցիֆիկացիայի միջև շեղումը
Քանի որ Xygeni-ն կողք կողքի կարդում է ձեր կոդը և ձեր API սպեցիֆիկացիան, այն տեսնում է, թե որտեղ են դրանք անհամապատասխանություններ։ Այդ շեղումը դրսևորվում է երեք ճանաչելի օրինաչափություններով.
- Չփաստաթղթավորված վերջնակետեր։ Դրանք գտնվում են կոդի մեջ և երբեք չեն ավելացվել սպեցիֆիկացիային։
- Զոմբիի վերջնակետեր։ Դրանք նշված են որպես հնացած կամ դադարեցված, և դրանք դեռևս հասանելի են։
- Որբ վերջնակետեր։ Ներկայիս թիմում ոչ ոք նրանց սեփականատերը չէ։
Սրանցից ոչ մեկը չի երևում միայն տեխնիկական բնութագրերի ցանկում, քանի որ հենց տեխնիկական բնութագրերն են դրանք բացակայում։
Ապացույցներ, որոնց հիման վրա կարող եք գործել, այլ ոչ թե հետաքննության տոմս
Յուրաքանչյուր գտածո մատնանշում է պատասխանատու կոնկրետ մշակողին՝ ֆայլը, դասը, մեթոդը և թերությունը ներմուծած կոնկրետ տողը՝ դրա կողքին ցուցադրված խախտող կոդով։ Յուրաքանչյուրը նաև ցույց է տալիս իր լրջությունը, OWASP API Security Top 10 կատեգորիան, իր CWE-ն, վերջնակետի նույնականացման վիճակը և ներգրավված տվյալների զգայունության դասակարգումը։
Վերջնակետը պարզապես անվանող հայտնագործությունը մշակողին ստիպում է որոնել կոդի բազան, նախքան որևէ բան շտկելը սկսելը։ Գիծը անվանող հայտնագործությունը նրան անմիջապես ուղղում է դեպի լուծումը։
Արդյունքները արտահանվում են որպես JSON, CSV, Markdown և SARIF 2.1.0 ֆորմատներ, ուստի դրանք հայտնվում են t-ում։ools, որոնցում ձեր թիմերն արդեն աշխատում են։
Մշակողը, տողը և կոդը, որոնք ներկայացրեցին բացահայտումը։ Ոչ թե հետաքննության տոմս։
Ինչու է սա ապրում մեկ հարթակում, այլ ոչ թե մեկ այլ կոնսոլում
Xygeni-ն API Security-ն միաժամանակ գործարկում է SAST, SCA, Գաղտնիքների անվտանգություն, IaC և ԱՍՏ մեկ հարթակի ներսում, փոխկապակցված ASPM, փոխարենը այն առանձին գործիքով ուղարկելու login և իր սեփական կուտակված գործերը։
Դա կարևոր է, քանի որ ստատիկ և աշխատանքային ժամանակի արդյունքները պատասխանում են նույն վերջնակետի վերաբերյալ տարբեր հարցերի, և դրանք ավելի օգտակար են միասին, քան առանձին: Ստատիկ տվյալները ձեզ տեղեկացնում են, որ վերջնակետը ռիսկային է նախքան դրա առաքումը: DAST-ը հաստատում է, թե ինչն է իրականում հասանելի և շահագործելի, երբ այն գործարկվում է:
Բաժանեք դա երկու կոնսոլների միջև, և փոխկապակցված ռիսկը կդառնա երկու անկապ կուտակված խնդիրներ։ Ոչ ոք չի համաձայնեցնում դրանք, և վերջնակետը, որը և՛ փաստաթղթավորված է, և՛ չհաստատված, չի գտնվում ոչ մի հերթում։
Տեսեք ձեր իրական API հարձակման մակերեսը։ API անվտանգությունը հասանելի է որպես Enterprise որպես Xygeni հարթակի հավելում, և սկանավորում է կատարվում ձեր սեփական ենթակառուցվածքի ներսում գտնվող ձեր սեփական պահոցների նկատմամբ։
ՀՏՀ
Կարո՞ղ է այն ասել, թե որ վերջնակետերն են մշակում զգայուն տվյալներ։
Այո։ Xygeni-ն վերջնակետային պարամետրերում և արձագանքներում նշում է PII-ը, PCI-ն և PHI-ը և օգտագործում է այդ դասակարգումը՝ արդյունքները իրական ազդեցության հիման վրա դասակարգելու համար։
Կարող է այն գործել յուրաքանչյուրի վրա pull request?
Այո։ Աճման սկանավորումը վերլուծում է միայն փոփոխված վերջնակետերը, և դրա ստեղծած մանիֆեստը կարող է հետագա DAST սկանավորումը կենտրոնացնել այդ նույն վերջնակետերի վրա, այնպես որ ստատիկ և գործարկման ժամանակի թեստավորումը մնում է համահունչ իրականում տեղաշարժվածի հետ։
Արդյո՞ք իմ կոդը դուրս է գալիս իմ միջավայրից։
Ոչ։ Սկանավորումները կատարվում են ձեր սեփական ենթակառուցվածքում։ Միայն արդյունքներն են վերբեռնվում, պաշտպանված են տեղափոխման և հանգստի ժամանակ։
Ինչպե՞ս ստանալ API անվտանգություն։
API անվտանգությունը հասանելի է որպես Enterprise հավելում։ Հարցրեք PoC-ի մասին, և այն կքննարկվի ձեզ հետ։





