Sigurnost API-ja

Sigurnost API-ja je bila problem za vrijeme izvođenja. Ne mora biti.

Svaki pull request Dodavanje ili promjena krajnje točke mijenja vašu površinu napada na API. Većina alata za sigurnost API-ja ne primjećuje to dok ta krajnja točka nije aktivna i već prima promet. Do tada, ispravak više nije promjena jednog retka u pregledu koda, već razgovor o odgovoru na incident.

Sigurnost API-ja je praksa pronalaženja i zatvaranja rizika u načinu na koji aplikacija izlaže svoje krajnje točke: tko ih može pozvati, koje podatke vraćaju i rade li ono što dokumentacija kaže da rade.

Većina alata izrađenih za ovaj problem testira API za vrijeme izvođenja, izvana, na isti način kao što bi to učinio napadač. Taj pristup funkcionira, ali funkcionira tek nakon što je API implementiran. Xygeni ide ranijim putem: čita vaš izvorni kod i vašu API specifikaciju prije nego što ijedan zahtjev uopće dođe do krajnje točke.

Četiri načina testiranja API-ja i što svaki od njih odgovara

Većina zrelijih programa pokreće više od jednog od ovih:

  • Statičko ispitivanje analizira izvorni kod i API specifikacije prije implementacije. Odgovara na pitanje „što smo upravo otkrili?“. Na taj pristup se ovaj članak fokusira.
  • Dinamičko testiranje (DAST) šalje stvarni promet na pokrenuti API i promatra kako on reagira. Odgovara na pitanje „što je trenutno dostupno i iskoristivo?“. 
  • Fuzziran baca neispravan ili neočekivan ulaz na krajnje točke do površinskih rušenja i rubnih kvarova. Odgovara na pitanje „koji se prekidi pri ulazu nisu predviđeni?“
  • Ručno testiranje penetracije dodaje ljudsku prosudbu kako bi pronašao logičke nedostatke koje automatizirani alati propuštaju. Odgovara na pitanje „što bi pametni napadač povezao?“

Ništa od ovoga ne zamjenjuje ostale. Oni odgovaraju na različita pitanja u različitim točkama životnog ciklusa, a praznina koju većina programa ima je prva.

Zašto većina alata za sigurnost API-ja prekasno prepoznaje rizik

Testiranje sigurnosti API-ja za vrijeme izvođenja šalje promet aktivnoj aplikaciji i prati kako ona reagira. To je legitiman i nužan sloj. Također je, po svojoj konstrukciji, indikator kašnjenja: krajnja točka mora postojati, biti implementirana i dostupna prije nego što skener za vrijeme izvođenja može išta reći o njoj. Što god pronađe, već je bilo izloženo onoliko dugo koliko je trebalo da se skeniranje pokrene.

Postoji i druga praznina ispod tog problema s vremenom. Alati za izvođenje mogu testirati samo ono što znaju da postoji. Ako krajnja točka nikada nije dokumentirana ili je specifikacija OpenAPI-ja zastarjela u trenutku kada je netko isporučio novu rutu, skener za izvođenje nema načina da zna da je tamo. Testira kartu, a ne teritorij.

Statičko testiranje sigurnosti API-ja zatvara oba jaza pomicanjem provjere na mjesto gdje je definirana krajnja točka: vaš kod i vaša API specifikacija, prije implementacije. Isto pull request koja uvodi krajnju točku je pull request što otkriva njegov rizik.

Što zapravo znači statička API sigurnost

Xygeni izgrađuje vaš API inventar iz dva izvora: izvornog koda vaše aplikacije i vaših API specifikacija, uključujući OpenAPI i Swagger.

Popis samo specifikacija prikazuje krajnje točke koje je netko sjetio dokumentirati. Popis samo koda prikazuje što postoji, ali ne nužno i kako je to trebalo biti korišteno. Čitanje oba daje vam cjelovitu sliku: krajnje točke koje su vaši timovi dokumentirali i one koje nitko nije dokumentirao.

Taj inventar je temelj na kojem se sve ostalo gradi:

  • Ukupan broj otkrivenih API-ja i imovine u riziku u odnosu na početnu vrijednost
  • Krajnje točke raščlanjene prema HTTP metodi
  • Problemi grupirani po usluzi
  • Svaka krajnja točka sa svojom metodom, putanjom, uslugom, modulom, stanjem autentifikacije i ocjenom rizika

Vaši inženjerski voditelji vide oblik vaše API površine bez otvaranja ijedne prijave.

Svaka krajnja točka koju je Xygeni pronašao, sa svojom metodom, stanjem autentifikacije i ocjenom rizika, izgrađena je zajedno iz koda i specifikacije.

Production note Izrežite ploču AI Triage s bilo koje snimke zaslona API sigurnosti.

Mapirano na OWASP API Security Top 10

Nalazi govore o okviru koji vaši sigurnosni timovi i vaši revizori već koriste. Xygeni otkriva rizik u sigurnosti OWASP API-ja. Top 10 (2023):

OWASP Rizik Što to znači u praksi
API1 Pokvarena autorizacija na razini objekta Krajnja točka vraća ili mijenja podatke koji pripadaju drugom korisniku ili zakupniku
API2 Neautentificirane krajnje točke Ruta je dostupna bez ikakve autentifikacije
API3 Prekomjerna izloženost podacima Odgovor vraća više polja nego što pozivatelj treba ili bi trebao vidjeti
API3 Masovni zadatak Krajnja točka prihvaća i primjenjuje polja koja nikada nije bila namijenjena prihvaćanju
API3 / API10 Osjetljivi podaci u odgovorima PII, PCI ili PHI podaci stižu do klijenta s krajnje točke koja ih ne bi trebala slati
API4 Nedostaju ograničenja stope Krajnja točka nema zaštitu od zlouporabe ili poziva brute forceom
API5 Autorizacija na razini oštećene funkcije Krajnja točka izvršava privilegiranu radnju bez provjere je li pozivatelju dopušteno
API7 SSRF API se može prevariti da šalje zahtjeve u ime napadača
API8 Pogrešna konfiguracija JWT-a Validacija, potpisivanje ili istek tokena nisu ispravno postavljeni
API8 Pogrešna konfiguracija CORS-a Pravila o unakrsnom podrijetlu su dovoljno dopustiva da se mogu iskoristiti
API9 Zombi i osiroćene krajnje točke Zastarjele ili zaboravljene rute koje su još uvijek dostupne i rute koje nitko ne posjeduje

Jedna kategorija je namjerno izostavljena. API6, Neograničen pristup osjetljivim poslovnim tokovima, zahtijeva razumijevanje što bi poslovni proces trebao dopustiti, a nijedan statički analizator to ne otkriva vjerodostojno. Svaki dobavljač koji tvrdi drugačije prodaje vam potvrdni okvir. Taj ostaje kod vašeg modeliranja prijetnji i vaših penetracijskih testera.

Nisu svi nalazi jednaki: Osjetljivost podataka i toksične kombinacije

Jednostavan popis nalaza tretira neautentificiranu krajnju točku provjere ispravnosti na isti način kao i neautentificiranu krajnju točku koja vraća zapise o kupcima. To nije isti problem, a model prioritizacije koji ih ocjenjuje identično obučava vaše timove da ignoriraju popis.

Xygeni klasificira podatke koje svaka krajnja točka obrađuje, označavajući PII, PCI i PHI u parametrima zahtjeva i u odgovorima, te to uparuje sa stanjem autentifikacije krajnje točke.

Također korelira nalaze koji se nalaze na istoj krajnjoj točki i povećava ozbiljnost kada se oni kombiniraju. Curenje PII podataka u odgovoru je samo po sebi ozbiljan nalaz. Isto curenje na krajnjoj točki koja ne zahtijeva autentifikaciju je kritično, a platforma ga tako ocjenjuje umjesto da ostavi vezu da je netko ručno primijeti.

Zombi i Orphan Endpoints: Drift između koda i specifikacije

Budući da Xygeni čita vaš kod i vašu API specifikaciju usporedno, uočava gdje se ne slažu. To odstupanje se očituje kao tri prepoznatljiva obrasca:

  • Nedokumentirane krajnje točke. Oni žive u kodu i nikada nisu dodani u specifikaciju.
  • Zombi krajnje točke. Označeni su kao zastarjeli ili umirovljeni, a i dalje su dostupni.
  • Osiroćene krajnje točke. Nitko u trenutnom timu ih ne posjeduje.

Ništa od ovoga se ne pojavljuje u inventaru samo sa specifikacijama, jer im specifikacija upravo nedostaje.

Dokazi na temelju kojih možete djelovati, a ne karta za istragu

Svaki nalaz ukazuje na točan odgovorni rukovatelj: datoteku, klasu, metodu i specifičan redak koji je uveo grešku, s kodom koji se prikazuje uz nju. Svaki također nosi svoju ozbiljnost, kategoriju OWASP API Security Top 10, svoj CWE, stanje autentifikacije krajnje točke i klasifikaciju osjetljivosti uključenih podataka.

Otkriće koje samo imenuje krajnju točku tjera programera da pretražuje kodnu bazu prije nego što uopće može početi išta popravljati. Otkriće koje imenuje liniju odmah ih dovodi do rješenja.

Nalazi se izvoze kao JSON, CSV, Markdown i SARIF 2.1.0, tako da se pojavljuju u tools u kojima vaši timovi već rade. 

Rukovatelj, redak i kod koji je uveo izloženost. Nije karta za istragu.

Zašto ovo postoji na jednoj platformi, a ne na drugoj konzoli

Xygeni vodi API sigurnost uz SAST, SCA, Sigurnost tajni, IaC i DAST unutar jedne platforme, povezane putem ASPM, umjesto da se isporučuje kao zaseban alat s vlastitim login i vlastiti zaostatak.

To je važno jer statički nalazi i nalazi tijekom izvođenja odgovaraju na različita pitanja o istoj krajnjoj točki i korisniji su zajedno nego odvojeno. Statički nalazi vam govore da je krajnja točka rizična prije nego što se isporuči. DAST potvrđuje što je zapravo dostupno i iskoristivo nakon što se pokrene.

Podijelite to na dvije konzole i korelirani rizik postaje dva nepovezana zaostatka. Nitko ih ne usklađuje, a krajnja točka koja je i nedokumentirana i neautentificirana ne nalazi se ni u jednom redu čekanja.

Pogledajte svoju stvarnu površinu napada na API. API sigurnost dostupna je kao Enterprise dodatak Xygeni platformi, a skeniranje se izvodi na vašim vlastitim repozitorijima unutar vaše vlastite infrastrukture.

Česta pitanja

Može li odrediti koje krajnje točke obrađuju osjetljive podatke?

Da. Xygeni označava PII, PCI i PHI u parametrima i odgovorima krajnjih točaka te koristi tu klasifikaciju za rangiranje nalaza prema stvarnoj izloženosti.

Može li se pokrenuti na svakom pull request?

Da. Inkrementalno skeniranje analizira samo krajnje točke koje su se promijenile, a manifest koji generira može usmjeriti naknadno DAST skeniranje na iste krajnje točke, tako da statičko i runtime testiranje ostaju usklađeni s onim što se stvarno promijenilo.

Napušta li moj kod moje okruženje?

Ne. Skeniranja se izvode u vašoj vlastitoj infrastrukturi. Prenose se samo rezultati, zaštićeni su tijekom prijenosa i u stanju mirovanja.

Kako mogu dobiti API sigurnost?

API sigurnost dostupna je kao Enterprise dodatak. Zatražite PoC i s vama će biti dogovoren njegov opseg.

alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda