API sigurnost

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

svaki pull request Dodavanje ili promjena krajnje tačke mijenja vašu površinu za napad na API. Većina alata za sigurnost API-ja to ne primjećuje dok ta krajnja tačka ne postane aktivna i već ne prima promet. Do tada, ispravak više nije promjena jednog reda 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 tačke: ko ih može pozvati, koje podatke vraćaju i da li rade ono što dokumentacija kaže da rade.

Većina alata izgrađ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 ikada dođe do krajnje tačke.

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

Većina programa za zrelije generacije koristi više od jednog od ovih:

  • Statičko testiranje Analizira izvorni kod i API specifikacije prije implementacije. Odgovara na pitanje „šta smo upravo otkrili?“. Ovaj članak se fokusira na ovaj pristup.
  • Dinamičko testiranje (DAST) šalje stvarni promet na pokrenuti API i promatra kako on reagira. Odgovara na pitanje „šta je zapravo trenutno dostupno i iskoristivo?“. 
  • Fuzing Izbacuje neispravan ili neočekivan ulaz na krajnje tačke što dovodi do površinskih rušenja i grešaka na rubu sistema. Odgovara na pitanje „koji prekidi na 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 „šta bi pametni napadač povezao u lanac?“

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

Zašto većina API sigurnosnih alata prekasno prepoznaje rizik

Testiranje sigurnosti API-ja u okruženju izvršavanja šalje promet aktivnoj aplikaciji i prati kako ona reagira. To je legitiman i neophodan sloj. Također je, po svojoj konstrukciji, indikator kašnjenja: krajnja tačka mora postojati, biti raspoređena i dostupna prije nego što skener u okruženju izvršavanja može išta reći o njoj. Šta god da 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 izvršavanje mogu testirati samo ono što znaju da postoji. Ako krajnja tačka nikada nije dokumentirana ili je OpenAPI specifikacija zastarjela u trenutku kada je neko isporučio novu rutu, skener za izvršavanje nema načina da zna da je tamo. Testira mapu, a ne teritoriju.

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

Šta zapravo znači statička API sigurnost

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

Inventar koji se odnosi samo na specifikacije prikazuje krajnje tačke koje je neko zapamtio da dokumentuje. Inventar koji se odnosi samo na kod prikazuje šta postoji, ali ne nužno i kako je to trebalo da se koristi. Čitanje oba daje vam kompletnu sliku: krajnje tačke koje su vaši timovi dokumentovali i one koje niko nije.

Taj inventar je osnova na kojoj se sve ostalo gradi:

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

Vaši inženjerski stručnjaci vide oblik vaše API površine bez otvaranja ijednog tiketa.

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

Production note Izrežite panel AI Triage sa bilo kojeg snimka ekrana 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 detektuje rizik u sigurnosti OWASP API-ja. Top 10 (2023):

OWASP rizik Šta to znači u praksi
API1 Autorizacija na nivou slomljenog objekta Krajnja tačka vraća ili mijenja podatke koji pripadaju drugom korisniku ili zakupcu
API2 Neautentificirane krajnje tačke Ruta je dostupna bez ikakve autentifikacije
API3 Prekomjerna izloženost podacima Odgovor vraća više polja nego što je pozivaocu potrebno ili nego što bi trebao vidjeti
API3 Masovni zadatak Krajnja tačka prihvata i primjenjuje polja koja nikada nije bila namijenjena prihvatanju
API3 / API10 Osjetljivi podaci u odgovorima PII, PCI ili PHI podaci stižu do klijenta s krajnje tačke koja ih ne bi trebala slati.
API4 Nedostaju ograničenja stope Krajnja tačka nema zaštitu od zloupotrebe ili poziva brutalnom silom
API5 Autorizacija na nivou oštećene funkcije Krajnja tačka izvršava privilegovanu radnju bez provjere da li je pozivaocu dozvoljeno
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 je nepravilno postavljen
API8 Pogrešna konfiguracija CORS-a Pravila o unakrsnom porijeklu su dovoljno permisivna da bi se mogla iskoristiti
API9 Zombi i osiroćene krajnje tačke Zastarjele ili zaboravljene rute koje su još uvijek dostupne i rute koje niko ne posjeduje

Jedna kategorija je namjerno izostavljena. API6, Neograničen pristup osjetljivim poslovnim tokovima, zahtijeva razumijevanje onoga što poslovni proces treba da omogući, a nijedan statički analizator to ne detektuje 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

Jednostavna lista nalaza tretira neautentificiranu krajnju tačku provjere ispravnosti na isti način kao neautentificiranu krajnju tač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 ignorišu listu.

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

Također korelira nalaze koji se nalaze na istoj krajnjoj tački i povećava ozbiljnost kada se oni udruže. Curenje PII podataka u odgovoru je samo po sebi ozbiljan nalaz. Isto curenje na krajnjoj tački koja ne zahtijeva autentifikaciju je kritično, a platforma ga tako ocjenjuje umjesto da ostavi vezu da je neko 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 uporedo, uočava gdje se one ne slažu. To odstupanje se manifestuje kao tri prepoznatljiva obrasca:

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

Ništa od ovoga se ne pojavljuje u inventaru koji prikazuje samo specifikacije, jer im upravo specifikacija nedostaje.

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

Svaki nalaz ukazuje na tačan odgovorni rukovalac: datoteku, klasu, metodu i specifičnu liniju koja je uvela grešku, sa kodom koji se prikazuje pored nje. Svaki od njih također nosi svoju ozbiljnost, svoju OWASP API Security Top 10 kategoriju, svoj CWE, stanje autentifikacije krajnje tačke i klasifikaciju osjetljivosti uključenih podataka.

Nalaz koji samo imenuje krajnju tačku tjera programera da pretražuje kodnu bazu prije nego što uopće može početi s ispravljanjem bilo čega. Nalaz koji imenuje liniju ih odmah dovodi do ispravke.

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, linija i kod koji je uveo izloženost. Nije tiket 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 sa svojim vlastitim login i vlastiti zaostatak.

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

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

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

ČESTA PITANJA

Može li utvrditi koje krajnje tačke obrađuju osjetljive podatke?

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

Može li raditi na svakom pull request?

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

Da li moj kod napušta moje okruženje?

Ne. Skeniranja se izvršavaju u vašoj vlastitoj infrastrukturi. Samo se rezultati prenose, zaštićeni su tokom prenosa i u stanju mirovanja.

Kako da dobijem API sigurnost?

API sigurnost je dostupna kao Enterprise dodatak. Zatražite PoC i on će biti obrađen s vama.

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

Osigurajte svoj razvoj i isporuku softvera

sa Xygeni paketom proizvoda