Sikkerhetsrevisjon av skyplattformen MCS

Sikkerhetsrevisjon av skyplattformen MCS
SkyShip Dusk av SeerLight

Bygging av enhver tjeneste involverer nÞdvendigvis kontinuerlig arbeid med sikkerhet. Sikkerhet er en kontinuerlig prosess som inkluderer lÞpende analyse og forbedring av produktets beskyttelse, overvÄking av nyheter om sÄrbarheter, og mye mer. Dette inkluderer ogsÄ revisjoner. Revisjoner gjennomfÞres bÄde med interne ressurser og av eksterne eksperter, som kan gi betydelig hjelp med sikkerheten, da de ikke er dypt involvert i prosjektet og har et friskt blikk.

Artikkelen handler om dette friske blikket fra eksterne eksperter, som hjalp Mail.ru Cloud Solutions (MCS) med Ă„ teste skyttjenesten, og hva de fant. Som «eksterne krefter» valgte MCS selskapet Digital Security, kjent for sin hĂžye ekspertise innen informasjonssikkerhet. I denne artikkelen vil vi gjennomgĂ„ noen interessante sĂ„rbarheter som ble oppdaget i lĂžpet av den eksterne revisjonen – slik at du unngĂ„r de samme feilene nĂ„r du lager din skyttjeneste.

Produktbeskrivelse

Mail.ru Cloud Solutions (MCS) er en plattform for bygging av virtuell infrastruktur i skyen. Den inkluderer IaaS-er, PaaS-er, og et marked for ferdige applikasjonsbilder for utviklere. Med tanke pÄ MCSs arkitektur var det nÞdvendig Ä sjekke sikkerheten til produktet innen fÞlgende omrÄder:

  • beskyttelse av virtualiseringsmiljĂžets infrastruktur: hypervisorer, ruting, brannmurer;
  • beskyttelse av kundens virtuelle infrastruktur: isolasjon fra hverandre, inkludert nettverksisolasjon, private nettverk i SDN;
  • OpenStack og dets Ă„pne komponenter;
  • Egenutviklet S3;
  • IAM: flere leietakerprosjekter med rollemodell;
  • Vision (maskinsyn): API-er og sĂ„rbarheter ved arbeid med bilder;
  • webgrensesnitt og klassiske webangrep;
  • sĂ„rbarheter i PaaS-komponenter;
  • API-er for alle komponenter.

Kanskje det viktigste for den videre historien – er alt.

Hvilke arbeider ble utfĂžrt og hvorfor er de nĂždvendige?

Sikkerhetsrevisjon er rettet mot Ä avdekke sÄrbarheter og konfigurasjonsfeil som kan fÞre til lekkasje av personlig informasjon, modifikasjon av sensitiv informasjon eller brudd pÄ tilgjengeligheten av tjenester.

I lÞpet av arbeidet, som varer i gjennomsnitt 1-2 mÄneder, gjentar revisorer handlingene til potensielle angripere og leter etter sÄrbarheter i bÄde klient- og serverdelen av den valgte tjenesten. I konteksten av revisjonen av den skybaserte plattformen MCS ble fÞlgende mÄl definert:

  1. Analyse av autentisering i tjenesten. SÄrbarheter i denne komponenten kunne umiddelbart gi tilgang til andres kontoer.
  2. Studie av rollemodellen og tilgangsbegrensninger mellom forskjellige kontoer. For en angriper er muligheten til Ä fÄ tilgang til en annen virtuell maskin et Þnskelig mÄl.
  3. SÄrbarheter i klientdelen. XSS/CSRF/CRLF/etc. Finnes det muligheter for Ä angripe andre brukere via ondsinnede lenker?
  4. SÄrbarheter i serverdelen: RCE og diverse injeksjoner (SQL/XXE/SSRF osv.). Server-sÄrbarheter er vanligvis vanskeligere Ä finne, men de fÞrer til kompromittering av flere brukere pÄ en gang.
  5. Analyse av isolering av brukersegmenter pÄ nettverksnivÄ. For en angriper Þker mangel pÄ isolasjon angrepsflaten betydelig for andre brukere.
  6. Analyse av forretningslogikk. Kan man lure bedriften til Ă„ opprette virtuelle maskiner gratis?

I dette prosjektet ble arbeidet utfÞrt med en «Gray-box» modell: revisorer interagerte med tjenesten med privilegier som vanlige brukere, men hadde delvis tilgang til kildekoden til API-en og muligheten til Ä avklare detaljer med utviklerne. Vanligvis er dette den mest praktiske, men ogsÄ realistiske arbeidsmodellen: intern informasjon kan fortsatt samles av en angriper, det er bare et spÞrsmÄl om tid.

Funnet sÄrbarheter

FÞr revisoren begynner Ä sende forskjellige payloads (nyttelast for Ä gjennomfÞre angrepet) til tilfeldige steder, er det nÞdvendig Ä forstÄ hvordan alt fungerer, og hvilken funksjonalitet som finnes. Det kan virke som en unyttig aktivitet, siden det i de fleste undersÞkte steder ikke vil vÊre noen sÄrbarheter. Men kun forstÄelsen av applikasjonens struktur og logikken i dens drift vil gi mulighet til Ä finne de mest komplekse angrepsvektorene.

Det er viktig Ä finne steder som virker suspekte eller som avviker betydelig fra andre. Og den fÞrste farlige sÄrbarheten ble faktisk funnet pÄ akkurat denne mÄten.

IDOR

IDOR-sÄrbarheter (Insecure Direct Object Reference, usikre direkte objektreferanser) er en av de vanligste typene sÄrbarheter innenfor forretningslogikk, som pÄ en eller annen mÄte lar uautoriserte fÄ tilgang til objekter de ikke har tillatelse til Ä se. IDOR-sÄrbarheter gir mulighet til Ä hente informasjon om brukere med variabel kritikalitet.

En variant av IDOR er Ă„ utfĂžre handlinger med systemobjekter (brukere, bankkonti, produkter i handlekurven) ved manipulasjon av tilgangsidentifikatorer til disse objektene. Dette kan fĂžre til de mest uforutsigbare konsekvenser. For eksempel kan det gi mulighet til Ă„ bytte senderkonto for pengeoverfĂžringer, og dermed stjele penger fra andre brukere.

I MCS-tilfellet oppdaget revisorer akkurat en IDOR-sÄrbarhet relatert til usikre identifikatorer. I brukerens personlige omrÄde ble UUID-identifikatorer brukt for Ä fÄ tilgang til alle objekter, som virket, som sikkerhetsfagfolk sier, imponerende ubrytelige (det vil si beskyttet mot brute-force-angrep). Men for bestemte entiteter ble det oppdaget at vanlige forutsigbare tall ble brukt for Ä hente informasjon om brukerne av applikasjonen. Jeg tror du kan gjette at man kunne endre bruker-ID-en med én, sende forespÞrselen pÄ nytt og pÄ den mÄten fÄ informasjon utenom ACL (access control list, datatilgangsregler for prosesser og brukere).

Server Side Request Forgery (SSRF)

OpenSource-produkter er gode fordi det finnes et enormt antall foruminnlegg med detaljerte tekniske beskrivelser av problemer som oppstÄr, og hvis du er heldig, ogsÄ med beskrivelser av lÞsninger. Men denne medaljen har en bakside: kjente sÄrbarheter er ogsÄ grundig dokumentert. For eksempel finnes det flotte beskrivelser av sÄrbarheter pÄ OpenStack-forumet. [XSS] og [SSRF], som ingen ser ut til Ä vÊre ivrige etter Ä fikse.

En vanlig funksjonalitet i applikasjoner er muligheten for brukeren Ä sende en lenke til serveren, som serveren deretter oppholder seg pÄ (for eksempel for Ä laste opp et bilde fra en angitt kilde). Med utilstrekkelig filtrering av sikkerhetsmidler for de faktiske lenkene eller responsene som serveren gir til brukerne, kan ondsinnede aktÞrer enkelt utnytte slik funksjonalitet.

SSRF-sÄrbarheter kan sterkt fremme utviklingen av angrepet. Angriperen kan fÄ:

  • begrenset tilgang til det angrepne lokale nettverket, for eksempel bare til bestemte nettverkssegmenter og via et bestemt protokoll;
  • full tilgang til det lokale nettverket, hvis det er mulig Ă„ nedgradere fra applikasjonsnivĂ„ til transportnivĂ„, og dermed full kontroll over belastningen pĂ„ applikasjonsnivĂ„;
  • tilgang til Ă„ lese lokale filer pĂ„ serveren (hvis file:/// schema stĂžttes);
  • og mye mer.

I OpenStack har en SSRF-sÄrbarhet lenge vÊrt kjent med en "blind" karakter: nÄr du kontakter serveren fÄr du ikke noe svar, men du mottar ulike typer feil/ventetid, avhengig av resultatet av forespÞrselen. Basert pÄ dette kan man gjennomfÞre portskanning pÄ verter i det interne nettverket, med alle fÞlger som ikke bÞr undervurderes. For eksempel kan det vÊre et API for back-office, tilgjengelig kun fra det lokale nettverket. Med dokumentasjon ( Ikke glem innsiderne) kan en angriper bruke SSRF for Ä kontakte interne metoder. For eksempel, hvis det pÄ en eller annen mÄte har lykkes Ä fÄr en omtrentlig liste over nyttige URL-er, kan man bruke SSRF for Ä navigere gjennom dem og utfÞre forespÞrselen - for Ä si det slik, overfÞre penger fra en konto til en annen eller endre grenser.

Dette er ikke fÞrste gang SSRF-sÄrbarhet er oppdaget i OpenStack. Tidligere var det mulig Ä laste opp ISO-bilder av VM-er via direkte linker, noe som ogsÄ fÞrte til lignende konsekvenser. Denne funksjonen er nÄ fjernet fra OpenStack. Muligens ansÄ fellesskapet dette som den enkleste og mest pÄlitelige lÞsningen pÄ problemet.

Og i dette en offentlig tilgjengelig rapport fra tjenesten HackerOne (h1) fÞrer utnyttelse av ikke-blind SSRF med mulighet for Ä lese metadata av instansen til Ä oppnÄ Root-tilgang til hele Shopify-infrastrukturen.

I MCS ble det oppdaget SSRF-sÄrbarheter pÄ to steder med lignende funksjonalitet, men de var praktisk talt umulige Ä utnytte pÄ grunn av brannmurer og andre beskyttelser. Uansett har MCS-teamet fikset dette problemet, uten Ä vente pÄ fellesskapet.

XSS i stedet for Ă„ laste opp "shells"

Til tross for hundrevis av skrevne studier, er XSS (Cross-Site Scripting-angrep) fremdeles den mest utbredte web-sÄrbarheten (eller angrepet?).

Filopplasting er et yndet sted for enhver sikkerhetsforsker. Det viser seg ofte at man kan laste opp vilkÄrlige skript (asp/jsp/php) og utfÞre OS-kommandoer, i terminologien til pentestere kalt Ä «laste opp en shell». Men populariteten til slike sÄrbarheter fungerer begge veier: folk husker dem og utvikler verktÞy mot dem, sÄ sannsynligheten for Ä «laste opp en shell» har de siste Ärene nÊrmet seg null.

Angrepslaget (representert av Digital Security) hadde flaks. Greit, i MCS ble innholdet av de opplastede filene kontrollert pÄ serveren; kun bilder ble tillatt. Men SVG er ogsÄ et bilde. Hva kan vÊre farlig med SVG-filer? Det at man kan integrere JavaScript-fragmenter i dem!

Det viste seg at de opplastede filene var tilgjengelige for alle brukere av MCS-tjenesten — noe som betyr at man kunne angripe andre brukere av skyen, nemlig administratorer.

Sikkerhetsrevisjon av skyplattformen MCS
Eksempel pÄ injeksjon via en XSS-angrep phishing-logginn-skjema.

Eksempler pÄ utnyttelse av XSS-angrep:

  • Hvorfor prĂžve Ă„ stjele en Ăžkt (spesielt siden det nĂ„ er HTTP-Only-cookies beskyttet mot tyveri via js-skript) nĂ„r det opplastede skriptet kan kommunisere direkte med ressursens API? I sĂ„ fall kan nyttelasten gjennom XHR-forespĂžrslene endre serverkonfigurasjonen, for eksempel legge til en Ă„pen SSH-nĂžkkel for angriperen og oppnĂ„ SSH-tilgang til serveren.
  • Hvis CSP-politikken (Content Security Policy) forbyr injeksjon av JavaScript, kan angriperen klare seg uten det. Med kun HTML kan man lage en falsk innloggingsform og stjele administratorpassordet gjennom en slik avansert phishing-teknikk: phishing-siden for brukeren vises pĂ„ samme URL, noe som gjĂžr det vanskeligere for brukeren Ă„ oppdage.
  • Til slutt kan angriperen utfĂžre en klient-DoS — ved Ă„ sette Cookies til en stĂžrrelse stĂžrre enn 4 kB. Brukeren trenger bare Ă„ Ă„pne lenken Ă©n gang — og hele nettstedet blir utilgjengelig, inntil man innser at man mĂ„ tĂžmme nettleseren sin: i de fleste tilfeller vil webserveren nekte Ă„ ta imot en slik klient.

La oss se pÄ eksempelet med enda en oppdaget XSS, denne gangen med en mer utspekulert utnyttelse. Tjenesten MCS lar deg gruppere brannmurinnstillinger. Det var XSS i navnet pÄ gruppen. Dens spesialitet var at vektoren ikke ble aktivert umiddelbart, ikke ved visning av regeloversikten, men ved sletting av gruppen:

Sikkerhetsrevisjon av skyplattformen MCS

Det vil si, scenariet ble fÞlgende: en angriper lager en brannmurregel med «belastning» i navnet, administratoren legger merke til det etter en stund, og initierer prosessen med Ä slette det. Og da slÄr den skadelige JS inn.

Utviklerne av MCS anbefalte for Ä beskytte mot XSS i opplastede SVG-bilder (hvis de ikke kan unngÄs):

  • Å plassere filer som lastes opp av brukere pĂ„ et separat domene, som ikke har noe med «kakene» Ă„ gjĂžre. Skriptet vil bli utfĂžrt i konteksten av et annet domene og vil ikke utgjĂžre en trussel mot MCS.
  • Å gi headeren «Content-disposition: attachment» i HTTP-serverens svar. Da vil filene bli lastet ned av nettleseren i stedet for Ă„ bli utfĂžrt.

I tillegg er det nÄ mange metoder tilgjengelige for utviklere for Ä dempe risikoen for utnyttelse av XSS:

  • ved hjelp av flagget «HTTP Only» kan sesjonsheaderne «Cookies» gjĂžres utilgjengelige for skadelig JavaScript;
  • en riktig implementert CSP-politikk vil betydelig komplisere utnyttelse av XSS for en angriper;
  • moderne malere, som Angular eller React, renser automatisk brukerdata fĂžr de vises i brukerens nettleser.

SÄrbarheter i tofaktorautentisering

For Ä Þke sikkerheten til kontoene anbefales det alltid at brukerne aktiverer 2FA (tofaktorautentisering). Faktisk er dette en effektiv mÄte Ä hindre en angriper i Ä fÄ tilgang til tjenesten hvis brukerens legitimasjon er kompromittert.

Men gir alltid bruk av den andre autentiseringsfaktoren garanti for at kontoen forblir sikker? I implementeringen av 2FA kan det oppstÄ fÞlgende sikkerhetsproblemer:

  • Grovt gjettingsangrep pĂ„ OTP-koden (engangskodene). Til tross for enkelheten i utnyttelsen, finnes slike feil, som mangel pĂ„ beskyttelse mot bruteforce OTP, ogsĂ„ hos store selskaper: tilfellet Slack, tilfellet Facebook.
  • En svak genereringsalgoritme, for eksempel muligheten til Ă„ forutsi neste kode.
  • Logiske feil, som muligheten til Ă„ be om noen andres OTP pĂ„ sin egen telefon, slik som det var hos Shopify.

I tilfelle MCS er 2FA implementert pÄ basis av Google Authenticator og Duo. Selve protokollen er allerede testet over tid, men implementeringen av koden pÄ applikasjonssiden bÞr sjekkes.

I MCS brukes 2FA flere steder:

  • Ved autentisering av brukeren. Det er beskyttelse mot brute-force angrep her: brukeren har bare et begrenset antall forsĂžk med engangspassordet, deretter blir inntastingen blokkert i en periode. Dette hindrer muligheten for Ă„ gjette OTP gjennom brute-forcing.
  • Ved generering av offline backup-koder for Ă„ utfĂžre 2FA, samt nĂ„r denne deaktiveres. Her var det ikke implementert noen bruksbeskyttelse, noe som tillot, med riktig passord for kontoen og en aktiv Ăžkt, Ă„ regenerere backup-koder eller deaktivere 2FA helt.

Gitt at backup-kodene lÄ innen samme verdiomrÄde som de genererte OTP-ene, var sjansen for Ä gjette koden pÄ kort tid betydelig hÞyere.

Sikkerhetsrevisjon av skyplattformen MCS
Prosessen med Ä gjette OTP for Ä deaktivere 2FA ved hjelp av verktÞyet «Burp: Intruder».

Resultatet

Totalt sett har MCS som produkt vist seg Ä vÊre sikkert. I lÞpet av revisjonen klarte pentest-teamet ikke Ä fÄ tilgang til kundens VM-er og deres data, og de identifiserte sÄrbarhetene ble raskt utbedret av MCS-teamet.

Men det er viktig Ă„ merke seg at sikkerhet er en kontinuerlig prosess. Tjenester er ikke statiske, de utvikler seg stadig. Å utvikle et produkt helt uten sĂ„rbarheter er umulig. Men man kan oppdage dem i tide og redusere sjansen for at de oppstĂ„r igjen.

NÄ er alle de nevnte sÄrbarhetene i MCS allerede utbedret. For Ä gjÞre antallet nye sÄrbarheter minimalt og redusere tiden de eksisterer, fortsetter plattformteamet Ä gjÞre fÞlgende:

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster