Wordt u aangevallen? Vraag hulp bij incidentrespons

Cloud

Openbare S3-, Azure Blob- en GCS-opslag vinden in één middag

Zo vindt u buckets en containers met anonieme toegang op AWS, Azure en Google Cloud en stelt u guardrails op accountniveau in die deze overrulen.

Ook beschikbaar in:EnglishTürkçeDeutschFrançaisEspañolItalianoPolskiEesti

Illustratie: Openbare S3-, Azure Blob- en GCS-opslag vinden in één middag

Elk van de drie grote aanbieders heeft een schakelaar boven het niveau van de individuele bucket die alles overschrijft wat iemand daaronder heeft ingesteld. Uw middag bestaat uit twee taken: eerst vinden wat al openstaat, en daarna die schakelaars aanzetten zodat het volgende onzorgvuldige beleid niets meer uitricht. Doe dit in die volgorde, want de schakelaars breken alles wat ervan afhankelijk is dat het openbaar is.

Wat "openbaar" betekent per platform

De definities verschillen, en de audit moet naar elk van de drie zoeken.

PlatformWat het openbaar maaktGuardrail die dit overschrijft
AWS S3ACL's die toegang geven aan de groepen AllUsers of AuthenticatedUsers, of een bucket policy die niet aantoonbaar niet-openbaar isBlock Public Access, op account- of organisatieniveau
Azure BlobHet account staat anonieme toegang toe en het containerniveau staat op Container of BlobAllowBlobPublicAccess op False in het storage account
Google Cloud StorageallUsers of allAuthenticatedUsers in een IAM-policy van een bucket of in een object-ACLPublic access prevention, per bucket of via de constraint storage.publicAccessPrevention

S3 beschouwt een bucket policy als openbaar zolang het tegendeel niet is bewezen. Een policy telt alleen als niet-openbaar als zij toegang verleent aan vaste waarden, zonder wildcards of policy-variabelen, zoals een specifieke principal of een set CIDR-blokken via aws:SourceIp. Een wildcard-principal faalt dus de test.

Bij Azure moeten beide voorwaarden gelden. Als het account anonieme toegang niet toestaat, is de containerinstelling irrelevant. Staat het account anonieme toegang wel toe, dan blijft een container nog steeds privé totdat iemand het niveau op Container of Blob zet.

Stap 1: vind wat openstaat

S3. De AWS-handleiding verwijst voor het beoordelen van openbare buckets naar IAM Access Analyzer for S3, dus begin daar. Controleer vervolgens per account de vier instellingen van Block Public Access: BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy en RestrictPublicBuckets. Let op: GetBucketAcl geeft de effectieve rechten terug. Een bucket met een openbare ACL en IgnorePublicAcls ingeschakeld toont een ACL die de echte verbergt.

Azure. In de portal ziet u eerst het aantal anonieme requests. Open in het storage account Monitoring en vervolgens Metrics. Gebruik de Blob-namespace, de metric Transactions, de aggregatie Sum, en voeg een filter toe met Authentication gelijk aan Anonymous.

Om te zien welke containers erbij betrokken zijn, maakt u een diagnostic setting die logs naar een Log Analytics workspace stuurt. Voer daarna deze query uit, die de afgelopen zeven dagen beslaat:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AuthenticationType == "Anonymous"
| project TimeGenerated, AccountName, AuthenticationType, Uri

De kolom Uri toont de containers en blobs die gelezen worden. Metrics en logs laten alleen zien wie anoniem leest, niet wat blootligt, dus een open container waar niemand om heeft gevraagd blijft onzichtbaar. Controleer daarom ook de toegangsniveaus van de containers.

Google Cloud. Inspecteer de IAM-policies van buckets op rollen die zijn toegekend aan allUsers of allAuthenticatedUsers. Cloud Asset Inventory toont de policies van alle buckets in een project, map of organisatie, zodat u niet bucket voor bucket hoeft te werken. Object-ACL's vragen om een aparte controle en managed folders hebben hun eigen IAM-policies. Zet usage logs aan om te zien welke workloads openbare data benaderen. Cloud Audit Logs registreert geen toegang tot openbare objecten en helpt hier dus niet.

Stap 2: zet de guardrails aan

S3. AWS adviseert alle vier de instellingen op accountniveau in te schakelen. Ook adviseert AWS alle vier op elke bucket aan te zetten om te voldoen aan Security Hub-control S3.8. Gebruik bij meerdere accounts een policy op organisatieniveau. Die policy is alles-of-niets, zonder keuze per instelling, en overschrijft de instellingen op accountniveau in de geselecteerde member accounts. S3 past de meest restrictieve combinatie over de niveaus heen toe, zodat een bucket niet kan verzwakken wat het account afdwingt.

Pas BlockPublicPolicy met name op accountniveau toe. Anders kan iedereen die een bucket policy mag bewerken een policy invoegen die de instelling op bucketniveau uitschakelt. Wijzigingen op accountniveau gelden voor alle Regions, maar komen mogelijk niet overal tegelijk door. Instellingen voor access points kunnen alleen bij het aanmaken worden gezet, dus controleer die apart.

Azure. Zet AllowBlobPublicAccess op False voor elk storage account. Dit overschrijft elke containerinstelling, dus u hoeft de containers zelf niet aan te raken. Hiervoor is versie 2019-04-01 of nieuwer van de Azure Storage resource provider nodig. De gebruiker heeft Microsoft.Storage/storageAccounts/write nodig, dat in de rollen Owner, Contributor en Storage Account Contributor zit. Houd die toewijzingen beperkt.

Google Cloud. Dwing public access prevention af op buckets, of stel de organization policy constraint storage.publicAccessPrevention in op project-, map- of organisatieniveau. Google adviseert af te dwingen op het hoogste niveau dat u kunt. De status van een bucket is of enforced of inherited. Een bucket met een afgedwongen instelling blijft enforced, ook als u de constraint erboven later uitschakelt.

Wat er stukgaat en wat niet

Houd rekening met storingen, want dat is precies de bedoeling van de oefening.

  • S3: De instellingen wijzigen bestaande policies of ACL's niet. Als u een instelling verwijdert, wordt alles met een openbare policy of ACL weer openbaar, dus ruim ook de onderliggende grants op. Beoordeel daarnaast identity-based policies en resource policies zoals KMS-key policies, die Block Public Access niet afdekt.
  • Azure: Anonieme leesverzoeken gaan falen. De foutcode hangt af van de serviceversie: 401 voor versie 2019-12-12 en nieuwer, anders 409 wanneer het account anonieme toegang niet toestaat en 404 wanneer het die wel toestaat.
  • Google Cloud: Requests met allUsers falen met HTTP 401 of 403. Bestaande bindings blijven staan maar worden overschreven. Pogingen om ze toe te voegen mislukken met 412 Precondition Failed. Signed URL's worden niet beïnvloed. Het afdwingen kan tot 10 minuten duren, en gecachete objecten kunnen openbaar blijven gedurende de Cache-Control-levensduur, die standaard 3600 seconden is.

Echt openbare content, zoals een statische website, vraagt om een uitzondering. Azure adviseert die te verplaatsen naar een apart storage account dat gereserveerd is voor anonieme toegang. Schakel op Google Cloud prevention uit voor het specifieke project waarin de bucket staat. Pas in S3 de afzonderlijke instellingen aan voor de buckets die dat nodig hebben.

Waar u begint

  1. Maak een lijst van elk AWS-account, elk Azure-abonnement en elk Google Cloud-project waarin opslag staat, ook de omgevingen waarvan niemand zich herinnert dat ze zijn aangemaakt.
  2. Voer de bovenstaande discovery uit: Access Analyzer for S3, de Azure-metric en logquery voor anonieme requests, en Cloud Asset Inventory voor IAM-policies van buckets.
  3. Bepaal bij elke openbare bevinding of die bewust is. Verplaats legitieme openbare content naar speciale accounts of projecten.
  4. Schakel de controls op account- of organisatieniveau in: alle vier de S3-instellingen, AllowBlobPublicAccess op False en de constraint storage.publicAccessPrevention.
  5. Voer de queries enkele dagen later opnieuw uit om te bevestigen dat het aantal anonieme requests naar nul is gedaald, en stel een alert in op de Azure-metric voor anonieme requests.
  6. Wilt u een externe controle van wat nog bereikbaar is, dan dekt onze pentestdienst blootstelling in de cloud en kan ons consultingteam uw accountstructuur beoordelen.

Hoe wij kunnen helpen

Advies en training

Wij brengen in kaart waar u staat, bepalen samen met u de prioriteiten en trainen uw medewerkers om aanvallen te herkennen.

Neem contact op
AngelForce-team

Geschreven door het AngelForce-team: securityconsultants met CEH-, LPT Master- en CISA-certificering die systemen van organisaties in heel Europa testen, bewaken en beschermen.

Geschreven met hulp van AI op basis van de openbare bronnen hieronder, en vóór publicatie gecontroleerd door het team van AngelForce.

Bronnen

  1. docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html
  2. learn.microsoft.com/en-us/azure/storage/blobs/anonymous-read-access-prevent
  3. docs.cloud.google.com/storage/docs/public-access-prevention

Artikelen over Cloud

Vertel ons wat u wilt beschermen

Beschrijf uw omgeving en wat u wilt bereiken. Wij antwoorden per e-mail.

Neem contact op
info@angelforce.eu +372 5705 2044

AngelForce OÜ · Tallinn, Estland