Ein­füh­rung 

Erfah­ren Sie, wie die Snow­flake Data Cloud starke Sicher­heit bie­tet, indem sie Netz­werk-Egress-Pro­xy­ing, Name­spaces, sec­comp-bpf und ptrace zur Iso­lie­rung von Workloads nutzt. 

Die sicherste Tür ist eine Mauer. Sie ver­hin­dert den unbe­fug­ten Zugang, kann aber auch den auto­ri­sier­ten Zugang behin­dern. Eine Wand ist leicht zu ent­wer­fen. Es ist schwie­ri­ger, eine Tür zu ent­wer­fen, die sowohl sicher als auch nütz­lich ist. Bei Snow­flake dreht sich alles um die Daten: ein ein­fa­cher, kon­trol­lier­ter Zugriff auf nahezu unbe­grenzte Daten­men­gen mit moderns­ten Tools, Anwen­dun­gen, Diens­ten und Sicher­heit. Diese Sicher­heit ist jedoch nur von begrenz­tem Wert, wenn die Kun­den fest­stel­len, dass sie eher eine Mauer als eine Tür ist. 

Bis vor kur­zem bot Snow­flake eine rela­tiv begrenzte Anzahl von Pro­gram­mier­pri­mi­ti­ven: SQL-Abfra­gen und eine feste Anzahl ein­ge­bau­ter Funk­tio­nen. Poten­zi­elle Angrei­fer konn­ten den neu­es­ten Exploit nicht in Snow­flake aus­füh­ren, da die Aus­füh­rung die­ses Codes bis zur Ein­füh­rung von Snow­park ein­fach nicht zu den von Snow­flake ange­bo­te­nen Ser­vices gehörte. Da Snow­flake immer wie­der neue Workloads in der Snow­flake Data Cloud bereit­stellt, muss­ten die Ober­flä­che ver­grö­ßert wer­den, um sie unter­zu­brin­gen. Die Kun­den woll­ten eine Tür. Des­we­gen wurde Snow­park entwickelt. 

Snow­park ermög­licht es Data Cloud-Benut­zern, Java- und Python-Biblio­the­ken von Dritt­an­bie­tern ein­zu­bin­den. So kön­nen Sie pro­blem­los benut­zer­de­fi­nierte Funk­tio­nen (UDFs), benut­zer­de­fi­nierte Tabel­len­funk­tio­nen (UDTFs) und gespei­cherte Pro­ze­du­ren erstel­len. Natür­lich birgt das zusätz­li­che Risi­ken. Um dies zu kom­pen­sie­ren, hat Snow­flake sich auf seine Sicher­heits­prin­zi­pien kon­zen­triert, Arbeits­las­ten iso­liert und meh­rere unab­hän­gige Ver­tei­di­gungs­ebe­nen entwickelt. 

Poten­zi­elle Bedro­hun­gen 

Die Snow­park-Biblio­the­ken von Dritt­an­bie­tern stel­len nicht ver­trau­ens­wür­di­gen Code dar, der eine sehr reale Bedro­hung für die Sicher­heit dar­stel­len könnte. Wenn die­ser Code einen Weg fin­det, sich mit einem feind­li­chen End­punkt im Inter­net zu ver­bin­den, könnte er zusätz­li­che bös­ar­tige Nutz­da­ten abru­fen, Befehle und Kon­trol­len aus­füh­ren und sen­si­ble Daten exfil­trie­ren. Wenn bös­wil­lige Akteure in der Lage sind, Pro­zesse auf Platt­form­ebene zu beob­ach­ten oder zu mani­pu­lie­ren, könn­ten sie Daten beschä­di­gen oder einen Denial-of-Ser­vice-Angriff (DoS) durchführen. 

Die Sicher­heits­ar­chi­tek­tur von Snow­flake 

Die Abbil­dung zeigt die sichere Sand­box von Snow­flake, die aus fünf Kom­po­nen­ten besteht, die Schutz bie­ten: Name­spaces und cgroups, sec­comp-bpf, chroot file­sys­tem, ptrace und Bedro­hungs­er­ken­nung. Inner­halb der Sicher­heits-Sand­box befin­det sich eine Sprach­lauf­zeit. Im Inne­ren der Sprach­lauf­zeit gibt es eine benut­zer­de­fi­nierte Funk­tion. Außer­halb der siche­ren Sand­box besteht eine Query Engine. Es gibt einen bidi­rek­tio­na­len Pfeil zwi­schen der Query-Engine und der Sprach­lauf­zeit inner­halb der Sandbox. 

Wie in der obi­gen Abbil­dung dar­ge­stellt, setzt Snow­flake eine viel­schich­tige Sicher­heits­ar­chi­tek­tur ein, um poten­zi­ell bös­ar­tige Arbeits­las­ten zu iso­lie­ren. Diese Mecha­nis­men schüt­zen den Ker­nel, das Netz­werk, das Host-Datei­sys­tem und die Workload-Orches­trie­rungs­pro­zesse. Diese Archi­tek­tur umfasst eine Reihe von ver­schie­de­nen Tools und Lösun­gen. Dazu gehören: 

  • Name­spaces und cgroups – Name­spaces wer­den zur Pro­zes­s­iso­lie­rung verwendet. 
  • sec­comp-bpf – Sec­comp BPF (SECure COM­Pu­ting with fil­ters) wird zur Ein­schrän­kung von Sys­tem­auf­ru­fen verwendet. 
  • chroot – chroot iso­liert die von Pro­zes­sen lokal erreich­ba­ren Dateien. 
  • ptrace – ptrace über­wacht Sys­tem­auf­rufe, die Pro­zesse tätigen. 

Die erste Ver­tei­di­gungs­li­nie von Snow­flake ist die von Snow­flake ent­wi­ckelte Sprach­lauf­zeit, die Angriffe auf Archi­tek­tur­ebene erschwert. Dadurch wird die Anwen­dung einer Viel­zahl poten­zi­el­ler Tak­ti­ken, Tech­ni­ken und Ver­fah­ren (TTPs) ent­we­der behin­dert oder verhindert. 

Die Sprach­lauf­zeit wird in einem Chroot-Datei­sys­tem aus­ge­führt, das einen mini­ma­len Satz gemein­sam genutz­ter Biblio­the­ken und ande­rer Abhän­gig­kei­ten ent­hält, die für die Aus­füh­rung der UDF erfor­der­lich sind. Außer­dem läuft sie inner­halb ihrer eige­nen Name­spaces, ein­schließ­lich Netz­werk, Benut­zer, Ein­hän­gen, PID, IPC, UTS, CGroup und Zeit. Die Name­space-Iso­lie­rung ist ein pri­mä­rer Mecha­nis­mus, der von gän­gi­gen Con­tai­ner-basier­ten Lösun­gen ein­ge­setzt wird. 

Alle Pro­zesse in der Sand­box-Umge­bung unter­lie­gen einem sec­comp-bpf-Fil­ter, der die Ober­flä­che der Ker­nel-Sys­tem­auf­rufe mini­miert und nur die für die Aus­füh­rung erfor­der­li­chen UDFs ein­schließt. Snow­flake kon­trol­liert außer­dem Sys­tem­auf­rufe mit ptrace, das als Teil der Funk­tio­nen zur Erken­nung von Bedro­hun­gen ver­wen­det wird, um zu erken­nen, wann die Nut­zung von Sys­tem­auf­ru­fen auf bös­ar­tige Akti­vi­tä­ten hin­wei­sen könnte. 

Kon­trolle des Egress-Ver­kehrs 

Ein Bei­spiel für einen Rechen­kno­ten mit einer siche­ren Sand­box und einer Abfrage-Engine im Inne­ren. Die sichere Sand­box und die Query-Engine sind durch einen bidi­rek­tio­na­len Pfeil mit­ein­an­der ver­bun­den. Rechts neben dem Rechen­kno­ten befin­det sich ein Egress-Proxy. Es gibt einen uni­di­rek­tio­na­len Pfeil von der Query Engine zum Egress Proxy. 
Der gesamte Netz­werk­ver­kehr zwi­schen den Rechen­clus­tern und dem Inter­net durch­läuft einen Egress-Proxy, der Zugriffs­kon­troll­richt­li­nien durch­setzt und Über­wa­chungs­auf­ga­ben übernimmt. 

Snow­flake wer­tet den gesam­ten Netz­werk­ver­kehr von Rechen­clus­tern als nicht ver­trau­ens­wür­dig. Der Ver­kehr zu inter­nen Diens­ten ist auf eine Reihe von authen­ti­fi­zier­ten End­punk­ten beschränkt. Der Ver­kehr zu exter­nen Netz­wer­ken durch­läuft einen Egress-Proxy, der Zugriffs­kon­troll­richt­li­nien durch­setzt und auf uner­war­tete Netz­werk­ak­ti­vi­tä­ten überwacht. 

Der Egress-Proxy blo­ckiert Ver­su­che, auf nicht auto­ri­sierte End­punkte zuzu­grei­fen, und mel­det sol­che Ver­su­che an das Snow­flake Inci­dent Response Team. 

Sze­na­rio eines Angriffs 

Neh­men wir an, dass ein Bedro­hungs­ak­teur, den wir als „Mal­ory“ bezeich­nen, ver­sucht, unbe­fug­ten Zugriff auf einen Rechen­kno­ten in Snow­flake zu erhal­ten, um Kun­den­da­ten zu miss­brau­chen. Sie schreibt ein Python-Skript, das ver­sucht, auf belie­bi­gen Arbeits­spei­cher und Spei­cher auf dem Rechen­kno­ten zuzu­grei­fen. Sie stellt jedoch fest, dass die Mecha­nis­men zur Durch­set­zung der Iso­lie­rung, ein­schließ­lich Name­spaces, Pro­zes­s­iso­lie­rung und ein Chroot-Datei­sys­tem, ihre Ver­su­che ver­hin­dern, auf Res­sour­cen außer­halb der ein­ge­schränk­ten Sand­box-Umge­bung zuzu­grei­fen, in der ihr Skript aus­ge­führt wird. 

Mal­orys nächste Stra­te­gie ist der Ver­such, aus der Sand­box-Umge­bung aus­zu­bre­chen, also sucht sie nach Mög­lich­kei­ten, Con­tai­ner-Escape-Tak­ti­ken anzu­wen­den. Dazu gehö­ren fähig­keits­ba­sierte Aus­brü­che, ein­häng­bare Geräte, Steu­er­so­ckets und die Aus­nut­zung von Schwach­stel­len wie CVE-2019–5736 oder CVE-2020–15257. Sie fin­det eine gründ­lich abge­schot­tete Umge­bung vor, in der die Mög­lich­keit, sol­che Tech­ni­ken ein­zu­füh­ren, ein­fach nicht gege­ben ist. 

Neh­men wir wei­ter an, dass Mal­ory eine fort­ge­schrit­tene Bedro­hungs­ak­teu­rin ist, die einen Zero-Day-Exploit anwen­det, um erfolg­reich aus der Sand­box-Umge­bung aus­zu­bre­chen und die Kon­trolle über den Com­pute-Node zu über­neh­men. Sie stellt fest, dass der Rechen­kno­ten von den meis­ten Snow­flake-Diens­ten über Netz­werk­si­cher­heits­grup­pen, die für ihre VPC gel­ten, abge­schot­tet ist. Sie ent­deckt einige End­punkte, auf die sie zugrei­fen kann, z. B. einen, der Sta­tus­in­for­ma­tio­nen für lau­fende Abfra­gen im Konto bereit­stellt. Sie benö­tigt jedoch Anmel­de­infor­ma­tio­nen, um die inter­nen Authen­ti­fi­zie­rungs­prü­fun­gen zu bewäl­ti­gen. Die ein­zi­gen Anmel­de­infor­ma­tio­nen, die sie hat, gel­ten für das spe­zi­fi­sche Konto für den Rechen­kno­ten, den sie kom­pro­mit­tiert hat. Da sie das glei­che Konto ver­wen­det, um ihren Angriff zu star­ten, hat sie kei­nen Zugriff auf Kun­den­da­ten außer­halb ihres eige­nen Kontos. 

Mal­ory denkt, dass sie zumin­dest ver­su­chen kann, den Betrieb von Snow­flake zu stö­ren, indem sie einen Denial-of-Ser­vice-Angriff durch­führt, aber sie stellt fest, dass ein Mecha­nis­mus zur Begren­zung der Über­tra­gungs­rate eine Beein­träch­ti­gung des Diens­tes ver­hin­dert und das Bedro­hungs­er­ken­nungs­team von Snow­flake über poten­zi­ell bös­ar­tige Akti­vi­tä­ten im Netz­werk informiert. 

An die­sem Punkt gibt Mal­ory den direk­ten Angriff auf die Infrastruktur von Snow­flake auf und greift statt­des­sen die Soft­ware-Lie­fer­kette eines Ziel­be­nut­zers an, indem sie tro­ja­ni­schen Code in eine Python-Abhän­gig­keit ein­schleust und so ver­sucht, die Daten des Ziel­be­nut­zers über das Netz­werk zu exfil­trie­ren. Der Egress-Proxy von Snow­flake erkennt den Ver­such des Tro­ja­ners, eine Ver­bin­dung zu einem nicht auto­ri­sier­ten End­punkt im Inter­net her­zu­stel­len, blo­ckiert die Ver­bin­dung und alar­miert das Snow­flake-Team zur Erken­nung von Bedro­hun­gen über das nicht auto­ri­sierte Netzwerkereignis. 

Trotz aller Ver­su­che von Mal­ory wurde er ver­ei­telt und/oder ent­deckt, bevor er eine Reihe von Ver­su­chen unter­neh­men konnte, das Sys­tem zu infil­trie­ren und gro­ßen Scha­den anzurichten. 

Fazit 

Dank die­ser Kom­bi­na­tion aus sicher­heits­ori­en­tier­tem Design, On-Host-Zugriffs­kon­trolle, Iso­lie­rungs­me­cha­nis­men und einem Egress-Proxy sind Snow­flake und seine Kun­den in hohem Maße vor poten­zi­ell bös­ar­ti­gem Code geschützt, der sei­nen Weg in UDFs fin­den könnte. Die Data Cloud hat das Snow­park-Team dazu inspi­riert, wei­ter­hin fort­schritt­li­che Tech­no­lo­gien zur Siche­rung Ihrer Daten zu ent­wi­ckeln. Obwohl die Ent­wick­lung von Snow­park eine ambi­tio­nierte Her­aus­for­de­rung war, zeigt das äußerst posi­tive Feed­back zu Art, Größe und Viel­falt der Workloads, die Kun­den bereits mit Snow­park aus­füh­ren, dass sich der Auf­wand für Snow­flake gelohnt hat. 

  

Quelle: medium

Erfah­ren Sie hier mehr über Lösun­gen im Bereich Snow­flake oder besu­chen Sie eines unse­rer kos­ten­lo­sen Web­i­nare.