Viktigheten av API-sikkerhet
Vi lever i en tid der den digitale økonomien vokser eksponentielt. Store mengder data overføres daglig via API-er. Fra virksomhet og spill, til utdanning, vær, vitenskap og kunst – praktisk talt alt er avhengig av API-er. Med en så grunnleggende avhengighet av API-er, er det overraskende hvor lite fokus det er på sikkerhet.
Utviklere stoler ofte på standardinnstillingene til rammeverk, eller enda verre, antar de følger god sikkerhetspraksis selv når de ikke bruker et rammeverk. Systemadministratorer derimot, setter sin lit til standard sikkerhetstiltak som tilbys av deres infrastruktur eller tjenesteleverandører.
Dette er etter min mening en risikabel tilnærming.
Kilde: developer.ibm.com
Konsekvensene av manglende sikkerhet er enorme, noe vi ofte innser først når noe alvorlig inntreffer.
La oss begynne med det grunnleggende. 🙂
Hvorfor er det nødvendig å sikre API-endepunkter?
Svaret på dette spørsmålet burde være opplagt.
Vi må sikre API-endepunkter fordi de er selve fundamentet for vår virksomhet.
Selv om dette er et sterkt argument i seg selv, ønsker jeg å utdype det litt og belyse andre viktige konsekvenser.
Tap av inntekter 📉
Dette er den mest åpenbare konsekvensen. Hvis noen lykkes i å kompromittere API-endepunktene dine, vil det stoppe driften. Sikkerhetsbrudd kan også kreve lang tid å rette opp, noe som kan være ødeleggende for virksomheten. Mens et par timers nedetid kanskje ikke har stor innvirkning for de fleste bedrifter, er det uakseptabelt for andre. Tenk deg for eksempel at en valutabørs er nede i bare noen minutter!
Problemer med etterlevelse
Manglende sikring av API-ene dine kan føre til alvorlige problemer, avhengig av hvilke bransjer og geografiske områder du opererer i. Hvis du for eksempel tilbyr tjenester til banksektoren (spesielt i EU), kan det å bli tatt med usikre API-er resultere i betydelige juridiske og overholdelsesproblemer. Dette kan være så alvorlig at det kan føre til at virksomheten din må stenge.
Tap av omdømme
Å bli hacket er ille nok i seg selv, men hvis dette blir offentlig kjent, kan det føre til uopprettelig skade på merkevaren din. Sony, for eksempel, har blitt hacket alvorlig flere ganger, og har derfor blitt et morsomt objekt i sikkerhetsmiljøer.
Selv om det ikke oppstår noe reelt tap av data eller penger, kan det være vanskelig å overbevise skeptiske kunder. 🙂
Uforholdsmessige infrastrukturkostnader 💰
Når API-en din kjører på en infrastruktur, bruker den ressurser som båndbredde, CPU og minne. Hvis API-en ikke er tilstrekkelig sikret, og ondsinnede aktører får mulighet til å interagere med den, kan de tvinge API-en til å utføre unødvendige oppgaver, for eksempel tunge databasespørringer, som kan føre til at regningene dine skyter i været.
På plattformer der automatisk skalering av ressurser er aktivert (som AWS), kan kostnadene bli sjokkerende (dette er et annet tema, men hvis du opplever dette på AWS, er de vanligvis forståelsesfulle og fjerner gjerne de uforholdsmessig høye kostnadene – i hvert fall per skrivende stund!).
Demotiverte team
Du tenker kanskje at teamet som tillater slike kompromisser vil bli demotiverte. Det er ikke nødvendigvis tilfelle. Det er mulig at kompromissene skyldtes svak sikkerhet i infrastrukturen, noe som kan virke motløsende for utviklerne, eller omvendt.
Hvis dette skjer ofte nok, kan det skape en uheldig kultur.
Konkurransefordel for konkurrenter
La oss si det har oppstått et brudd, men det ikke har ført til noe reelt tap. Konkurrentene dine vil likevel bruke denne hendelsen til å markedsføre sine egne API-er og fremheve hvor mye sikrere de er (selv om dette ikke er tilfelle!). Igjen, det kan være vanskelig å overbevise markedet om noe annet. 🙂
Kort sagt er konsekvensene av sikkerhetsbrudd mye mer enn bare tap av penger.
Gode metoder for å sikre API-endepunkter
Heldigvis finnes det enkle og velkjente metoder du kan bruke for å sikre API-endepunktene dine. Her er hva de fleste sikkerhetseksperter anbefaler:
Bruk alltid HTTPS 🔒
Hvis API-endepunktene dine lar API-brukere kommunisere over http eller andre usikre protokoller, utsetter du dem for stor risiko. Passord, hemmelige nøkler og kredittkortinformasjon kan enkelt bli stjålet via mann-i-midten-angrep, eller ved hjelp av verktøy som sniffer pakker. Disse kan lese informasjonen som ren tekst.
Sørg derfor for at https er det eneste tilgjengelige alternativet. Uansett hvor trivielt et endepunkt kan virke, bør tilkobling over http aldri være et alternativ. TLS-sertifikater er ikke dyre; du kan kjøpe dem for så lite som 20 dollar fra SSL-butikken.
Enveis hashing av passord
Passord bør aldri lagres som ren tekst. Hvis det oppstår et sikkerhetsbrudd, vil alle brukerkontoer bli kompromittert. Symmetrisk kryptering bør også unngås, da en angriper som er dyktig nok vil kunne knekke den.
Det eneste anbefalte alternativet er å bruke asymmetriske (eller «enveis») krypteringsalgoritmer for å lagre passord. På denne måten vil verken en angriper, en utvikler eller en systemadministrator kunne lese kundenes passord.
Sterk autentisering 💪
Nesten alle API-er har i dag en form for autentisering, men etter min mening fungerer OAuth2-systemet best. I motsetning til andre autentiseringsmetoder deler det opp kontoen din i ressurser og tillater kun begrenset tilgang for den som har autentiseringstokenet.
En annen god praksis er å sette en utløpsdato for tokens, for eksempel 24 timer, slik at de må oppdateres. Selv om tokenet ditt skulle bli lekket, vil den 24-timers fristen redusere effekten av bruddet.
Hastighetsbegrensning
Med mindre API-en din brukes av millioner av mennesker hvert minutt, er det en god idé å sette en grense for hvor mange kall en klient kan gjøre til API-en innenfor en viss tidsperiode.
Dette er hovedsakelig for å beskytte mot roboter, som kan sende hundrevis av samtidige forespørsler hvert sekund og føre til at API-en din bruker unødvendig mange ressurser. De fleste webutviklingsrammeverk leveres med en hastighetsbegrensende mellomvare (eller det er enkelt å legge til via et bibliotek) som er rask å sette opp.
Valider inndata
Dette virker enkelt, men det er overraskende hvor mange API-er som blir utsatt for problemer på grunn av dette. Å validere inndata betyr ikke bare å sjekke om de innkommende dataene er i riktig format, men også å sørge for at det ikke finnes noen overraskelser. Et enkelt eksempel er SQL-injeksjon, som kan ødelegge databasene dine hvis søkestrenger slippes igjennom uten kontroll.
Et annet eksempel er å validere størrelsen på POST-forespørsler og returnere en korrekt feilkode og melding til klienten. Å akseptere og analysere svært store inndata vil bare føre til at API-en går ned.
Håndhev IP-adressefiltrering, om relevant
Hvis du tilbyr B2B-tjenester, og API-ene dine brukes av bedrifter fra bestemte lokasjoner, bør du vurdere å legge til et ekstra lag med sikkerhet som begrenser hvilke IP-adresser som kan få tilgang til API-en din. For hver nye plassering og ny klient må IP-adressen kontrolleres mot den innkommende forespørselen.
Dette kan gjøre det litt mer komplisert å komme i gang, men det gir et mye høyere sikkerhetsnivå enn det som ellers ville vært mulig.
Verktøy for å forbedre API-beskyttelsen
Finnes det verktøy som kan hjelpe oss med å skanne etter sårbarheter eller til og med tilby et første forsvarslag for å sikre API-ene våre?
Heldigvis, ja. Det finnes flere verktøy du kan bruke, men husk at ingen sikkerhetsstrategi er perfekt. Likevel kan disse verktøyene forbedre API-sikkerheten betydelig, så de anbefales.
Metasploit er et svært populært rammeverk med åpen kildekode for penetrasjonstesting av webapplikasjoner og API-er. Det kan skanne API-en din på mange forskjellige parametere og utføre en omfattende sikkerhetsrevisjon for forskjellige sårbarhetsnivåer.
Sikkerhetsskanningen utført av Metasploit kan for eksempel fortelle deg om API-signaturene dine avslører de underliggende teknologiene og operativsystemet, noe som er et viktig skritt i API-sikkerhet.
Kjernerammeverket med åpen kildekode er generelt tilstrekkelig, men det finnes utmerkede betalingsprodukter basert på Metasploit som er verdt å vurdere. Pro-versjonen er flott hvis du ønsker premium-støtte og vil bruke rammeverket i dybden, men er vanligvis ikke nødvendig hvis teamet ditt har nok erfaring.
AppTrana
AppTranas dedikerte API-beskyttelse tilbyr en omfattende, risikobasert løsning for å beskytte mot en rekke API-trusler, inkludert OWASP API Top 10, API-baserte DDoS- og botangrep, innebygde trusler, datalekkasjer osv. Med ubegrenset automatisk API-skanning, støttet av manuell penetrasjonstesting, overvåker den kontinuerlig risikoscoren din for å forbedre sikkerheten.
AppTranas API-beskyttelse gir en omfattende løsning med kombinasjonen av risikodeteksjon, API-trusseldeteksjon, API-policyer for positiv sikkerhet, API-spesifikke DDoS-policyer, API-spesifikke botmoduler og API-oppdagelsesfunksjoner.
API-oppdagelsen gir full innsikt i API-anrop, inkludert udokumenterte og skygge-API-er, for å forstå API-angrepsoverflaten. Denne dedikerte API-beskyttelsen samler informasjon om brukerdetaljer, API-bruksmønstre, trusselaktivitet, API-anropskart og mer for å vise beskyttelsesstatusen med sanntidsanalyse.
Ved å bruke Indusface AppTrana kan du generere skreddersydde, API-spesifikke policyer for å blokkere API-relatert misbruk i sanntid.
Cloudflare
Ikke bare et CDN, men Cloudflare tilbyr mange sikkerhetsfunksjoner som WAF, hastighetsbegrensning og DDoS-beskyttelse, som er avgjørende for å sikre API-en din mot trusler på nettet.
Invicti
Invicti skiller seg ut med sin «prøvebaserte skanning». Det er ofte mulig at uvanlige nettverksforhold eller ukjent API-atferd blir tolket som sikkerhetshull, som senere viser seg å være feil.
Dette sløser ressurser, ettersom alle rapporterte sårbarheter må skannes manuelt for å bekrefte at de ikke er falske positive. Invicti hevder at verktøyet deres er i stand til å gi et sterkt nok bevis for de rapporterte problemene, noe som reduserer tvilen om de funnet sikkerhetshullene.
Med selskaper som Sony, Religare, Coca-Cola og Huawei på kundelisten, kan du være sikker på at de gjør noe riktig. 🙂
SoapUI Pro
SoapUI Pro fra SmartBear er en intuitiv og enkel måte å lage API-tester og få nøyaktige, datadrevne rapporter om dem. Den integreres også godt med CI/CD-pipelinen, og sørger for at ingen nye kodetillegg kompromitterer API-sikkerheten.
SoapUI kan brukes med Swagger, OAS og andre populære API-standarder, noe som reduserer oppstartstiden betydelig. Med klienter som Microsoft, Cisco, MasterCard og Oracle, og planer som starter på 659 dollar per år, er dette et verktøy som kan være verdt å vurdere for sikrere API-er.
Okta
Prøv Okta for å gjøre det mulig for utviklerne å konsentrere seg om å forbedre brukeropplevelsen, samtidig som du sikrer virksomhetens data effektivt. Det tilbyr OAuth 2.0-autorisasjon og er designet for både mobil- og webapplikasjoner. Det er også kompatibelt med tredjeparts API-administrasjonstjenester.
Bruk Okta til å opprette, revidere og vedlikeholde alle policyene for API-tilgang gjennom brukervennlige konsoller uten behov for tilpasset kode. Det gir deg ekstra fleksibilitet, slik at du ikke trenger å sikre API-ene dine ved hjelp av ekstra gateway-instanser.
Okta omfatter identitetsdrevet policy for å kontrollere forskjellige typer brukere og tjenester under ett tak. Definer tilgang basert på brukerprofiler, nettverk, grupper, samtykke og klienter. Utvid tokens ved hjelp av dynamiske data fra dine interne systemer for å oppnå raskere integrasjon og sømløs migrering.
Det forenkler sentralisert administrasjon av API-er og lar deg beskytte API-ressurser. Okta fokuserer på sikkerhet ved å la deg sikre tilgangen mellom forskjellige mikrotjenester.
Konklusjon
Det er mange API-sikkerhetsverktøy tilgjengelig på markedet, enten det er åpen kildekode, gratis, kommersielle eller en kombinasjon av disse.
Prøv noen av dem fra listen og finn ut hva som passer best for dine behov.