Varnost API-ja

Varnost API-ja je bila težava med izvajanjem. Ni nujno, da je.

Tudi vsak pull request Če doda ali spremeni končno točko, se spremeni površina za napad API-ja. Večina orodij za varnost API-jev tega ne opazi, dokler ta končna točka ni aktivna in že prevzema promet. Takrat popravek ni več sprememba ene vrstice v pregledu kode, temveč pogovor o odzivu na incident.

Varnost API-jev je praksa iskanja in odpravljanja tveganj v načinu, kako aplikacija izpostavlja svoje končne točke: kdo jih lahko pokliče, katere podatke vrnejo in ali počnejo tisto, kar je navedeno v dokumentaciji.

Večina orodij, zgrajenih za ta problem, testira API med izvajanjem, od zunaj, na enak način kot bi to storil napadalec. Ta pristop deluje, vendar deluje šele po tem, ko je API nameščen. Ksigeni ubere prejšnjo pot: prebere vašo izvorno kodo in specifikacijo API-ja, še preden ena sama zahteva doseže končno točko.

Štirje načini testiranja API-ja in odgovori vsakega od njih

Večina programov za zrelejše uporabnike izvaja več kot enega od teh:

  • Statično testiranje analizira izvorno kodo in specifikacije API-ja pred uvedbo. Odgovarja na vprašanje »kaj smo pravkar razkrili?« Ta članek se osredotoča na ta pristop.
  • Dinamično testiranje (DAST) pošilja dejanski promet delujočemu API-ju in opazuje, kako se odziva. Odgovori na vprašanje "kaj je trenutno dejansko dosegljivo in izkoriščeno?" 
  • Zmehčanje na končnih točkah povzroči popačene ali nepričakovane vhodne podatke, kar povzroči površinske zrušitve in robne napake. Odgovarja na vprašanje »katere napake se pojavijo pri vhodnih podatkih, ki jih nismo pričakovali?«
  • Ročno testiranje penetracije dodaja človeško presojo za iskanje logičnih pomanjkljivosti, ki jih avtomatizirana orodja spregledajo. Odgovarja na vprašanje »kaj bi pametni napadalec združil?«

Nobeden od teh ne nadomešča drugih. Odgovarjajo na različna vprašanja na različnih točkah življenjskega cikla, vrzel, ki jo ima večina programov, pa je prva.

Zakaj večina orodij za varnost API-jev prepozno opazi tveganje

Varnostno testiranje izvajalnega API-ja pošilja promet v živo aplikacijo in spremlja, kako se odziva. To je legitimna in potrebna plast. Po zasnovi je tudi indikator zakasnitve: končna točka mora obstajati, biti nameščena in dosegljiva, preden lahko izvajalni skener o njej karkoli pove. Karkoli najde, je bilo že izpostavljeno, ne glede na to, koliko časa je trajalo izvajanje skeniranja.

Pod to težavo s časom se skriva še ena vrzel. Orodja za izvajanje lahko preizkusijo le tisto, za kar vedo, da obstaja. Če končna točka ni bila nikoli dokumentirana ali je specifikacija OpenAPI zastarela v trenutku, ko je nekdo objavil novo pot, pregledovalnik za izvajanje ne more vedeti, da je tam. Preizkuša zemljevid, ne ozemlja.

Statično testiranje varnosti API-ja zapolni obe vrzeli tako, da preverjanje premakne tja, kjer je definirana končna točka: vaša koda in specifikacija API-ja, pred uvedbo. Enako pull request ki uvaja končno točko, je pull request kar razkriva njegovo tveganje.

Kaj pravzaprav pomeni statična varnost API-ja

Xygeni gradi vaš inventar API-jev iz dveh virov: izvorne kode vaše aplikacije in vaših specifikacij API-ja, vključno z OpenAPI in Swagger.

Popis, ki zajema samo specifikacije, prikazuje končne točke, ki jih je nekdo nekoč želel dokumentirati. Popis, ki zajema samo kodo, prikazuje, kaj obstaja, vendar ne nujno, kako naj bi se to uporabljalo. Branje obeh vam da celotno sliko: končne točke, ki so jih dokumentirale vaše ekipe, in tiste, ki jih ni nihče.

Ta inventar je temelj, na katerem gradi vse ostalo:

  • Skupno število odkritih API-jev in ogroženih sredstev, merjenih glede na izhodišče
  • Končne točke, razčlenjene po metodi HTTP
  • Težave, razvrščene po storitvah
  • Vsaka končna točka z metodo, potjo, storitvijo, modulom, stanjem preverjanja pristnosti in oceno tveganja

Vaši vodje inženiringa vidijo obliko vaše API površine, ne da bi odprli eno samo zahtevo.

Vsaka končna točka, ki jo je Xygeni našel, skupaj s svojo metodo, stanjem preverjanja pristnosti in oceno tveganja, je bila zgrajena iz kode in specifikacije skupaj.

Production note Obrežite ploščo AI Triage s katerega koli posnetka zaslona API Security.

Preslikano v OWASP API Security Top 10

Ugotovitve govorijo o okviru, ki ga vaše varnostne ekipe in revizorji že uporabljajo. Xygeni zazna tveganja v varnostnem vmesniku OWASP API. Najboljši 10 (2023):

OWASP Tveganje Kaj to pomeni v praksi
API1 Okvarjena avtorizacija na ravni objekta Končna točka vrne ali spremeni podatke, ki pripadajo drugemu uporabniku ali najemniku
API2 Neoverjene končne točke Pot je dosegljiva brez kakršne koli avtentikacije
API3 Prekomerna izpostavljenost podatkom Odgovor vrne več polj, kot jih klicatelj potrebuje ali bi jih moral videti
API3 Masovna dodelitev Končna točka sprejema in uporablja polja, ki jih ni bila nikoli namenjena sprejemanju
API3 / API10 Občutljivi podatki v odgovorih PII, PCI ali PHI dosežejo odjemalca s končne točke, ki jih ne bi smela pošiljati
API4 Manjkajoče omejitve stopenj Končna točka nima zaščite pred zlorabo ali klici brutalne sile.
API5 Avtorizacija na ravni prekinjene funkcije Končna točka izvede privilegirano dejanje, ne da bi preverila, ali ima klicatelj dovoljenje za to.
API7 SSRF API je mogoče z zvijačo prepričati, da v imenu napadalca pošilja zahteve
API8 Napačna konfiguracija JWT Preverjanje, podpisovanje ali potečenje žetonov je napačno nastavljeno
API8 Napačna konfiguracija CORS Pravila o navzkrižnem izvoru so dovolj permisivna, da jih je mogoče izkoristiti
API9 Zombi in osirotele končne točke Zastarele ali pozabljene poti, ki so še vedno dosegljive, in poti, ki niso v lasti nikogar

Ena kategorija je namerno odsotna. API6, neomejen dostop do občutljivih poslovnih tokov, zahteva razumevanje, kaj naj bi poslovni proces omogočal, in noben statični analizator tega ne zazna verodostojno. Vsak prodajalec, ki trdi drugače, vam prodaja potrditveno polje. To ostane pri vašem modeliranju groženj in vaših preizkuševalcih penetracije.

Niso vse ugotovitve enake: občutljivost podatkov in strupene kombinacije

Ploski seznam ugotovitev obravnava nepreverjeno končno točko preverjanja zdravja enako kot nepreverjeno končno točko, ki vrača zapise strank. To nista ista težava in model določanja prioritet, ki jih ocenjuje enako, nauči vaše ekipe, da seznam ignorirajo.

Xygeni klasificira podatke, ki jih obravnava vsaka končna točka, pri čemer v parametrih zahteve in odgovorih označi PII, PCI in PHI ter to poveže s stanjem preverjanja pristnosti končne točke.

Prav tako povezuje ugotovitve, ki pristanejo na isti končni točki, in povečuje resnost, ko se seštevajo. Uhajanje osebnih podatkov v odgovoru je samo po sebi resna ugotovitev. Isto uhajanje na končni točki, ki ne zahteva preverjanja pristnosti, je ključnega pomena in platforma ga tako oceni, namesto da bi povezavo prepustila nekomu, da jo opazi ročno.

Zombi in osirotele končne točke: Premik med kodo in specifikacijo

Ker Xygeni bere vašo kodo in specifikacijo API-ja vzporedno, vidi, kje se ne strinjata. To odstopanje se kaže kot trije prepoznavni vzorci:

  • Nedokumentirane končne točke. Živijo v kodi in niso bili nikoli dodani v specifikacijo.
  • Končne točke zombijev. Označeni so kot zastareli ali umaknjeni in so še vedno dosegljivi.
  • Osirotele končne točke. Nihče v trenutni ekipi jih nima v lasti.

Nič od tega se ne prikaže v inventarju, ki prikazuje samo specifikacije, ker jim prav specifikacija manjka.

Dokazi, na podlagi katerih lahko ukrepate, ne pa vstopnica za preiskavo

Vsaka ugotovitev kaže na točno odgovornega izvajalca napake: datoteko, razred, metodo in specifično vrstico, ki je povzročila napako, skupaj s sporno kodo. Vsaka ugotovitev ima tudi svojo resnost, kategorijo OWASP API Security Top 10, svojo CWE, stanje preverjanja pristnosti končne točke in klasifikacijo občutljivosti vpletenih podatkov.

Ugotovitev, ki poimenuje le končno točko, spodbudi razvijalca, da brska po kodni bazi, še preden lahko sploh začne karkoli popravljati. Ugotovitev, ki poimenuje linijo, pa ga takoj pripelje do popravka.

Ugotovitve se izvozijo kot JSON, CSV, Markdown in SARIF 2.1.0, tako da pristanejo v tools, v katerih vaše ekipe že delajo. 

Obdelovalec, vrstica in koda, ki je uvedla izpostavljenost. Ni zahteva za preiskavo.

Zakaj to obstaja na eni platformi in ne na drugi konzoli

Xygeni upravlja varnost API-jev skupaj SAST, SCA, Varnost skrivnosti, IaC in DAST znotraj ene same platforme, povezane prek ASPM, namesto da bi ga dobavljali kot ločeno orodje z lastnim login in lastne zaostanke.

To je pomembno, ker statične ugotovitve in ugotovitve med izvajanjem odgovarjajo na različna vprašanja o isti končni točki in so skupaj bolj uporabne kot ločeno. Statične ugotovitve vam povejo, da je končna točka tvegana, še preden je dobavljena. DAST potrdi, kaj je dejansko dosegljivo in izkoriščeno, ko se izvaja.

Če to razdelimo na dve konzoli, se povezano tveganje spremeni v dva nepovezana zaostanka. Nihče ju ne uskladi, končna točka, ki je hkrati nedokumentirana in neoverjena, pa ne sedi v nobeni čakalni vrsti.

Oglejte si svojo dejansko površino za napad API-ja. Varnost API-ja je na voljo kot Enterprise dodatek k platformi Xygeni in skeniranje se izvede v vaših lastnih repozitorijih znotraj vaše lastne infrastrukture.

FAQ

Ali lahko ugotovi, katere končne točke obdelujejo občutljive podatke?

Da. Xygeni v parametrih in odzivih končnih točk označi PII, PCI in PHI ter to klasifikacijo uporabi za razvrščanje ugotovitev glede na dejansko izpostavljenost.

Ali lahko deluje na vsakem pull request?

Da. Inkrementalno skeniranje analizira samo končne točke, ki so se spremenile, manifest, ki ga ustvari, pa lahko osredotoči nadaljnje skeniranje DAST na iste končne točke, tako da statično in izvajalno testiranje ostaneta usklajena s tem, kaj se je dejansko premaknilo.

Ali moja koda zapusti moje okolje?

Ne. Skeniranja se izvajajo v vaši lastni infrastrukturi. Naložijo se samo rezultati, ki so zaščiteni med prenosom in v stanju mirovanja.

Kako pridobim varnost API-ja?

Varnost API-ja je na voljo kot Enterprise dodatek. Zahtevajte dokazilo o skladnosti (PoC) in z vami bomo določili njegov obseg.

orodja-za-analizo-sestave-programske-programske-orodja-sca
Določite prednostne naloge, odpravite in zavarujte tveganja programske opreme
Pridobite svoj brezplačni račun.
Ni potrebna kreditna kartica.

Zagotovite si razvoj in dostavo programske opreme

z Xygeni Product Suite