MCS pilveplatvormi turvaaruanne

MCS pilveplatvormi turvaaruanne
SkyShip Dusk by SeerLight

Igasse kĂ”igi teenuste loomine hĂ”lmab pidevat tööd turvalisuse nimel. Turvalisus on pidev protsess, mis sisaldab toote kaitse pidevat analĂŒĂŒsi ja tĂ€iustamist, haavatavuste uudiste jĂ€lgimist ja palju muud. Nende hulgas on ka auditid. Auditid viiakse lĂ€bi nii omakĂ€eliselt kui ka vĂ€listest ekspertidest, kes saavad turvalisust oluliselt parandada, kuna nad ei ole projektiga sĂŒvitsi seotud ning neil on vĂ€rske vaatenurk.

Artikkel kÀsitleb just seda vÀrsket vaatenurka vÀlistelt ekspertidelt, kes aitasid Mail.ru Cloud Solutions (MCS) meeskonnal pilveteenust testida ja seda, mida nad avastasid. MCS valis "vÀlistena" Digital Security, mis on tuntud oma kÔrge ekspertiisi poolest infotehnoloogia ringkondades. Selles artiklis kÀsitleme mÔned huvitavad haavatavused, mis leiti vÀlishindamise kÀigus - nii et te ei satuks sarnastesse probleemidesse, kui loote oma pilveteenuse.

Toote kirjeldus

Mail.ru Cloud Solutions (MCS) on platvorm virtuaalse infrastruktuuri loomiseks pilves. See hÔlmab IaaS-e, PaaS-e ja valmistehtud rakenduste poodide turgu arendajatele. Arvestades MCS-i arhitektuuri, tuli toote turvalisust kontrollida jÀrgmistes suundades:

  • virtualiseerimiskeskkonna infrastruktuuri kaitse: hĂŒperviisorid, marsruutimine, tulemĂŒĂŒrid;
  • kliendi virtuaalse infrastruktuuri kaitse: isolatsioon ĂŒksteisest, sealhulgas vĂ”rgu, privaatsete vĂ”rkude ja SDN;
  • OpenStack ja selle avatud komponendid;
  • enda loodud S3;
  • IAM: mitmeĂŒĂŒrilised projektid rolli mudeliga;
  • Vision (masinĂ”pe): API ja haavatavused piltidega töötamisel;
  • veebiliides ja klassikalised veebirĂŒnnakud;
  • PaaS-komponentide haavatavused;
  • kĂ”igi komponentide API.

VÔib-olla on oluline edasise loo jaoks kÔik.

Milliseid töid viidi lÀbi ja miks need on vajalikud?

Turvaaudit on suunatud haavatavuste ja konfiguratsioonivigade tuvastamisele, mis vÔivad pÔhjustada isikuandmete lekkimist, tundlike andmete muutmist vÔi teenuste kÀttesaadavuse katkemist.

Töötamise kĂ€igus, mis kestab keskmiselt 1-2 kuud, kordavad audiitorid potentsiaalsete rĂŒndajate tegevusi ja otsivad valitud teenuse kliendi- ja serveripoolsetes osades haavatavusi. MCS-i pilveplatvormi auditi kontekstis on seatud jĂ€rgmised eesmĂ€rgid:

  1. Teenuse autentimise analĂŒĂŒs. Selle komponendi haavatavused vĂ”imaldaksid kohe sisse pÀÀseda teiste kontodele.
  2. Rollimudeli ja ligipÀÀsu piirangu uurimine erinevate kontode vahel. RĂŒndaja jaoks on juurdepÀÀs teiste virtuaalmasinatele ihatud eesmĂ€rk.
  3. Kliendipoolsete haavatavuste tundmine. XSS/CSRF/CRLF/jne. Kas on olemas vĂ”imalus rĂŒnnata teisi kasutajaid pahatahtlike linkide kaudu?
  4. Serveripoolsete haavatavuste analĂŒĂŒs: RCE ja igasugused sisestused (SQL/XXE/SSRF jne). Serveri haavatavused on tavaliselt keerulisemad leida, kuid need vĂ”ivad paljusid kasutajaid kohe kompromiteerida.
  5. Kasutajasegmentide isolatsiooni analĂŒĂŒs vĂ”rgu tasandil. RĂŒndaja jaoks suurendab isolatsiooni puudumine oluliselt rĂŒnnakupinda teistele kasutajatele.
  6. Äriloogika analĂŒĂŒs. Kas on vĂ”imalik petta Ă€ri ja luua virtuaalmasinaid tasuta?

KĂ€esolevas projektis tehti töid „Gray-box” mudeli kohaselt: audiitorid suhtlesid teenusega tavakasutajate Ă”igustes, kuid olid osaliselt tutvunud API lĂ€htekoodidega ja said arendajatelt detaile kĂŒsida. Üldiselt on see kĂ”ige mugavam ja samas piisavalt realistlik töömeetod: siseinformatsiooni saab rĂŒndaja nagunii koguda, see on vaid aja kĂŒsimus.

Leitud haavatavused

Enne kui audiitor hakkab saatma erinevaid payload’e (rĂŒndeluba, mille abil rĂŒnnak toimub) juhuslikesse kohtadesse, on oluline aru saada, kuidas kĂ”ik töötab, millised funktsioonid on esindatud. See vĂ”ib tunduda mĂ”ttetu tegevusena, kuna enamikus uuritud kohtades ei pruugi olla haavatavusi. Kuid alles rakenduse struktuuri ja selle tööloogika mĂ”istmine vĂ”imaldab leida kĂ”ige keerulisemaid rĂŒnnakusuundi.

Oluline on leida kohad, mis tunduvad kahtlased vÔi mis erinevad mÀrkimisvÀÀrselt teistest. Ja esimene ohtlik haavatavus leiti just sellisel moel.

IDOR

IDOR-haavat (Insecure Direct Object Reference, ebaturvalised otseviidatud objektid) on ĂŒks levinumaid haavatavusi Ă€riloogikas, mis vĂ”imaldab mingil viisil pÀÀseda objektidele, millele tegelikult juurdepÀÀs pole lubatud. IDOR-haavatavused loovad vĂ”imaluse saada kasutaja teavet erineva kriitilisuse tasemega.

Üks IDOR-i variante on toimingute tegemine sĂŒsteemi objektidega (kasutajate, pangakontode, ostukorvis olevate kaupade) juurdepÀÀsuidentifikaatoritega manipuleerimise kaudu. See viib kĂ”ige ettearvamatumate tagajĂ€rgedeni. NĂ€iteks saab see vĂ”imaldada raha saatja konto vahetamist, mille kaudu on vĂ”imalik teistelt kasutajatelt raha varastada.

MCS-i juhtumil avastasid audiitorid just IDOR-haavatavuse, mis oli seotud turvamata identifikaatoritega. Kasutaja isiklikus kontoris kasutati igasuguste objektide juurde pÀÀsemiseks UUID identifikaatoreid, mis tundusid, nagu ĂŒtlevad turvaeksperdid, muljetavaldavalt purustamatud (st kaitstuna brute force rĂŒnnakute eest). Kuid teatud ĂŒksuste jaoks tuvastati, et rakenduse kasutajate teabe saamiseks kasutati tavapĂ€raseid ettearvatavaid numbreid. Arvan, et te juba aimate, et kasutaja ID-d oli vĂ”imalik muuta ĂŒhe vĂ”rra, uuesti pĂ€ring saata ja seega saada teavet ACL-i (access control list, andmetele juurdepÀÀsu reeglid protsesside ja kasutajate jaoks) piirangutest mööda.

Serveri kĂŒlgpĂ€ringu valevormistamine (SSRF)

Avatud lĂ€htekoodiga tooted on head selle poolest, et nende kohta on tohutult foorumeid, kus on pĂ”hjalikud tehnilised kirjelduse probleeme ja, kui teil vedas, ka lahenduste kirjeldusi. Kuid selle mĂŒndi on ka teine kĂŒlg: sama detailselt on kirja pandud ka tuntud haavatavused. NĂ€iteks OpenStacki foorumis on suurepĂ€rased kirjeldused haavatavustest. [XSS] ja [SSRF], mida kuidagi keegi ei kiirusta parandama.

Rakenduste sage funktsionaalsus on vÔimalus, et kasutaja saadab serverisse lingi, mille kaudu server liigub (nÀiteks pildi laadimiseks mÀÀratud allikast). Kui linkide vÔi serveri kasutajatele tagastatavate vastuste piisavat filtreerimist ei tehta, saavad pahatahtlikud isikud sellist funktsionaalsust hÔlpsasti Àra kasutada.

SSRF-haavat vĂ”ivad oluliselt edendada rĂŒnnaku arengut. RĂŒndaja vĂ”ib saada:

  • piiratud juurdepÀÀsu rĂŒnnatud kohalikule vĂ”rgule, nĂ€iteks vaid teatud vĂ”rgu segmentidele ja teatud protokolli kaudu;
  • tĂ€ielikku juurdepÀÀsu kohalikule vĂ”rgule, kui on vĂ”imalik rakendustaseme allapoole viimine transporttasemele ja seega tĂ€ielik rakendustaseme koormuse juhtimine;
  • juurdepÀÀsu kohalikele failidele serveris (kui toetatakse skeemi file://);
  • ja palju muud.

OpenStackis on soovmĂ”tlemisega SSRF-haavatavus teada ammu: serverile pöördudes ei saa sa temalt vastust, kuid saad erinevaid tĂŒĂŒpe vigu/viivitusi, sĂ”ltuvalt pĂ€ringu tulemusest. Selle pĂ”hjal on vĂ”imalik skaneerida porte sisemiste vĂ”rkude hostidel, millel on kĂ”ikvĂ”imalikud tagajĂ€rjed, mida ei tohiks alahinnata. NĂ€iteks vĂ”iks tootel olla API tagasipöördlusalal, mis on kergesti ligipÀÀsetav ainult ettevĂ”tte vĂ”rgust. Dokumentide (Ă€rge unustage siseringi) olemasolul vĂ”ib rĂŒndaja kasutada SSRF-i, et pöörduda sisemiste meetodite poole. NĂ€iteks, kui on mingil viisil saanud ligikaudse kasulike URL-ide nimekirja, saab SSRF-i abil nendega liikuda ja esitada pĂ€ringu – tinglikult öeldes, kanda raha kontolt teisele vĂ”i muuta limiite.

See ei ole esimene kord, kui OpenStackis avastatakse SSRF-haavatavus. Eelmine kord oli vÔimalus laadida ISO-pilte VM-ide jaoks otse lingi kaudu, mis tÔi kaasa sarnased tagajÀrjed. Praegu on see funktsioon OpenStackist eemaldatud. Tundub, et kogukond pidas seda kÔige lihtsamaks ja usaldusvÀÀrsemaks lahenduseks probleemile.

Ja selles avaliku juurdepÀÀsuga raportis teenusest HackerOne (h1) ei nÀita pime SSRF-i ekspluateerimine koos metadata lugemise vÔimalusega juurdepÀÀsu saamise Root- Ôigustele kogu Shopify infrastruktuurile.

MCS-is leidis kaks kohta sarnase funktsiooniga SSRF-haavatavusi, kuid nende Àrakasutamine oli praktiliselt vÔimatu tulekahjukaitsete ja teiste turvameetmete tÔttu. Igal juhul parandas MCS selle probleemi, ilma et oleks oodanud kogukonda.

XSS asemel „shellide“ laadimist

Hoolimata sadadest kirjutatud uuringutest on aastast aastasse XSS (cross-site scripting rĂŒnnak) endiselt kĂ”ige tihedamini esinev veeb-haavatavus (vĂ”i rĂŒnnak?).

Failide ĂŒleslaadimine on iga turva-uuringu tegija lemmikoht. Sageli on vĂ”imalik laadida ĂŒles suvaline skript (asp/jsp/php) ja kĂ€ivitada operatsioonisĂŒsteemi kĂ€ske, pentesterite terminoloogias - "shell'i ĂŒleslaadimine". Kuid sarnaste haavatavuste populaarsus toimib mĂ”lemas suunas: neid meenutatakse ja arendatakse nende vastu vahendeid, nii et viimasel ajal on tĂ”enĂ€osus "shell'i ĂŒleslaadimiseks" lĂ€hemas nullile.

RĂŒndemeeskond, keda esindab Digital Security, oli Ă”nnelik. Okei, MCS serveripoolne sisu kontrollis ĂŒleslaaditud failide sisu, lubatud olid vaid pildid. Kuid SVG on samuti pilt. Kuidas vĂ”ivad SVG pildid ohtlikud olla? Selle poolest, et neid saab integreerida JavaScripti fragmente!

Selgus, et ĂŒleslaaditud failid on kĂ”igi MCS teenuse kasutajate jaoks kergesti ligipÀÀsetavad - see tĂ€hendab, et saab rĂŒnnata teisi pilvekasutajaid, sealhulgas administraatoreid.

MCS pilveplatvormi turvaaruanne
XSS-rĂŒnnaku kaudu toimimise nĂ€ide varguse vormi kaudu

XSS-rĂŒnnaku kasutamise nĂ€ited:

  • Miks pĂŒĂŒda sessiooni varastada (veel enam, et praegu on igal pool HTTP-Only kĂŒpsised, mis on kaitstud JS-skriptide varastamise eest), kui ĂŒleslaaditud skript saab kohe suhelda ressursi API-ga? Sellisel juhul vĂ”ib koormus XHR-pĂ€ringute kaudu muuta serveri konfiguratsiooni, nĂ€iteks lisada rĂŒndaja avaliku SSH-vĂ”tme ja saada SSH-juurdepÀÀsu serverile.
  • Kui CSP-poliitika (sisu kaitse poliitika) keelab JavaScripti sisestamise, saab rĂŒndaja ilma selleta hakkama. Puhta HTMLiga saab luua vale sisestusvormi ja varastada administraatori parooli sellise arenenud petmise kaudu: petusait on kasutaja jaoks samal URL-il, ja on keerulisem seda tuvastada.
  • LĂ”puks vĂ”ib rĂŒndaja korraldada kliendi DoS — seadistades kĂŒpsised, mis on suuremad kui 4 Kb. Kasutajale piisab, kui ta avab lingi - ja terve sait muutub kĂ€ttesaamatuks, kuni ta ei mĂ”tle spetsiaalselt oma brauseri puhastamise peale: suuremas enamuses juhtudest keeldub veebiserver sellist kasutajat vastu vĂ”tma.

Vaadakem veel ĂŒhte avastatud XSS-i nĂ€idet, seekord keerulisema Ă€rakasutamisega. Teenus MCS vĂ”imaldab tulemĂŒĂŒri seadistusi rĂŒhmadena liita. RĂŒhma nimedes avastati XSS. Selle eripĂ€ra seisnes selles, et vektor ei töötanud kohe, mitte reeglite nimekirja vaatamise ajal, vaid rĂŒhma kustutamise ajal:

MCS pilveplatvormi turvaaruanne

See, the scenario unfolds like this: an attacker creates a firewall rule with a "load" in its name, the administrator notices it after some time, initiates the deletion process. And that’s when the malicious JS kicks in.

To protect against XSS in uploaded SVG images (if they cannot be avoided), the Digital Security team recommended to MCS developers:

  • Host files uploaded by users on a separate domain unrelated to the "cookie". The script will execute in the context of another domain and will not pose a threat to MCS.
  • In the server's HTTP response, return the header "Content-disposition: attachment". Then files will be downloaded by the browser, not executed.

Moreover, there are many ways available for developers to mitigate XSS exploitation risks:

  • using the "HTTP Only" flag to make session 'Cookies' headers inaccessible to malicious JavaScript;
  • a properly implemented CSP policy will significantly complicate XSS exploitation for an attacker;
  • modern templating engines, such as Angular or React, automatically sanitize user data before it’s displayed in the user’s browser.

Two-factor authentication vulnerabilities

To enhance account security, users are always advised to enable 2FA (two-factor authentication). Indeed, this is an effective way to prevent an attacker from gaining access to the service if the user’s credentials have been compromised.

But does the use of a second authentication factor always guarantee the safety of an account? There are security issues in 2FA implementations:

  • Brute force of OTP code (one-time codes). Despite the simplicity of exploitation, such mistakes as lack of brute force protection for OTP are found even in large companies: the Slack case, the Facebook case.
  • Weak generation algorithm, for instance, predictability of the next code.
  • Logical errors, for example, the ability to request someone else's OTP on your phone, like this oli in Shopify.

In MCS, 2FA is implemented based on Google Authenticator and Duo. The protocol itself has stood the test of time, but the implementation of code verification on the application side should be checked.

In MCS, 2FA is used in several places:

  • Kasutaja autentimise korral. Siin on olemas kaitse bruteforce'i rĂŒnnakute vastu: kasutajal on vaid mĂ”ned katsetused ĂŒhekordse parooli sisestamiseks, pĂ€rast mida blokeeritakse sisestamine mĂ”neks ajaks. See takistab OTP-d brute-force meetodil kindlaks mÀÀrata.
  • Offlines backup-koodide genereerimise ajal 2FA tĂ€itmiseks ning selle vĂ€ljalĂŒlitamisel. Siin ei olnud bruteforce'i kaitset, mis vĂ”imaldas, kui kontol oli parool ja aktiivne sessioon, backup-koodide uuesti genereerimist vĂ”i 2FA tĂ€ielikku vĂ€ljalĂŒlitamist.

Arvestades, et backup-koodid paiknesid samas vÀÀrtuste vahemikus nagu rakenduse poolt genereeritud OTP-d, oli vĂ”imalus koode lĂŒhikese aja jooksul Ă€ra arvata mĂ€rkimisvÀÀrselt suurem.

MCS pilveplatvormi turvaaruanne
OTP proovimise protsess 2FA vĂ€ljalĂŒlitamiseks tööriista "Burp: Intruder" abil.

Tulemus

Üldiselt osutus MCS toode turvaliseks. Auditite ajal ei suutnud pen-testerite meeskond klientide virtuaalmasinatele ja nende andmetele juurde pÀÀseda ning MCS meeskond parandas leitud haavatavused kiiresti.

Kuid siinkohal on oluline mÀrkida, et turvalisus on pidev töö. Teenused ei ole staatilised, need arenevad pidevalt. Toodet, mis oleks tÀielikult haavatavusteta, on vÔimatu vÀlja töötada. Kuid neid saab Ôigeaegselt tuvastada ja kordumise vÔimalust vÀhendada.

KĂ”ik eelnevalt mainitud haavatavused MCS-is on nĂŒĂŒdseks parandatud. Uute haavatavuste arvu vĂ€hendamiseks ja nende eksisteerimise aja lĂŒhendamiseks jĂ€tkab platvormi meeskond jĂ€rgmistega:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster