Za one koji možda nisu upoznati, GraphQL je jezik upita i okruženje za izvršavanje API-ja. Razvijen je od strane Facebooka i sada je dostupan kao otvoreni kod, što je svakako olakšanje 😌.
Kao i svaki drugi softver, GraphQL ima svoje prednosti i nedostatke.
Možda ćete zanemariti nedostatke koji se odnose na određene funkcije. Ali, šta ako vam kažem da postoji niz ranjivosti u GraphQL-u?
Ne brinite. Postoji veliki broj alata koji vam mogu pomoći da pronađete i popravite bezbednosne propuste u GraphQL-u.
Pre nego što vas upoznam sa alatima, hajde da prvo vidimo šta je zapravo GraphQL i koje su njegove ranjivosti.
Šta je GraphQL?
Da bismo objasnili šta je GraphQL, zamislite sledeći scenario: sedite u restoranu i poručujete ručak.
Međutim, možda nećete želeti baš jelo navedeno u meniju. Ponekad ćete možda hteti da dodate ili izbacite neke sastojke. Recimo da ste alergični na orašaste plodove i želite da prilagodite svoj obrok kako vama odgovara.
Zamislite GraphQL kao konobara koji prilagođava vašu specifičnu porudžbinu i daje vam tačno ono što ste tražili, ali umesto hrane, GraphQL se bavi podacima sa servera.
Koristeći ovakvu tehnologiju, savremene aplikacije mogu da vam pruže specifične podatke, štedeći vam mnogo propusnog opsega i poboljšavajući korisničko iskustvo.
Saznajte više o vrhunskom GraphQL softveru.
Ranjivosti GraphQL-a
Ovde je lista potencijalnih ranjivosti koje zlonamerni pojedinci mogu da iskoriste kako bi pristupili osetljivim informacijama:
- Prekomerno i nedovoljno preuzimanje podataka: Ova ranjivost može prekomerno opteretiti resurse servera. Ukoliko su instrukcije za preuzimanje podataka iz GraphQL-a neispravne, to može dovesti do prekomernog preuzimanja (dobijanja više podataka nego što je traženo) ili nedovoljnog preuzimanja (dobijanja manje podataka nego što se traži, što zahteva više ponovljenih zahteva od strane korisnika).
- Prekomerno izlaganje podataka: Kada je kontrola pristupa loše konfigurisana, otkrivaju se kritični podaci. Ako server dozvoljava neovlašćen pristup, bilo koji haker sa dovoljnim veštinama lako može da provali podatke.
- Problem sa ugnježdenim upitima: Po standardnoj postavci, ne postoji ograničenje složenosti, što omogućava slanje vrlo kompleksnih upita. Zamislite sada više takvih složenih, ugnježdenih upita koji će iscrpeti sve sistemske resurse, što može dovesti do sporog odziva ili čak do potencijalnog DoS (Denial of Service) napada.
- Injekcije: GraphQL je u suštini jezik upita sa korisničkim unosom, što jednostavno znači da ukoliko vaš API nije zaštićen, može biti podložan ubacivanju zlonamernog koda, pri čemu vaša baza podataka, sistem datoteka, pa čak i mreža i operativni sistem mogu biti meta napada.
- GraphQL bombe: Ove su otkrivene u avgustu 2022. godine i utiču na API-je koji su implementirali GraphQL otpremanje datoteka. Ovo je DoS (Denial of Service) napad koji uključuje slanje velikog broja HTTP zahteva na GraphQL krajnju tačku.
- Pogrešno konfigurisana HTTP zaglavlja: Iako možda deluje bezazleno, verujte mi, ovo može da nanese mnogo više štete nego što mislite. Ako nije pravilno konfigurisano, može otvoriti vrata napadima kao što su CSRF (Cross-Site Request Forgery), MIME sniffing, Man-in-the-Middle napad i drugi.
- Ograničenje brzine je pogrešno konfigurisano ili nije konfigurisano: Ograničenje brzine je mehanizam koji ograničava broj upita koje klijent može da pošalje u određenom vremenskom periodu. Ukoliko nije pravilno konfigurisan, to može dovesti do potencijalne DoS pretnje!
Zvuči zastrašujuće, zar ne?
Sada ću podeliti neke od najboljih alata koje možete koristiti za pronalaženje i popravljanje GraphQL ranjivosti i osiguranje vašeg servera. Evo kratkog pregleda alata o kojima ćemo govoriti:
Značajne karakteristike proizvodaEscape GraphQL SecurityBrzo skeniranje, identifikacija stvarnih rizika, integracija sa razvojnim alatimaInvicti GraphQL skenerSkenira različite napade, savremena zaštitaStackHawk GraphQL testiranjeKontinuirane provere ranjivosti, automatizovana bezbednostBeagle SecurityAktivno testiranje, CI/CD integracija, detaljni izveštajiGraphQL dot SecurityBesplatna opcija, provera krajnjih tačaka, ažurirana baza podatakaQualysec GraphQL penetraciono testiranjeOWASP Top 10 analiza, dinamičko/statičko API testiranjeAppCheck bezbednosno skeniranjeAPI, SPA i testiranje krajnjih tačaka, podrška za Jira/TeamCitySynopsys API bezbednosno testiranjeKontinuirano testiranje u pozadini, vizuelno mapiranje nedostatakaBright Security API testiranjeFokus na mikrousluge, CLI, SaaS baziran, CI/CD integracija
Escape GraphQL Security
Escape razvija svoje proizvode sa programerima na umu, a njegov GraphQL bezbednosni alat za proveru nije izuzetak.
Kao jedan od retkih dobavljača specijalizovanih za bezbednosne usluge, možete biti sigurni da će i nove ranjivosti biti skenirane u vrlo kratkom vremenskom roku.
Ali to nije sve:
- Potrebno je samo oko 60 sekundi da pokrenete prvo skeniranje!
- Escape baza podataka je stalno ažurirana u vezi sa ranjivostima.
- Identifikuje stvarne rizike, a ne samo potencijalne probleme.
- Omogućava integraciju sa vašim omiljenim alatima za razvoj.
Dakle, ukoliko tražite brzo i jednostavno rešenje za proveru ranjivosti GraphQL-a, Escape može biti vaš sledeći izbor.
Invicti GraphQL skener
Ranije poznat kao Netsparker, Invicti je jedno od najpouzdanijih i najpoznatijih imena u svetu API skeniranja.
Ono što korisnike najviše zanima jeste koje vrste napada ovaj alat može da pokrije, pa evo liste ozbiljnih napada i ranjivosti koje se mogu skenirati ovim proizvodom:
- Blind command injection
- Blind SQL injection
- Command injection
- Remote code execution
- Server-side request forgery
Pouzdano rešenje za odbranu od savremenih napada.
StackHawk GraphQL bezbednosno testiranje
Najbolja stvar kod korišćenja StackHawk-ovog GraphQL testiranja je da se provere svih GraphQL ranjivosti vrše pri svakom zahtevu za povlačenje.
Ako ta ključna karakteristika nije dovoljna da vas ubedi, evo još nekih uzbudljivih funkcija koje nudi StackHawk:
- Automatsko bezbednosno testiranje.
- Izuzetno brzo testiranje i popravljanje
- Jednostavno korisničko sučelje
- Odlična dokumentacija za jednostavno samostalno popravljanje problema
Prilično dobro, zar ne?
Beagle Security
Beagle Security je specijalizovan za pružanje automatizovanih rešenja za testiranje bezbednosti veb aplikacija i pomaže kompanijama da identifikuju i poprave bezbednosne propuste.
Njihove četiri ključne karakteristike ih čine zaista posebnim:
- Intenzivno i aktivno testiranje
- Integracija sa CI/CD
- Detaljni izveštaji
- Detaljni predlozi za popravke od strane stručnjaka za bezbednost
Takođe možete koristiti njihovu besplatnu procenu bezbednosti veb sajta da pronađete ranjivosti na vašoj veb lokaciji.
GraphQL dot Security (graphql.security)
Ukoliko tražite besplatnu opciju i zadovoljavate se ograničenim funkcijama, onda nema bolje opcije od onoga što nudi graphql.security.
Ovo je takođe proizvod od strane kompanije Escape, tako da možete biti sigurni u njihove testove i pouzdanost.
Neke od ključnih karakteristika uključuju:
- Ažurirana Escape baza podataka
- Nije potrebna registracija
- Mogućnost provere krajnje tačke jednim klikom
- Besplatna usluga
Dakle, ako tek započinjete svoje poslovanje na internetu i imate ograničen budžet, toplo bih preporučio korišćenje graphql.security.
Qualysec GraphQL API penetraciono testiranje
Qualysec pruža profesionalno testiranje penetracije GraphQL API-ja i predstavlja uslugu procene sajber bezbednosti. To vam omogućava da otkrijete ranjivosti, popravite ih i budete sigurni u vezi svih bezbednosnih pitanja.
Evo nekih zanimljivih karakteristika koje pružaju:
- Proizvod je analiziran u skladu sa OWASP Top 10 za GraphQL API testiranje kako bi se zaštitio od najčešćih pretnji.
- Dinamičko API testiranje.
- Statičko API testiranje.
- Analiza sastava softvera.
Pored bezbednosnih funkcija, njihov izveštaj o skeniranju ranjivosti je izvanredan jer uključuje izveštaj o penetraciji, izveštaj o ponovnom testiranju, pismo atestacije i bezbednosni sertifikat.
AppCheck bezbednosno skeniranje
Appcheck pruža sveobuhvatnu pomoć pri testiranju API-ja, ali ne samo to. Dolazi sa dodatnim funkcijama kao što su SPA indeksiranje, otkrivanje krajnjih tačaka i još mnogo toga.
Ali to nije sve:
- Štedi vreme zahvaljujući praktičnom radnom procesu.
- Kompatibilan je sa Jira, TeamCity i drugim razvojnim alatima.
- Otkriva zero-day ranjivosti, pored 100.000+ poznatih bezbednosnih propusta, i u potpunosti je usklađen sa OWASP-om.
Prilično dugačka lista funkcija, zar ne?
Synopsys API bezbednosno testiranje
Synopsys ima program za testiranje API-ja koji će automatski otkriti izložene krajnje tačke vaše aplikacije, i sve to se kontinuirano izvodi u pozadini!
Još uvek niste ubeđeni? Evo još nekih neverovatnih karakteristika:
- Ukazuje na nedostatke u kodu i podacima koristeći vizuelno mapiranje
- Automatsko otkrivanje ranjivosti
- Procene pretnji i rizika
Bright Security API testiranje
Bright Security usluge su dizajnirane za moderna mikrouslužna okruženja i pružaju besprekornu integraciju sa SDLC, CI/CD i git radnim tokovima tako da se ranjivosti mogu otkriti što je lakše moguće.
Evo nekih ključnih karakteristika Bright Security:
- Pogodan CLI za programere
- 100% SaaS baziran
- CI/CD integracija
- Ranjivosti su mapirane u skladu sa OWASP API Security Top 10
Zaključak
U ovom vodiču sam objasnio ključne GraphQL ranjivosti i predstavio najbolje alate za pronalaženje i rešavanje istih.
Nadam se da vam je ovaj vodič bio od pomoći.
Možda će vas takođe zanimati da pročitate o poređenju GraphQL-a i REST API-ja i kada koristiti koji od njih.