Serverless.com Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Organizacija je entitet najvišeg nivoa unutar Serverless Framework ekosistema. Predstavlja kolektivnu grupu, kao što su kompanija, odeljenje ili bilo koji veliki entitet, koji obuhvata više projekata, timova i aplikacija.
Tim su korisnici sa pristupom unutar organizacije. Timovi pomažu u organizovanju članova na osnovu uloga. Saradnici
mogu da pregledaju i implementiraju postojeće aplikacije, dok Administratori
mogu da kreiraju nove aplikacije i upravljaju podešavanjima organizacije.
Aplikacija je logičko grupisanje povezanih usluga unutar organizacije. Predstavlja kompletnu aplikaciju sastavljenu od više serverless usluga koje rade zajedno kako bi pružile koherentnu funkcionalnost.
Usluga je osnovna komponenta serverless aplikacije. Predstavlja ceo vaš serverless projekat, obuhvatajući sve funkcije, konfiguracije i resurse koji su potrebni. Obično je definisana u serverless.yml
datoteci, usluga uključuje metapodatke kao što su naziv usluge, konfiguracije provajdera, funkcije, događaje, resurse, dodatke i prilagođene varijable.
Ovo je sažetak zvaničnog tutorijala iz dokumentacije:
Kreirajte AWS nalog (Serverless.com počinje u AWS infrastrukturi)
Kreirajte nalog na serverless.com
Kreirajte aplikaciju:
Ovo bi trebalo da je kreiralo aplikaciju pod nazivom tutorialapp
koju možete proveriti na serverless.com i folder pod nazivom Tutorial
sa datotekom handler.js
koja sadrži neki JS kod sa helloworld
kodom i datotekom serverless.yml
koja deklarira tu funkciju:
Kreirajte AWS provajder, odlaskom na dashboard na https://app.serverless.com/<org name>/settings/providers?providerId=new&provider=aws
.
Da bi se serverless.com
omogućio pristup AWS-u, biće zatraženo da se pokrene cloudformation stack koristeći ovu konfiguracionu datoteku (u vreme pisanja ovog teksta): https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml
Ova šablon generiše ulogu pod nazivom SFRole-<ID>
sa arn:aws:iam::aws:policy/AdministratorAccess
nad nalogom sa Trust Identity koja omogućava Serverless.com
AWS nalogu pristup toj ulozi.
U tutorijalu se traži da se kreira fajl createCustomer.js
koji će u suštini kreirati novu API tačku koju obrađuje novi JS fajl i traži se da se modifikuje fajl serverless.yml
kako bi se generisala nova DynamoDB tabela, definisala promenljiva okruženja, uloga koja će koristiti generisane lambde.
Deploy it running serverless deploy
Implementacija će se izvršiti putem CloudFormation Stack-a
Imajte na umu da su lambde izložene putem API gateway-a a ne putem direktnih URL-ova
Testirajte to
Prethodni korak će ispisati URL-ove gde su vaši API endpoint lambda funkcije implementirane
Previše permisivne IAM uloge mogu omogućiti neovlašćen pristup cloud resursima, što može dovesti do curenja podataka ili manipulacije resursima.
Princip minimalnih privilegija: Dodelite samo neophodne dozvole svakoj funkciji.
Koristite odvojene uloge: Diferencirajte uloge na osnovu zahteva funkcije.
Skladištenje osetljivih informacija (npr. API ključeva, kredencijala za bazu podataka) direktno u serverless.yml
ili kodu može dovesti do izlaganja ako su repozitorijumi kompromitovani ili ako je pristup AWS-u ugrožen, jer će biti čitljivi iz konfiguracija lambdi.
Promenljive okruženja: Umetnite tajne u vreme izvršavanja bez hardkodiranja.
Integracija sa menadžerom tajni: Koristite usluge kao što su AWS Secrets Manager, Azure Key Vault ili HashiCorp Vault.
Enkriptovane promenljive: Iskoristite funkcije enkripcije Serverless Framework-a za osetljive podatke.
Kontrola pristupa: Ograničite pristup tajnama na osnovu uloga.
Izbegavajte logovanje tajni: Osigurajte da tajne nisu izložene u logovima ili porukama o greškama.
Zastarale ili nesigurne zavisnosti mogu uvesti ranjivosti, dok nepravilno rukovanje ulazima može dovesti do napada injekcijom koda.
Upravljanje zavisnostima: Redovno ažurirajte zavisnosti i skenirajte za ranjivosti.
Validacija ulaza: Implementirajte strogu validaciju i sanitizaciju svih ulaza.
Revizije koda: Sprovodite temeljne revizije kako biste identifikovali sigurnosne propuste.
Statička analiza: Koristite alate za otkrivanje ranjivosti u kodnoj bazi.
Bez pravilnog logovanja i praćenja, zlonamerne aktivnosti mogu ostati neprimećene, što odlaže odgovor na incidente.
Centralizovano logovanje: Agregirajte logove koristeći usluge kao što su AWS CloudWatch ili Datadog.
Omogućite detaljno logovanje: Zabeležite bitne informacije bez izlaganja osetljivih podataka.
Postavite upozorenja: Konfigurišite upozorenja za sumnjive aktivnosti ili anomalije.
Redovno praćenje: Kontinuirano pratite logove i metrike za potencijalne sigurnosne incidente.
Otvoreni ili nepravilno zaštićeni API-ji mogu se iskoristiti za neovlašćen pristup, napade uskraćivanja usluge (DoS) ili napade između sajtova.
Autentifikacija i autorizacija: Implementirajte robusne mehanizme kao što su OAuth, API ključevi ili JWT.
Ograničavanje brzine i usporavanje: Sprečite zloupotrebu ograničavanjem brzine zahteva.
Sigurna CORS konfiguracija: Ograničite dozvoljene izvore, metode i zaglavlja.
Koristite vatrozide za web aplikacije (WAF): Filtrirajte i pratite HTTP zahteve za zlonamerne obrasce.
Deljeni resursi i nedovoljna izolacija mogu dovesti do eskalacije privilegija ili nenamernih interakcija između funkcija.
Izolujte funkcije: Dodelite različite resurse i IAM uloge kako biste osigurali nezavisno delovanje.
Partitioning resursa: Koristite odvojene baze podataka ili skladišne kante za različite funkcije.
Koristite VPC: Implementirajte funkcije unutar Virtuelnih Privatnih Oblaka za poboljšanu mrežnu izolaciju.
Ograničite dozvole funkcija: Osigurajte da funkcije ne mogu pristupiti ili ometati resurse jedne druge osim ako to nije izričito zahtevano.
Nešifrovani podaci u mirovanju ili u tranzitu mogu biti izloženi, što može dovesti do curenja podataka ili manipulacije.
Šifrujte podatke u mirovanju: Iskoristite funkcije šifrovanja cloud usluga.
Šifrujte podatke u tranzitu: Koristite HTTPS/TLS za sve prenose podataka.
Osigurajte API komunikaciju: Sprovodite protokole šifrovanja i validirajte sertifikate.
Sigurno upravljajte šifrovanjem ključeva: Koristite usluge upravljanja ključevima i redovno rotirajte ključeve.
Detaljne poruke o greškama mogu otkriti osetljive informacije o infrastrukturi ili kodnoj bazi, dok neobrađene izuzetke mogu dovesti do rušenja aplikacije.
Generičke poruke o greškama: Izbegavajte izlaganje internih detalja u odgovorima o greškama.
Centralizovano rukovanje greškama: Upravljajte i sanitizujte greške dosledno kroz sve funkcije.
Pratite i logujte greške: Pratite i analizirajte greške interno bez izlaganja detalja krajnjim korisnicima.
Izložene konfiguracije implementacije ili neovlašćen pristup CI/CD pipelinima mogu dovesti do zlonamernih implementacija koda ili pogrešnih konfiguracija.
Osigurajte CI/CD pipelinske: Implementirajte stroge kontrole pristupa, višefaktorsku autentifikaciju (MFA) i redovne revizije.
Sigurno skladištenje konfiguracije: Držite datoteke implementacije bez hardkodiranih tajni i osetljivih podataka.
Koristite alate za sigurnost infrastrukture kao koda (IaC): Koristite alate kao što su Checkov ili Terraform Sentinel za sprovođenje sigurnosnih politika.
Nepromenljive implementacije: Sprečite neovlašćene promene nakon implementacije usvajanjem praksi nepromenljive infrastrukture.
Korišćenje neproverenih ili zlonamernih dodataka trećih strana može uvesti ranjivosti u vaše serverless aplikacije.
Temeljno proverite dodatke: Procijenite sigurnost dodataka pre integracije, favorizujući one iz uglednih izvora.
Ograničite korišćenje dodataka: Koristite samo neophodne dodatke kako biste smanjili površinu napada.
Pratite ažuriranja dodataka: Držite dodatke ažuriranim kako biste imali koristi od sigurnosnih zakrpa.
Izolujte okruženja dodataka: Pokrećite dodatke u izolovanim okruženjima kako biste obuzdali potencijalne kompromitacije.
Javno dostupne funkcije ili neograničeni API-ji mogu se iskoristiti za neovlašćene operacije.
Ograničite pristup funkcijama: Koristite VPC, sigurnosne grupe i pravila vatrozida kako biste ograničili pristup pouzdanim izvorima.
Implementirajte robusnu autentifikaciju: Osigurajte da sve izložene krajnje tačke zahtevaju pravilnu autentifikaciju i autorizaciju.
Sigurno koristite API gateway-e: Konfigurišite API gateway-e da sprovode sigurnosne politike, uključujući validaciju ulaza i ograničavanje brzine.
Onemogućite neiskorišćene krajnje tačke: Redovno pregledajte i onemogućite sve krajnje tačke koje više nisu u upotrebi.
Dodeljivanje prekomernih dozvola članovima tima i spoljnim saradnicima može dovesti do neovlašćenog pristupa, curenja podataka i zloupotrebe resursa. Ovaj rizik je pojačan u okruženjima gde više pojedinaca ima različite nivoe pristupa, povećavajući površinu napada i potencijal za unutrašnje pretnje.
Princip minimalnih privilegija: Osigurajte da članovi tima i saradnici imaju samo dozvole neophodne za obavljanje svojih zadataka.
Pristupni ključevi i ključevi licenci su kritične akreditive koji se koriste za autentifikaciju i autorizaciju interakcija sa Serverless Framework CLI.
Ključevi licenci: Oni su jedinstveni identifikatori potrebni za autentifikaciju pristupa Serverless Framework verziji 4 koja omogućava prijavu putem CLI.
Pristupni ključevi: Akreditive koje omogućavaju Serverless Framework CLI da se autentifikuje sa Serverless Framework Dashboard-om. Kada se prijavite sa serverless
cli, pristupni ključ će biti generisan i sačuvan na laptopu. Takođe ga možete postaviti kao promenljivu okruženja pod imenom SERVERLESS_ACCESS_KEY
.
Izloženost kroz kodne repozitorijume:
Hardkodiranje ili slučajno obavezivanje pristupnih ključeva i ključeva licenci u sisteme kontrole verzija može dovesti do neovlašćenog pristupa.
Neosigurano skladištenje:
Skladištenje ključeva u običnom tekstu unutar promenljivih okruženja ili konfiguracionih datoteka bez odgovarajuće enkripcije povećava verovatnoću curenja.
Nepravilna distribucija:
Deljenje ključeva putem nesigurnih kanala (npr. e-pošta, chat) može rezultirati presretanjem od strane zlonamernih aktera.
Nedostatak rotacije:
Nepostojanje redovne rotacije ključeva produžava period izloženosti ako su ključevi kompromitovani.
Prekomerne dozvole:
Ključevi sa širokim dozvolama mogu se iskoristiti za obavljanje neovlašćenih radnji na više resursa.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)