
by SeerLight
Iga teenuse loomine hĂ”lmab vĂ€ltimatult pidevat tööd turvalisuse nimel. Turvalisus on pidev protsess, mis sisaldab toote kaitse pidevat analĂŒĂŒsi ja parandamist, turvaaukudest teadlikkuse jĂ€lgimist ja palju muud. Nende hulka kuuluvad ka auditid. Auditit saab teostada nii sisemiste jĂ”udude kui ka vĂ€listest ekspertidest, kes suudavad oluliselt aidata turvalisuse tagamisel, kuna nad ei ole projektiga sĂŒvitsi seotud ja nĂ€evad seda vĂ€rske pilguga.
Artikkel kĂ€sitleb seda vĂ€rsket pilku vĂ€listelt ekspertidelt, kes aitasid Mail.ru Cloud Solutions (MCS) meeskonnal testida nende pilveteenust, samuti seda, mida nad avastasid. âVĂ€listenaâ valis MCS ettevĂ”tte Digital Security, mis on tuntud oma kĂ”rge ekspertiisi poolest infosĂŒsteemide valdkonnas. KĂ€esolevas artiklis vaatleme mĂ”ningaid huvitavaid turvaauke, mis leiti vĂ€list auditi kĂ€igus â et te ei langeks samadesse lĂ”ksudesse, kui loote oma pilveteenust.
Toote kirjeldus
â on pilvialguste virtuaalinfrastruktuuri loomise platvorm. See hĂ”lmab IaaS-e, PaaS-e ning valmis rakenduspiltide turgu arendajatele. Arvestades MCS arhitektuuri, tuli toote turvalisust kontrollida jĂ€rgmistes suundades:
- virtuaalsete keskkondade infrastruktuuri kaitse: hĂŒperviisorid, marsruutimine, tulemĂŒĂŒrid;
- klientide virtuaalse infrastruktuuri kaitse: ĂŒksteisest isoleerimine, sealhulgas vĂ”rgu, privaatsed vĂ”rgud SDN-is;
- OpenStack ja selle avatud komponendid;
- ise loodud S3;
- IAM: multiteenuste projektid, millel on rollimudel;
- Vision (masinÔpe): API-d ja haavatavused piltidega töötamisel;
- veebiliides ja klassikalised veebirĂŒnnakud;
- PaaS-komponentide haavatavused;
- kÔigi komponentide API-d.
TÔenÀoliselt on kÔik mÀrkimisvÀÀrne edasise loo jaoks.
Millised tööd viidi lÀbi ja miks need on vajalikud?
Turvaauditi eesmÀrk on tuvastada haavatavusi ja konfiguratsioonivigu, mis vÔivad viia isikuandmete lekkeni, tundliku teabe muutmiseni vÔi teenuste saadavuse rikkumiseni.
Tööde kĂ€igus, mis kestavad keskmiselt 1-2 kuud, kordavad audiitorid potentsiaalsete rĂŒndajate samme ja otsivad nĂ”rkusi valitud teenuse kliendi- ja serveripoolsetes osades. MCS-i pilveplatvormi auditi kontekstis on seatud jĂ€rgmised eesmĂ€rgid:
- Teenuse autentimise analĂŒĂŒs. NĂ”rkused selles komponendis vĂ”iksid vĂ”imaldada kohe pÀÀseda teiste kontode juurde.
- Rollimudeli ja juurdepÀÀsu piirangute uurimine erinevate kontode vahel. RĂŒndaja jaoks on soovitav eesmĂ€rk pÀÀseda ligi kellegi teise virtuaalsele masinale.
- Kliendipoolsete nĂ”rkuste uurimine. XSS/CSRF/CRLF/jne. Kas on vĂ”imalus rĂŒnnata teisi kasutajaid lĂ€bi pahatahtlike linkide?
- Serveripoolsete nĂ”rkuste uurimine: RCE ja igasugused sĂŒstikud (SQL/XXE/SSRF jne). Serveri nĂ”rkusi on tavaliselt keerulisem leida, kuid need aitavad kompromiteerida korraga mitmeid kasutajaid.
- Kasutaja segmentide isolatsiooni analĂŒĂŒs vĂ”rgutasandil. RĂŒndaja jaoks suurendab isolatsiooni puudumine oluliselt teiste kasutajate rĂŒndepinda.
- Ăripartneri loogika analĂŒĂŒs. Kas on vĂ”imalik petta Ă€ri ja luua virtuaalseid masinaid tasuta?
Selles projektis viidi tööd lĂ€bi 'Gray-box' mudeli alusel: auditeerijad suheldes teenusega, millega neil olid tavad kasutaja Ă”igused, kuid osaliselt oli neil juurdepÀÀs API algtekstidele ja vĂ”imalus arendajatelt detaile tĂ€psustada. See on tavaliselt kĂ”ige mugavam ja samas piisavalt realistlik töömudel: siseteavet saab ikkagi kurjategija kĂ€tte, see on vaid aja kĂŒsimus.
Leitud haavatavused
Enne kui auditeerija hakkab saatma erinevaid payload'e (rĂŒndevahend, millega rĂŒnnakut viiakse lĂ€bi) juhuslikesse kohtadesse, tuleb aru saada, kuidas kĂ”ik töötab, milline funktsionaalsus on olemas. See vĂ”ib tunduda kasutu tegevusena, kuna enamikes uuritud kohtades ei pruugi ĂŒhtegi haavatavust olla. Kuid ainult rakenduse struktuuri ja selle töö loogika arusaamine vĂ”imaldab leida kĂ”ige keerulisemaid rĂŒnnaku vektoreid.
Oluline on leida kohti, mis tunduvad kahtlased vĂ”i mis erinevad oluliselt ĂŒlejÀÀnud eest. Esimene ohtlik haavatavus leiti just sellisel viisil.
IDOR
IDOR-i haavatavused (Insecure Direct Object Reference, ebaturvalised otsesed viidatud objektid) on ĂŒks levinumaid haavatavusi Ă€ri loogikas, mis vĂ”imaldab mingil viisil pÀÀseda objektidele, millele tegelikult ei ole juurdepÀÀsu lubatud. IDOR-i haavatavused loovad vĂ”imaluse saada teavet kasutaja kohta erineva taseme kriitilisusega.
Ăks IDOR-i variandi nĂ€itena on sĂŒsteemi objektidega (kasutajad, pangakontod, ostukorvi tooted) tegutsemine juurdepÀÀsu identifikaatorite manipuleerimise kaudu. See toob kaasa tĂ€iesti ettearvamatud tagajĂ€rjed. NĂ€iteks vĂ”ib see vĂ”imaldada raha saatja konto petmist, millega saab raha teiste kasutajate kĂ€est varastada.
MCS-i puhul avastasid auditeerijad IDOR-i haavatavuse, mis on seotud ebaturvaliste identifikaatoritega. Kasutaja isiklikus kabinetis kasutati objektide juurde pÀÀsemiseks UUID identifikaatoreid, mis nĂ€isid, nagu öeldakse, turvalised ja purustamatud. Kuid teatud ĂŒksuste puhul avastati, et rakenduse kasutajate teabe saamiseks kasutatakse tavalisi, ennustatavaid numbreid. Arvan, et vĂ”ite arvata, et kasutaja ID-d oli vĂ”imalik suurendada ĂŒhe vĂ”rra, saata pĂ€ring uuesti ja seega saada teavet ACL-ist mööda minnes.
Serveri kĂŒlgpĂ€ringute suhtes haavatavus (SSRF)
Avaallika tooted on head, sest nendega seotud foorumites on vĂ€ga palju ĂŒksikasjalikke tehnilisi kirjeldusi esinevatest probleemidest ja, kui olete Ă”nnelik, ka lahenduse kirjeldusest. Kuid sellel mĂŒndil on ka teine pool: samuti on ĂŒksikasjalikult loetletud tuntud haavatavused. NĂ€iteks OpenStacki foorumis on suurepĂ€rased kirjeldused haavatavustest. ja , mida kuidagi keegi ei tĂŒkki parandama.
Rakenduste sage funktsionaalsus on vÔimalus kasutajal saata serverisse link, mille kaudu server liikuda saab (nÀiteks, et laadida pilti mÀÀratud allikast). Kui turvameetmed linkide vÔi serverilt kasutajatele tagastatavate vastuste filtreerimisel on ebapiisavad, saavad kurjategijad seda funktsionaalsust hÔlpsasti Àra kasutada.
SSRF-haavatavused vĂ”ivad tunduvalt edendada rĂŒnnaku arengut. Kurjategija vĂ”ib saada:
- piiratud juurdepÀÀsu rĂŒnnatavale lokaalsele vĂ”rgule, nĂ€iteks ainult teatud vĂ”rgu segmentidele ja kindlatele protokollidele;
- tĂ€ieliku juurdepÀÀsu lokaalsele vĂ”rgule, kui on vĂ”imalik taanduda rakenduste tasemelt transporttasemele ning seega tĂ€ielik kontroll rakendustaseme koormuse ĂŒle;
- juurdepÀÀsu lugeda lokaalseid faile serveris (kui on toetatud skeem file://).
- ja palju muud.
OpenStackis on juba pikka aega tuntud SSRF-haavatavuse, millel on "pime" iseloom: serverisse pöördudes ei saa sa temalt vastust, kuid saad erinevaid vigu/viivitusi vastavalt pĂ€ringu tulemusele. Selle alusel on vĂ”imalik teostada sadamate skannimist sisemistes vĂ”rkudes, mistĂ”ttu vĂ”ivad tekkida tĂ”sised tagajĂ€rjed, mida ei tohiks alahinnata. NĂ€iteks vĂ”ib tootel olla API tagaruumile, mis on saadaval ainult ettevĂ”tte vĂ”rgus. Omades dokumentatsiooni (Ă€rge unustage siseringlehti), saab kurjategija kasutada SSRF-i, et pöörduda sisemiste meetodite poole. NĂ€iteks, kui Ă”nnestub kuidagi saada ligikaudne nimekiri kasulikest URL-idest, siis saab SSRF-i abil nende kaudu minna ja pĂ€ringu esitada â nĂ€iteks kanda raha arvelt arvele vĂ”i muuta limiite.
See ei ole esimene juhtum SSRF-haavatavuse avastamisest OpenStackis. Varasemalt oli vÔimalik laadida VM-i ISO-pilte otse lingi kaudu, mis tÔi samuti kaasa sarnaseid tagajÀrgi. Praegu on see funktsioon OpenStackist eemaldatud. Tundub, et kogukond pidas seda kÔige lihtsamaks ja usaldusvÀÀrsemaks lahenduseks probleemile.
Ja HackerOne teenitatud avalikus aruandes (h1) ei ole enam pime SSRF, mis vÔimaldab instantsi metaandmete lugemist, viinud kogu Shopify infrastruktuuri juurkasutaja Ôiguste saamiseni.
MCS-is avastati kahes sarnaselt toimivas kohas SSRF-haavatavused, kuid neid oli praktiliselt vĂ”imatu kasutada tulemĂŒĂŒride ja muude kaitsete tĂ”ttu. Sellegipoolest lahendas MCS-i meeskond selle probleemi, ootamata kogukonda.
XSS mitte 'shellide' laadimise asemel
Hoolimata sadadest kirjutatud uurimistest on iga aasta XSS (kliendi-sivust scriptimise rĂŒnnak) endiselt kĂ”ige veebihĂ€iritus (vĂ”i ?).
Failide laadimine on iga turva-uuringu tegija lemmikkoht. Sageli on vĂ”imalik ĂŒles laadida suvaline skript (asp/jsp/php) ja kĂ€ivitada OS-i kĂ€ske, pentsestide terminoloogias 'shelli laadimine'. Kuid selliste haavatavuste populaarsus toimib ka kahe suuna vahel: neid mĂ€letatakse ja arendatakse nende vastu kaitsevahendeid, nii et viimasel ajal on 'shelli laadimise' tĂ”enĂ€osus suundunud nulli.
RĂŒndeteame (Digital Security'i nĂ€ol) lĂ€ks hĂ€sti. MCS-is kontrolliti serveripoolt ĂŒleslaaditavate failide sisu, lubatud olid vaid pildifailid. Kuid SVG on ka pilt. Kuidas vĂ”ivad SVG pildid ohtlikud olla? SellepĂ€rast, et neisse saab sisse embedida JavaScripti fragmente!
Selgus, et ĂŒleslaaditavad failid on kĂ”igile MCS teenuse kasutajatele ligipÀÀsetavad â see tĂ€hendab, et teisi pilveteenuse kasutajaid on vĂ”imalik rĂŒnnata, sealhulgas administraatoreid.

XSS-rĂŒnnaku abil sisse imbumise nĂ€ide phishing'i sisselogimisvormist
XSS-rĂŒnnaku Ă€rakasutamise nĂ€ited:
- Miks proovida seanssi varastada (veel enam, et praegu on igal pool HTTP-Only kĂŒpsised, mis on kaitstud js-skriptide varguse eest), kui ĂŒleslaaditud skript saab kohe API-le juurde pÀÀseda? Sel juhul vĂ”ib kasulik koormus XHR-pĂ€ringute kaudu muuta serveri konfiguratsiooni, nĂ€iteks lisada rĂŒndaja avatud SSH-vĂ”tme ning saada SSH-juurdepÀÀsu serverile.
- Kui CSP-poliitika (sisu kaitse poliitika) keelab JavaScripti sisestamise, vÔib kuritegelik isik sellest loobuda. Puhta HTML-i abil saab luua vale sisselogimisvormi ning hÀkkida administraatori parooli lÀbi sellise arenenud kalastamise: kasutajale kuvatakse phishingu leht samal URL-il, mistÔttu on kasutajal seda keerulisem avastada.
- LĂ”puks vĂ”ib kuritegelik isik korraldada â saata kĂŒpsiseid, mille suurus ĂŒletab 4 KB. Kasutajale piisab, kui avada link ĂŒks kord â ja kogu veebisait muutub kĂ€ttesaamatuks, kuni ta ei arvata eraldi brauserit puhastada: enamikul juhtudel keeldub veebiserver sellise kliendi vastuvĂ”tmisest.
Vaatame veel ĂŒhte avastatud XSS-i nĂ€idet, seekord koos nutikamate ekspluateerimisvĂ”imetega. Teenus MCS vĂ”imaldab tulekindlate seadetega rĂŒhmade loomist. RĂŒhma nime kohta avastati XSS. Selle eripĂ€ra oli see, et vektor aktiveerus mitte kohe, mitte reeglite loendi vaatamisel, vaid rĂŒhma kustutamisel:

See, the scenario unfolds as follows: the attacker creates a firewall rule with a 'payload' in the name, the administrator notices it after a while and initiates the deletion process. And that's when the malicious JS executes.
For MCS developers, to guard against XSS in uploaded SVG images (if they cannot be avoided), the Digital Security team recommended:
- Host user-uploaded files on a separate domain, not related to 'cookies'. The script will run in the context of another domain and will not pose a threat to MCS.
- In the server's HTTP response, include the header 'Content-disposition: attachment'. This way, files will be downloaded by the browser instead of being executed.
Additionally, there are many ways available now for developers to mitigate the risks of XSS exploitation:
- using the 'HTTP Only' flag can make session 'Cookies' headers inaccessible to malicious JavaScript;
- significantly complicates XSS exploitation for the attacker;
- modern templating engines like Angular or React automatically sanitize user data before rendering it in the user's browser.
Kahefaasiline autentimine
Kasutajatel soovitatakse alati seadistada 2FA (kahefaasiline autentimine), et suurendada oma kontode turvalisust. See on tĂ”hus viis, et takistada rĂŒndajal pÀÀsemast teenusele, kui kasutaja andmed on kompromiteeritud.
Aga kas kahefaasilise autentimise kasutamine tagab alati konto turvalisuse? 2FA rakendamisel esineb mitmeid turvaprobleeme:
- OTP-koodi (ĂŒhekordsete koodide) bruteforcing. Kuigi see on lihtsasti kasutatav, esinevad sellised vead, nagu bruteforce-tou tĆĄatasuotus OTP-le, ka suurtes ettevĂ”tetes: , .
- NÔrk genereerimisalgoritm, nÀiteks vÔimalus ennustada jÀrgmist koodi.
- Loogilised vead, nĂ€iteks vĂ”imalus kĂŒsida kellegi teise OTP-d oma telefonile, nagu see on Shopify's.
MCS-is on 2FA rakendatud Google Authenticator'i ja . Protokoll ise on ajaga tĂ”estatud, kuid koodi kontrollimise rakenduse kĂŒljes tasub ĂŒle vaadata.
MCS-is kasutatakse 2FA mitmes kohas:
- Kasutaja autentimise kĂ€igus. Siin on kaitse bruteforce'i vastu: kasutajal on vaid mĂ”ned katsetused ĂŒhekordse parooli sisestamiseks, pĂ€rast mida sisestamine blokeeritakse teatud ajaks. See takistab OTP-de bruteforce'iga valimise vĂ”imalust.
- Kui genereerida offline backup-koode 2FA tÀitmiseks vÔi selle keelamiseks. Siin ei olnud bruteforce'i kaitset rakendatud, mis vÔimaldas parooli olemasolu ja kehtiva seansi korral backup-koode taasgenereerida vÔi 2FA tÀielikult keelata.
Arvestades, et backup-koodid olid samas vÀÀrtuste vahemikus nagu rakenduse genereeritud OTP-d, oli koodi lĂŒhikese aja jooksul leidmise tĂ”enĂ€osus oluliselt kĂ”rgem.

OTP bruteforce'i protsess 2FA keelamiseks tööriista «Burp: Intruder» abil.
Tulemus
KokkuvÔttes osutus MCS tootena turvaliseks. Auditiperioodi jooksul ei suutnud pentestide meeskond pÀÀseda klientide virtuaalmasinatele ja nende andmetele, ning leitud haavatavused parandati kiiresti MCS meeskonna poolt.
Siiski on oluline mÀrkida, et turvalisus on pidev töö. Teenused ei ole staatilised, need arenevad pidevalt. Tootet tÀiesti haavatusteta vÀlja töötada ei ole vÔimalik. Kuid neid on vÔimalik Ôigeaegselt tuvastada ja uute kordumise vÔimalust vÀhendada.
Kogu eespool mainitud haavatavused MCS-is on nĂŒĂŒdseks parandatud. Uute haavatavuste arvu minimeerimiseks ja nende eksisteerimise aja lĂŒhendamiseks jĂ€tkab platvormi meeskond jĂ€rgmiste tegevuste tegemist:
- regulaarselt viia lÀbi auditeid vÀliste ettevÔtete poolt;
- toetada ja arendada osalust;
- tegeleda turvalisusega. đ
Allikas: habr.com
