Transcript: Security

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo, liebe Hörerinnen und Hörer, willkommen beim Python-Podcast in der 26. Episode heute.

Dominik

Heute ist das Thema Security, ein Thema, was ich persönlich sehr, sehr spannend finde.

Dominik

Dazu haben wir natürlich auch wieder Gäste eingeladen, neben dem Jochen und mir, dem Dominik,

Dominik

sind heute wieder dabei der Christian, der Toini und der Philipp. Hallo, Philipp!

Dominik

Hallo!

Dominik

Wie geht's euch? Stellt euch doch mal kurz vor, wer ihr denn seid, und dann erzählen wir ein bisschen was über die Folge.

Jochen

Tja, wer fängt an? Also, ich bin der Jochen.

Jochen

Wenn ihr diesen Podcast hört,

Jochen

habt ihr mich wahrscheinlich schon einmal dabei gehabt.

Jochen

Ja, okay. Also ich glaube,

Jochen

das brauche ich gar nicht weiter ausführen.

Jochen

Aber ich glaube, am interessantesten ist wahrscheinlich Philipp.

Jochen

Der ist jetzt gerade zum ersten Mal dabei.

Jochen

Genau. Ja, ich bin Philipp.

Philipp

Ich habe bis vor kurzem noch

Philipp

an der Uni Düsseldorf

Philipp

studiert und nachher auch gelehrt

Philipp

zum Thema unter anderem auch Security.

Philipp

Also ich habe da die Vorlesung zur

Philipp

Internetsicherheit, hieß die, glaube ich.

Philipp

Oder wie haben wir sie genannt? Also intern hieß die einfach Security.

Philipp

Die Security-Vorlesung

Philipp

gehalten. Netzwerk haben wir sie genannt.

Philipp

Also Netzwerksicherheit hieß sie offiziell.

Philipp

Und bin jetzt

Philipp

seit zweieinhalb Jahren arbeite ich

Philipp

für die Firma Boxine in Düsseldorf.

Philipp

Die ist wahrscheinlich bekannt durch ihr Produkt

Philipp

die Toni-Box. Also wenn man kleine Kinder hat, dann kennt

Philipp

man die Toni-Box. Und genau die läuft

Philipp

auch mit Python. Vielleicht kommen wir da nochmal ein bisschen dazu.

Philipp

Oh cool, da haben wir

Dominik

letztens am Wochenende noch jemanden getroffen, der für die Firma arbeitet.

Jochen

Ah, interessant. Ja, ja, ich habe mich jetzt

Jochen

letztes Wochenende, genau mit Jens, den kennst du dann wahrscheinlich

Jochen

auch lange unterhalten. Genau, der Jens ist auch in meinem Team.

Philipp

Jens ist auch ein anderer, einer von den

Philipp

Python-Entwicklern bei BoxCinema.

Philipp

Ja, cool.

Jochen

Ja, die Tony-Box ist super

Jochen

beliebt. Ja, dass es ein Python-Projekt geworden ist.

Dominik

Also ihr kennt ja bestimmt, das sind diese kleinen

Dominik

Spielzeugfiguren, die man auf eine Box

Dominik

stellt und dann spielen sie ein Hörspiel. Also für alle, die

Dominik

keine Kinder haben.

Dominik

Genau. Ja, schön.

Dominik

Also heute das Thema Security. Wir wollen das so ein bisschen

Dominik

aus mehreren Perspektiven beleuchten, die wir

Dominik

noch gar nicht so genau festgelegt haben.

Dominik

Ist wie immer, ich hab keine Ahnung, stell dumme Fragen

Dominik

und die Jungs antworten ein bisschen.

Dominik

Ja, fangen wir doch direkt an. Was ist denn Sicherheit, Security, was meint das denn? Also, dass niemand irgendwie einbricht und dann hat jemand irgendwie einen kaputten Pullover an und dann riecht er in so einem Rechner mit grüner Schrift und dunklem Monitor oder wie sieht das aus?

Philipp

Das triffst du wahrscheinlich schon ziemlich gut. Du möchtest Systeme schützen vor irgendwelchen Angreifern. Das ist das grundsätzliche Prinzip der Sicherheit.

Philipp

Du hast dann verschiedene Ziele. Ganz traditionell hat man die Intel gedreht, dass ich sagen möchte, niemand möchte etwas ändern.

Philipp

Ich habe die Vertraulichkeit, dass ich sagen möchte, niemand soll herausfinden können, welche Daten meine Benutzer haben.

Philipp

Zum Beispiel bei uns beruflich bei der Tonybox. Auf die kann man ja beliebige Audio-Teilen draufspielen.

Philipp

Und es soll auf keinen Fall möglich sein, dass irgendjemand anders die Audio-Teilen von einem Kunden abrufen kann.

Philipp

Also das wäre Vertraulichkeit.

Philipp

Und dann haben wir noch Ziele, die werden manchmal so Zuverlässigkeit genannt oder Availability.

Philipp

wo es halt darum geht, dass das System verfügbar ist die ganze Zeit.

Dominik

Okay, also schon irgendwas, was einen auch privat betreffen kann natürlich

Dominik

und vor dem man vielleicht geschützt werden möchte.

Dominik

Ja, und wie macht man das in Python?

Jochen

Ja, also ich würde jetzt so spontan sagen,

Jochen

eigentlich hat man ja in Python schon mal ganz gute Karten,

Jochen

weil ein großer Teil der wirklich bösen Fehler,

Jochen

die einem da so begegnen können,

Jochen

hat man jetzt in Python eigentlich gar nicht.

Jochen

Also so mit Buffer-Warflows hat man eigentlich eher nicht so wirklich viel zu tun.

Jochen

Obwohl, jetzt eigentlich schon wieder,

Jochen

dem müsste ich erklären, was das ist.

Jochen

Oh nein, das wollte ich schon.

Dominik

Wir sind direkt eingeschrieben, du hast gesagt, man kann Fehler machen.

Dominik

Und das bedeutet, dass Fehler zu Sicherheitslücken führen können,

Dominik

die dann Angreifer ausnutzen können.

Dominik

Ist vielleicht einer der Punkte, über die wir vielleicht reden,

Dominik

welche Sicherheitslücken es denn gibt.

Dominik

Aber was du sagst, heißt, es gibt Fehler, die jemand gemacht hat,

Dominik

also ein Entwickler, eine Entwicklerin gemacht hat,

Dominik

die dazu führen, dass es schwierig wird?

Dominik

Genau, das Programm macht dann irgendwas,

Dominik

was der Entwickler nicht gedacht hat.

Philipp

Also der Entwickler dachte sich, okay, da kommen doch immer gute Daten.

Philipp

Und dann hat jemand mit einem grünen Bildschirm und einem Kapuzenpulli nachher herausgefunden,

Philipp

okay, wenn ich ganz bestimmte Daten sende, dann macht das Programm etwas, was der Entwickler nicht wollte

Philipp

und erlaubt mir dann Zugriff auf irgendwelche geheimen Daten

Philipp

oder im schlimmsten Fall erlaubt mir sogar Code auszuführen bei irgendjemand.

Philipp

Genau, das wollen wir halt verhindern.

Philipp

Und da gibt es halt eine ganze Menge Schwachstellen, je nachdem, auf welcher Plattform man ist.

Philipp

Also zum Beispiel auch mit Python gibt es Unterschiede natürlich,

Philipp

wenn ich einen Treiber schreibe, dann kann auch der erwähnte Buffer-Overflow vielleicht schon mal passieren.

Philipp

wenn ich mit Python eher eine Web-Anwendung

Philipp

schreibe, dann muss ich mir da halt typische

Philipp

Sicherheitsblicken anschauen. Aber das ist eigentlich immer,

Philipp

dass ich irgendwelche Eingaben des

Philipp

Benutzers nicht richtig

Philipp

interpretiere und dann plötzlich komische Sachen mache.

Dominik

Benutzer-Eingabe, Speicher, also Buffer-Overflow, vielleicht noch mal

Dominik

ganz kurz, dass irgendwie der Speicher läuft

Dominik

voll und dann kommt man in Bereiche rein, die

Dominik

das Programm gar nicht vorgesehen hat und dann

Dominik

passieren komische, magische Dinge.

Dominik

Das ist dann diese Blackbox der

Dominik

Mensch mit dem kaputten Pullover.

Jochen

Naja, also ganz, ganz kurz

Jochen

irgendwie, ja, ist auch eine relativ spezielle Art

Jochen

von Sicherheitsproblemen, aber das

Jochen

war irgendwann, ich glaube, das war dann Mitte der 90er,

Jochen

ich weiß nicht mehr so ganz genau, gab es einen Artikel

Jochen

im Frag Magazine

Jochen

von Aleph One

Jochen

irgendwie, Smashing the Stack for Fun

Jochen

and Profit und

Jochen

es betrifft vor allen Dingen die

Jochen

Programmiersprache C, die ist halt,

Jochen

da sind Strings Nullpointer terminiert

Jochen

und, naja,

Jochen

Ach so. Genau.

Jochen

Also da steht nicht

Jochen

einem String vorher dran, der ist jetzt so und so

Jochen

lang und dann liest man halt nur bis da,

Jochen

sondern man liest halt so lange, bis halt ein Nullbyte

Jochen

kommt und dann hört man halt auf damit

Jochen

oder halt eben auch nicht, wenn man irgendwie das

Dominik

falsch macht. Ah, das heißt, wenn man am Ende sagt, da sind

Dominik

gar keine Nullbytes, sondern sein eigener Code, dann liest

Dominik

ja gar nicht, liest das immer noch weiter. Genau,

Jochen

wenn man zum Beispiel einen festen Buffer definiert hat

Jochen

und aber nicht

Jochen

überprüft, ob die Eingabe von dem Benutzer halt

Jochen

vielleicht länger ist, dann kann man halt über den Buffer

Jochen

hinwegschreiben unter Umständen

Jochen

und dann halt auch, also was man

Jochen

dann macht, man schreibt dann irgendwie eine Menge

Jochen

ein NOPS, was ist das?

Jochen

Irgendwas A oder so

Jochen

rein, hofft dann, dass

Jochen

beim Rücksprung aus der Funktion irgendwie

Jochen

man in diesem Bereich landet und dann rutscht

Jochen

es halt durch bis zu einem Shell-Code, den man mit reingeschrieben

Jochen

hat. Und dann kann man also im besten Fall

Jochen

irgendwie direkt das Programm

Jochen

komplett übernehmen. Und

Jochen

ja, das war

Jochen

lange Zeit war das ganz,

Jochen

viel Server-Software hatte

Jochen

diese Fehler und man konnte das halt ausnutzen.

Jochen

Obwohl, ich meine, heute spielt

Jochen

das vielleicht auch immer noch eine Rolle, vielleicht eher

Jochen

so bei Clients, ich glaube Server,

Jochen

obwohl gibt es vielleicht immer noch, ich weiß es nicht mehr so genau,

Jochen

ich habe auch lange nicht mehr drauf geguckt.

Jochen

Ja, aber das ist halt so eine, das ist eigentlich genau

Jochen

so das, was sich Leute vielleicht

Jochen

vorstellen, wenn man

Jochen

davon redet,

Jochen

dass jetzt irgendwie irgendwelche

Jochen

Server gehackt werden oder so.

Jochen

Man gibt irgendwas ein oder führt ein Programm

Jochen

aus und dann hat man eine Shell auf einem anderen System,

Jochen

wo man einfach Code ausführen kann oder beliebige

Jochen

Kommandos. Da kann man

Christian

auch tatsächlich sozusagen diese Perspektiven

Christian

von, man muss halt

Christian

da kann man nochmal einen ganzen Schritt zurückgehen, weil

Christian

im Prinzip das Thema Sicherheit

Christian

kann man noch weiter aufmachen

Christian

wenn ich halt

Christian

Philipp hatte gesagt

Christian

Anwenderinput, das ist so ein

Christian

das muss oder kann man noch weiter

Christian

abstrahieren, weil im Prinzip

Christian

sind Viren halt auch nichts anderes als

Christian

Anwenderinput

Christian

das ganze Thema von

Christian

Security lässt sich halt darauf

Christian

zurückführen, warum muss ich überhaupt darüber reden, warum

Christian

macht ein Programm überhaupt was, was man nicht will

Christian

lässt sich halt

Christian

stark darauf zurückführen, dass

Christian

wir halt eine sogenannte Verneumann-Architektur

Christian

haben. Ja, das geht halt zurück

Christian

auf die, was weiß ich jetzt, gar nicht mehr.

Christian

Mir wurde immer vorher geworfen, Opa redet

Christian

vom Krieg, aber da war ich nicht dabei.

Christian

60er, 70er,

Christian

irgendwo da, noch älter, 40er

Christian

Verneumann-Architektur, noch älter.

Christian

Das war vor dem

Christian

Zweiten Weltkrieg wahrscheinlich sogar.

Christian

Irgendwo da.

Christian

Also als es so richtig losging, gerade erst

Christian

mit den ganzen allgemeinen Rechenmaschinen.

Christian

Und die von Neumann-Architektur hat halt ein wichtiges Konzept

Christian

und das ist halt, dass der Programmspeicher

Christian

und der Datenspeicher eins sind.

Christian

Es gab früher Rechner-Architekturen,

Christian

da waren Daten von der Eingabe

Christian

und die Daten, die den Prozessor gesteuert haben,

Christian

also das Programm, komplett getrennt.

Christian

Macht halt das große Problem,

Christian

dass du nicht einfach irgendwie Programme als Daten runterladen und ausführen kannst.

Christian

Also der Effekt, den wir dadurch haben von der Neumann-Architektur ist ja,

Christian

ich kann ins Internet gehen, kann mir Daten runterladen und sie dann als Programm ausführen.

Christian

Das Problem ist aber, der Vorteil ist gleichzeitig der Nachteil.

Christian

Das heißt, auch Daten, die vielleicht gar nicht als Programm gedacht waren, werden als Programm ausgeführt.

Christian

Und das ist sozusagen die ganze Krux daran, dass die CPU schon nicht unterscheiden kann von,

Christian

sind die Bytes bei mir gerade gedacht für, ich soll mit ihnen rechnen

Christian

oder ich soll damit meinen Instruction-Pointer befüttern.

Christian

Und das kannst du halt, da gibt es ein,

Christian

dieses Grundproblem wird never ever jemals weggehen.

Christian

Das geht nie weg.

Philipp

Na gut, also, moderne CPUs haben ja durchaus einige Verteidigungen dagegen.

Philipp

Also, moderne CPUs haben einen Marker, wo dann drin steht,

Philipp

okay, diese Speicherseite ist ausführbar oder nicht.

Philipp

Und genau das geht ja dann schon in Richtung der konkurrierenden Harvard-Architektur ein bisschen,

Philipp

dass man sagt, okay, das sind die Daten, das sind die Instruktionen.

Philipp

Aber natürlich gibt es immer noch Tricks.

Philipp

Also selbst bei den Buffer-Overflows

Philipp

gibt es halt sehr, sehr viele Möglichkeiten,

Philipp

wie man genau dann doch irgendwie noch ein Programm konstruieren kann,

Philipp

das dann eigentlich nur aus Daten besteht.

Philipp

Also wo du sagst, okay, das sind eigentlich nur Daten,

Philipp

aber die auf komischen Stellen liegen

Philipp

und dann trotzdem den Programmfluss irgendwie beeinflussen.

Dominik

Das ist spannend, weil ich wollte eigentlich zu dieser Frage mit den,

Dominik

was machen denn die CPUs dann da falsch,

Dominik

ganz zum Schluss kommen, ihr habt ja jetzt damit den Einstieg gefunden,

Dominik

Das ist die unterste Ebene, auf der wir jetzt anfangen.

Dominik

Ich finde das aber sehr spannend, weil was du sagtest,

Dominik

dass diese unterschiedlichen Architekturen,

Dominik

also ich glaube, von Neumann nennt man auch irgendwie Princeton-Architektur.

Dominik

Und ich glaube, es war irgendwie, ich habe gerade nachgeguckt,

Dominik

1945, als sie rausgekommen ist.

Dominik

Und diese Harvard-Architektur, die daneben liegt,

Dominik

die macht halt diese Getrennung von Daten und Programmspeicher.

Dominik

Und du sagst jetzt, es gibt auf dem CPU,

Dominik

also der CPU benutzt für alle Menschen, die vielleicht nicht so drin sind,

Dominik

Opcodes, also Operation Codes.

Dominik

Das heißt, die sagen, was für eine Rechenoperation

Dominik

der machen soll, der Kern.

Dominik

Und dann macht der genau mit den Daten,

Dominik

die ihm dazu geschickt werden,

Dominik

in den einzelnen, was sind das, Decks?

Dominik

Nein, Registern irgendwie,

Dominik

macht der dann diese Operation.

Dominik

Und da kann was schief gehen.

Dominik

Philipp, vielleicht kannst du das

Dominik

noch ein bisschen erklären,

Dominik

weil das klingt ja sehr spannend.

Philipp

Ja, weil wenn ich einen ganz klassischen

Philipp

Buffer-Overflow habe, was dann halt passiert ist,

Philipp

wie gesagt, der Benutzer,

Philipp

der Benutzer in Anführungszeichen,

Philipp

aber in Wirklichkeit ist das der Angreifer,

Philipp

gibt halt irgendwie eine längere Datenfolge an

Philipp

und wie wir eben schon erwähnt haben,

Philipp

da könnten dann zum Beispiel verschiedene Instruktionen

Philipp

wie Knob-Codes drin vorkommen

Philipp

und das sieht aus wie ein normaler Text,

Philipp

aber das ist halt genauso designt,

Philipp

dass man das auch als Ob-Codes für die CPU interpretieren kann.

Philipp

Und genau das ist das Problem dann nachher,

Philipp

dass der Entwickler dachte, okay, da kommt einfach nur Text rein,

Philipp

aber in Wirklichkeit hat der Angreifer den Text so geschickt konstruiert,

Philipp

dass er ein gültiges Programm ist.

Christian

Und es ist sozusagen, wir können für die CPU, weil das konkret zu machen ist häufig sehr schwer so im Luftlernraum, aber weswegen ich schnell zur Neumann-Architektur gegangen bin, ist, das Problem ist ein ganz grundsätzliches Architekturproblem und die Features, die wir jetzt da oben drüberlegen, wie zum Beispiel non-executable pages und so ein Kram oder was dann halt auf anderen Ebenen kommt, Address Randomization und so ein Zeug.

Christian

Das sind alles bloß kleine Trostpflaster und man macht es den Angreifern schwerer und teilweise auch um Größenordnungen schwerer, dagegen anzukommen, aber das Restrisiko kann in der Architektur halt nie weggehen, sie wird nie weggehen.

Christian

Und die Effekte, die wir aber sehen, lassen sich auf anderen Ebenen genauso wieder erklären und ein Buffer-Overflow lässt sich gut vergleichen und das ist für viele Leute wieder einfacher vorstellbar, wie mit einer SQL-Injection.

Christian

Das ist genau das Gleiche.

Christian

Die SQL-Injection ist, gib hier bitte deinen Namen ein

Christian

und dann kommt das berühmte

Christian

Mein Name ist Bobby bla bla bla

Christian

Semikolon Drop Tables.

Christian

Und auch da ist es so,

Christian

das Programm hat gedacht,

Christian

ich habe eine Eingabe

Christian

und die Datenbank

Christian

haut dann aber einmal volle Kanne daneben

Christian

und sagt, na das ist doch jetzt die nächste Query hier.

Christian

Weil wir drücken ja alles als Text aus.

Christian

Der Name ist Text

Christian

und das Programmierstatement

Christian

für die SQL-Datenbank ist auch nur

Christian

Text und wird dann aber eben

Christian

als Programm interpretiert. Und wenn

Christian

ich das eben nicht richtig

Christian

escape an der Stelle,

Christian

dann finden solche Modusübergänge statt,

Christian

wo etwas, was eigentlich als Eingabe zu verarbeiten

Christian

gewesen wäre. Und der Trick ist ja eben der

Christian

von Neumann Architektur,

Christian

die SQL,

Christian

das SQL-Statement,

Christian

was ich an den Server drücke, ist ja aus

Christian

Server-Perspektive erstmal Daten,

Christian

die als Programm zu interpretieren

Christian

sind. Und wenn da drin halt Mist stattfindet,

Christian

dann geht da alles quer durcheinander.

Christian

Und das ist im Buffer-Overflow im Prinzip nichts anderes.

Dominik

Also das Glas Milch, das zu voll ist und dann tropft das auf die Erde und dann hat man alles nass und denkt sich, oh nein.

Dominik

Ja, genau.

Christian

Buffer-Overflow ist sozusagen die Variante von, das Glas ist zu voll.

Christian

Und auch Python schützt einen vor sowas im Prinzip erstmal nur im Sinne von, ja, Python selber gibt sich extrem viel Mühe, selber keinen Mist zu machen.

Christian

Wenn du aber, und ich habe mit sowas halt selber auch, also ich sage immer, ich fasse C nur dann an, wenn die anderen es verrissen haben.

Christian

Ich schreibe nie C-Code neu.

Christian

Ich habe den C-Code nur in der Hand,

Christian

wenn die anderen es völlig kaputt gemacht haben

Christian

und ich gerade so noch weiß, wie ich es wieder ganz mache.

Christian

Der Psycho-PG ist zum Beispiel halt im Datenbankumfeld.

Christian

Da merkt man so, dass die Leute halt eigentlich keine C-Programmierer sind,

Christian

wenn man den Code anguckt.

Christian

Und es hat lange gehalten.

Christian

Philipp macht genau das richtige Gesicht.

Christian

Das können jetzt die Podcast-Hörer nicht hören.

Christian

Aber wir haben so einen Corona-tauglichen Video-Back-Channel.

Christian

Und da ist es halt zum Beispiel so, nicht jeder Buffer-Overflow ist gleich halt als Security-Problem ausnutzbar.

Christian

Bevor ich halt sozusagen selber Code ausführen kann, kommen noch andere Fehlerklassen oder Effekte vorher.

Christian

Typischerweise ist das dann erstmal ein Denial of Service, also zum Beispiel, dass halt das Programm crasht.

Christian

Das ist erstmal noch nicht so dramatisch, das ist natürlich auch aus dem Thema Availability als eine der vier Sicherheitsperspektiven.

Christian

Nur die Recovery ist halt einfacher typischerweise.

Christian

Bei dem Crash starte ich im schlimmsten Fall, starte ich normalerweise die Anwendung einfach neu, dann geht es weiter.

Christian

Und beim Psycho war es zum Beispiel so, dass es im Postgres gibt Encoding-Namen.

Christian

Und die meisten Encoding-Namen, die von den Leuten verwendet werden, haben ein Minuszeichen drin.

Christian

ISO 88591 und so ein Kram.

Christian

Und im Psycho-PG ist es so, dass der Encoding-Buffer tatsächlich davon ausgeht, dass da ein Minus drin ist und sie meinten, es wäre eine gute Idee, sie müssen alles normieren und die Minusse rausnehmen.

Christian

Und das ist im Postgres auch okay, der hat die ganzen Encoding-Namen auch immer noch mit ohne Minus rumliegen und ein Kunde von uns kam aber dann damals auf die Idee, es gibt in Postgres einen Alias für UTF-8, der heißt Unicode.

Christian

So, und dann hat der Psycho halt gesagt, naja, jetzt kommt hier ein Encoding-Name, also streiche ich das Minus raus,

Christian

allozie einen neuen Buffer, der genau ein Byte kürzer ist und schreibt dann Unicode ohne Minus in einen statt, was haben es,

Christian

U-N-I-C-O-D-E, in einen sechs Byte langen Buffer statt in einen sieben Byte langen Buffer.

Christian

Und weil sie aber nicht einfach nur malloc benutzt haben, weil ganz kleine Objekte zu allociieren im Speicher halt ineffizient sein kann,

Christian

hat Python einen sogenannten Small Object Allocator.

Christian

Damit kann ich eine Page, die ist typischerweise ein K oder sowas, je nachdem, System kann ja auch ein Megabyte oder größer sein, aber gehen wir mal von einem K aus oder 4K, dann packt Python halt solche 6-Byte-Objekte alle zusammen in eine Page und dann brauche ich halt statt irgendwie, wenn wir kurz rechnen, 1066 sind 20, nee, 200, 200, dann brauche ich halt statt 200 Pages, also statt 200K nur 1K.

Christian

Die werden eng an eng hintereinander gepackt und was dann passiert ist, ist, dass der Server, der das hatte, so alle Woche mal gecrashed ist und ich habe das halt versucht rauszufinden und irgendwann habe ich da mit, ich glaube, ich habe mit Guido mal reingeguckt, ich habe mit Martin von Löwis reingeguckt, allmöglichen Leuten und irgendwann haben wir festgestellt, der schreibt dann halt manchmal genau auf den letzten Eintrag in dieser Page dieses eine Byte zu viel

Christian

Und das eine bei zu viel in einer sogenannten Arena im Small Object Allocator

Christian

ist der Pointer auf die nächste Arena.

Christian

Und der landet dann halt im Nirvana.

Christian

Und dann gibt es halt ein SegFault und dann sagt das Linux halt, so geht es hier nicht.

Christian

Und das ist ein typisches Beispiel für, da hat jemand dann einen zu kleinen Buffer alloziiert.

Christian

Das ist dann ein Buffer-Overflow.

Christian

Er schreibt mehr Daten rein, als da reingehören, weil er sich einfach bloß verrechnet hat.

Christian

Und der Effekt muss noch nicht sein, dass jemand Code ausführen kann.

Christian

Aber der Effekt ist halt typischerweise, dass das Programm anfängt Müll zu machen und dann haben wir, Philipp hat da ja auch genickt, schon mal die Availability, die Verfügbarkeit von der Anwendung reduziert und das ist ein Sicherheitsproblem tatsächlich auch.

Philipp

Genau, es könnte ja auch dann sein, dass das nachher auf einem Server irgendwo läuft, wo dein Postgres läuft und das kann vielleicht auch jemand, den Server möchtest du für viele Kunden bereitstellen und dann ist es auch richtig kritisch, wobei hoffentlich niemand dein Encoding im Server steuern kann, das wäre wahrscheinlich eine andere Sicherheitslücke.

Jochen

Ja, aber also Denial of Service ist halt, das ist böser, als die meisten Leute so zunächst vermuten würden. Ich meine, wir hatten ja jetzt auch letztens irgendwann in Düsseldorf an der Uniklinik ja auch so einen eher gemeinen Fall. Irgendwie so diese Ransomware-Geschichten, die es da gibt. Ich weiß nicht, das war irgendeine Remote-Verwaltungssoftware. Ich weiß nicht, den Namen wieder vergessen.

Jochen

Citrix. Citrix, genau.

Jochen

Ja, irgendeine uralte Version davon und dann

Jochen

ist irgendjemand hingegangen und hat denen ihre Daten

Jochen

verschlüsselt oder so und hat sie erpresst.

Jochen

Und da ist, glaube ich, dann tatsächlich auch jemand bei gestorben oder so.

Jochen

Das war irgendwie sehr unschön.

Jochen

Ja.

Jochen

Das ist dann auch der Teil,

Christian

den grenzt man in der Security manchmal ab.

Christian

Im Englischen ist es halt... Safety.

Christian

Ja, das ist im Deutschen

Christian

haben wir das sozusagen nicht getrennt.

Christian

Ich finde das eigentlich so ein schönes

Christian

Beispiel, dass

Christian

Konzepte mit

Christian

extra Begriffen in anderen Sprachen einem nochmal

Christian

einen neuen Blick liefern, dass

Christian

Sicherheit im Englischen halt mit Security und mit Safety

Christian

übersetzt werden kann und Safety

Christian

ist halt die auf Menschenleben

Christian

und körperliche Unversehrtheit bezogene

Christian

Perspektive von Sicherheit

Christian

und Security ist halt die Frage, ob das

Christian

Fahrrad noch da ist. Aber kannst

Philipp

du das denn in der modernen Gesellschaft wirklich auseinanderhalten?

Philipp

Ja, das ist halt sozusagen genau

Philipp

das Thema, dass man

Christian

und damit machen wir jetzt einen schönen

Christian

nächsten Bogen, dass Security extrem

Christian

kontextspezifisch ist.

Dominik

Also ich stelle mir gerade die Gesichtsbemalung vor, die dazu führt, dass die Kamera den Algorithmus verändert und ein anderes Gesicht immer in die Daten erkennen lässt und dann kann ich mich tarnen mit einer gewissen Schminke und als jemand anderes ausgeben. Weil der Algorithmus dadurch denkt, ich bin jemand anderes, weil ich einen anderen Gesichtshash bekomme oder so.

Christian

Das ist der Schwamm in dem ganzen Machine Learning Umfeld, dass du diese adversarial Models hast, dass du sozusagen auf der einen Seite ein Model haben kannst, was Dinge erkennt und jemand anderes weiß aber, wie er auf Basis eines Models Outputs generiert, die dieses Model dann wieder aus dem Takt bringen.

Dominik

Ja, nur für seinen Social Score oder sowas kann man den dann hochhalten, obwohl man andere Sachen tun kann.

Christian

Die Ecke von Philipp fand ich jetzt nochmal wichtig und spannend, dass halt dieses Thema, ah, hier passiert ja nichts Schlimmes. Das Interessante ist eben, durch dieses Architekturproblem trifft es halt alle und jeden. Also jedes Stückchen Code, was du schreibst und mit dem großen Problem Dual Use, du weißt halt nie, wofür wird Code halt mal eingesetzt werden.

Christian

Den schreibt man jetzt und der ist da und ganz ehrlich, Leute, die Code finden, werden ihn benutzen. Er wird irgendwo benutzt werden und er wird für Dinge benutzt werden, die man sich nicht vorgestellt hat. Wobei ich da auch immer eine Lanze dafür breche, zu sagen, naja, der, der den Code in den Kontext einführt, hat die Verantwortung, sicherzustellen, dass er da was Sinnvolles tut.

Dominik

Dann mach mal ein Projekt mit NPM-Paketen oder sowas.

Christian

Genau, ja, aber das ist deren Verantwortung.

Christian

Es ist nicht die Verantwortung von jemandem,

Christian

es gibt im Open-Source-Umfeld, kann man ja auch viel da nochmal drüber reden,

Christian

über die Motivation von Leuten, die halt so Open-Source-Packages maintainen,

Christian

die dann ein riesen Schwergewicht kriegen.

Christian

Ich finde, die Leute haben keine moralische Verpflichtung,

Christian

anderen gegenüber aus ihrem Freizeitprojekt, wo sie sagen,

Christian

da steckt einfach nur meine Lust und meine persönliche Motivation drin,

Christian

anderen Garantien auszusprechen, dass

Christian

sie damit jetzt einen Space Shuttle betreiben

Christian

können.

Christian

Das darf man so nicht umdrehen

Christian

und nichtsdestotrotz

Christian

ist es natürlich

Christian

ein

Dominik

Das ist alles ein etwas zusammengeschimmertes

Dominik

kleines Raumschiff, was immer droht auseinander

Dominik

zu fallen, was auf der einen Seite mit Kohle und auf der

Dominik

anderen Seite mit einem Handpedal betrieben wird

Dominik

und keiner so genau weiß, wo denn jetzt

Dominik

das nächste Leck entsteht.

Jochen

Ja, ich hätte auch

Jochen

große Bedenken, irgendwie so medizinische

Jochen

Software für medizinische Geräte zu schreiben oder

Jochen

irgendwelche Software, die Flugzeuge

Jochen

steuert oder so, da hätte ich irgendwie

Jochen

groß, würde ich wahrscheinlich eher lieber nicht.

Jochen

Wahrscheinlich schon bei Bank-Transaktionsgeschichten

Jochen

schon bedenken, aber...

Christian

Allein das zeichnet dich aber eigentlich schon aus

Christian

als jemand, der qualifiziert sein könnte,

Christian

das zu tun.

Jochen

Zu viele

Christian

Leute gehen nämlich ohne

Christian

diese Vorsicht heran.

Christian

Also, man hat mal

Christian

früher gesagt, die Deutschen bauen die besten Nationenkraftwerke,

Christian

weil die so scheiß viel Angst davor haben.

Christian

und halt entsprechend in die

Christian

Sicherheit investieren.

Christian

Deswegen ist Siemens mit der

Christian

Atomkraftwerke so ein Exportschlager.

Christian

Andere haben halt weniger Angst

Christian

davor und machen dann halt

Christian

auch weniger Sicherheit.

Christian

Das ist so ein bisschen ein

Christian

wer sich halt auf dem Fahrrad sicher fühlt

Christian

und keinen Helm aufsetzt,

Christian

wer sich unsicher fühlt und einen Helm aufsetzt, ist am

Christian

Ende bei einer echten Kollision halt

Christian

feiner raus.

Jochen

Ja, aber ich meine, das ist einfach

Jochen

Ich glaube, also das, was mich da so unsicher fühlen lässt, ist halt einfach, es ist schwer überhaupt sicherzustellen, dass da nichts passieren kann. Es ist einfach, es kann so viel schief gehen.

Christian

Es geht auch nicht. Das ist dann der schöne Übergang zu dem Thema Security als Prozess halt. Man kann halt immer, ich glaube etwas, was lange in der Informatik gelehrt wurde, ist halt das Problem sozusagen Security als abstrakte mathematische Eigenschaft eines Systems.

Christian

Das wird an vielen Stellen auch noch verfolgt und da kommen interessante Sachen raus, gerade wenn wir gucken in Richtung strenger Typsysteme und all so ein Zeug. Also ADA zum Beispiel, dieses ganze Umfeld. Und da finde ich es auch spannend, dass die tatsächlich dort Engineering haben.

Christian

Und ich hatte ADA nur mal im Studium und muss sagen, also es ist halt, was die Garantien angeht, wirklich straff. Es ist auch ziemlich schnell. Ich habe aber nie irgendwas Sinnvolles damit programmieren können.

Dominik

Kannst du vielleicht nochmal ganz kurz erklären, was ADA ist?

Christian

ADA ist eine Sprache, die ist extrem formal definiert und die wird hauptsächlich im militärischen Bereich eingesetzt. Also bei uns an der Uni ist die gelehrt worden und dann gab es halt gerne mal von der Eurocopter und von anderen Leuten Besuche, wo es dann darum ging, irgendwie Steuersysteme für Kampfhubschrauber und so ein Kram zu programmieren.

Christian

Und die ist halt, die zeichnet sich dadurch aus, dass sie ein sehr umfassendes Typsystem hat. Das heißt, da wo man in anderen Sprachen halt sagt, ich hatte hier gerne einen Integer, kannst du dem Ding halt sagen, ja, ich will hier einen Integer haben, der darf aber nur von 7 bis 9, 11, 13 und 12 sein.

Christian

Und der Compiler kann dir vorher über alle Operationen deines Programms schon sagen, ob die Verkettung der Operationen in Summe noch zu zulässigen Ergebnissen führt.

Christian

Oder ob du irgendwo deine Wertebereiche sprengen würdest. Und gleichzeitig, und das ist halt wirklich cool, die können halt Echtzeit und sie sind auch auf anderen Systemen sehr, sehr schnell in der Laufzeit nachher. Und das ist halt, das ist was wert.

Christian

Gleichzeitig ist es aber so, immer wenn es um I.O. geht, nämlich da, wo halt dieses Thema, da kommen Daten von draußen rein oder müssen wieder raus, da gucken sie so ein bisschen in die Luft und sagen, naja, das macht jemand anders.

Christian

Das ist dann halt immer, also da herzugehen und zu sagen, ich hätte jetzt hier gerne mal noch schnell eine HTTP-Library und ich würde hier nochmal eine SSL und nochmal da drüben ein Repository von GitHub, sowas ist bei aller halt eher nicht so an der Tagesordnung und du brauchst halt auch eine entsprechende Engineering-Menge und Genauigkeit, all die Kombinationen, mit denen du sozusagen konfrontiert wirst, dir so genau anzugucken, das lohnt sich halt auch eigentlich nur, wenn da wirklich Menschenleben dranhängen.

Christian

Wenn du sagst, es ist okay, wenn dieses kleine Programm jetzt zwei Millionen Euro kostet, wo jemand anders sagt, komm, da hack ich dir jetzt das Shell-Skript runter und dann ist es gut. Da muss man immer aufpassen, dass es halt kontextbezogen ist. Also die kommen halt aus dieser Ecke von einer mathematisch perfekten, idealisierten Variante von so, wir schreiben jetzt das Programm und das ist dann sicher. Und wenn du in ausreichend komplexe Systeme kommst, musst du aber eigentlich eher einen prozessorientierten Ansatz machen.

Jochen

Genau, da würde ich nämlich jetzt auch gerade noch kurz einhaken und sagen, naja, das Blöde ist, dass einem halt auch diese Geschichten nicht unbedingt schützen vor wirklich fatalen Fehlern, wie zum Beispiel, ich weiß nicht, ob das der Jungfernflug von irgendeiner neuen Ariane-Version war, Ariane 5, Ariadne oder Ariane, Ariane, glaube ich, 5.

Jochen

Ich glaube, auch die Steuerungssoftware dafür ist auch in ALA geschrieben oder so.

Jochen

Und die ist sogar bewiesen, dass die tatsächlich das tut, was in der Spezifikation steht.

Jochen

Nur das Problem ist halt, sie haben irgendwie die falsche Spezifikation verwendet.

Jochen

Das war Wind.

Jochen

Nee, die Spezifikation war halt für die alten Motoren irgendwie.

Jochen

Und dann waren die Sensordaten für den Computer halt irgendwie so, nee, das kann nicht sein.

Jochen

Aber es ist ja bewiesen, das ist richtig, daher muss ich defekt sein.

Jochen

dann hat sich der erste Steuerungskomputer ausgeschaltet

Jochen

und dann hat sich der zweite auch noch ausgeschaltet,

Jochen

der den übernommen hat und dann war halt Schluss.

Jochen

Und dann ist die Rakete halt abgestürzt.

Jochen

Und ja, das ist ja auch sowas.

Jochen

Ich meine, klar, man kann halt beweisen manchmal,

Jochen

dass Programme das tun, was sie tun sollen,

Jochen

aber dann muss man ja immer noch sicher sein können,

Jochen

dass die Spezifikation richtig ist.

Jochen

Aber irgendwie, man kommt da in so einen infiniten Regress

Jochen

und selbst das hilft einem nicht.

Dominik

Das war jetzt ein Fall, wo ein Hardware-Update dazu geführt hat,

Dominik

dass das Ding nicht mehr lief.

Dominik

Also keine Updates fahren, never touch a running system.

Philipp

Aber auch in Python hat man ja nicht völlig verloren.

Philipp

Also auch wenn Python solche strengen Garantien

Philipp

nicht so direkt hat, man kann natürlich Assertions

Philipp

einbauen und damit kann man so ein bisschen

Philipp

in die Richtung gehen, was Ada auch kann.

Philipp

Wenn ich sage, ich baue hier ein Assertion ein und sage,

Philipp

okay, ich erwarte, dass die Eingabe nur so lang

Philipp

ist oder ich erwarte, wie du eben als Beispiel gebracht

Philipp

hast, Christian, dass halt nur irgendwelche bestimmten

Philipp

Zahlen davor kommen, das kann ich auch in Python

Philipp

machen. Das geht, das macht den Code

Philipp

ein bisschen länger, da muss man sich ein paar Gedanken

Philipp

machen, aber das ist ja sicherlich auch

Philipp

ein Merkmal

Philipp

von qualitativen Code, dass man sich halt immer Gedanken

Philipp

macht, okay, was sind meine Eingangsbedingungen,

Philipp

was sind meine Bedingungen,

Philipp

die ich vielleicht rausgebe, dass ich auch schaue, okay, die Daten,

Philipp

die ich nochmal rausgebe, die kann ich

Philipp

in ein anderes Modul in meinem Programm, die kann ich auch nochmal

Philipp

validieren, dass da alles in Ordnung ist, dass das zum Beispiel

Philipp

irgendeinem Schema entspricht oder sowas.

Philipp

Also das ist ja auch in Python nicht unmöglich

Philipp

und es gibt natürlich auch in Python noch sehr viele

Philipp

andere Sachen im Rahmen eines sicheren

Philipp

Prozesses, die ich durchführen kann. Also das beginnt

Philipp

ja bei ganz normalem Code Review.

Philipp

Da guckt halt jemand anders drauf und sagt halt vielleicht, okay, der Code sieht komisch aus. Und dann kann ich halt sowohl Tests durchführen gegen den Source-Code, also dass ich mir den gesamten Source-Code nehme und ein automatisiertes Programm drüber laufen lasse, das mir halt sagt, okay, die Stelle sieht komisch aus. Hier machst du wahrscheinlich eine SQL-Injection oder ein C, ein Buffer-Overflow, das sieht irgendwie gefährlich aus.

Philipp

Und dann kann ich natürlich auch sogenannte Blackbox-Tests fahren, wo ich sage, okay, ich starte meine Anwendung einfach mal und dann nehme ich mal so ein Hackertool und das probiert einfach mal aus, kann ich hier komische Sachen eingeben und crashen in das Programm oder macht das Programm irgendwas komisches. Also auch in Python ist das nicht verloren. Da kann man auch sehr sichere Anwendungen schreiben, was meistens das gleiche ist wie eine gute Anwendung zu schreiben, weil die stört es halt nicht ab und die kann auch mit allen Benutzerangaben umgehen, noch nicht mal nur von Angreifern, sondern auch von Benutzern.

Philipp

Also ich hatte das beruflich auch so, wir dachten erst, wir hätten einen Angreifer, weil unsere Anwendung abgestürzt ist, aber hat sich herausgestellt, wir hatten ein ähnliches Problem wie beim Buffer-Overflow, wir hatten ein Datenbankfeld mit einer bestimmten Länge und die Länge war aber in Bytes und dann kamen halt User an und haben ihre kleine Tony-Figur mit ganz vielen Smileys genannt und dann passte das nachher nicht und führte zu einem Crash.

Philipp

und auch sowas kann man natürlich auch vorher darauf achten

Philipp

und entsprechend auch testen.

Philipp

Das ist ja noch ein anderer Bestandteil eines sicheren Prozesses,

Philipp

der sagen kann, ich schreibe vorher Tests

Philipp

und ich überlege mir entweder manuell oder sogar automatisiert,

Philipp

wie sehen komische Eingaben aus.

Philipp

Bei Nummern sind das meistens Null oder sehr kleine Zahlen

Philipp

oder sehr große Zahlen.

Philipp

Typischerweise auch Zahlen,

Philipp

die vielleicht über die 32 Bytes hinausgehen,

Philipp

was in Python jetzt nicht so ein Problem ist

Philipp

oder über die 64 Bits hinausgehen.

Philipp

Also wenn ich da eine sehr große Zahl,

Philipp

wenn ich 2 hoch 64 plus 1 schreibe,

Philipp

dann in Python gar kein Problem.

Philipp

Aber in vielen anderen Programmiersprachen

Philipp

führt das halt zu einem Absturz

Philipp

oder zu komischem Verhalten.

Philipp

Und damit kann ich auch in Python, glaube ich,

Philipp

sehr gut Sicherheit sichern.

Dominik

Also du würdest tatsächlich in solchen kritischen Fällen,

Dominik

wo du dir überlegst,

Dominik

ah, ich weiß nicht so genau, was dabei rauskommt,

Dominik

Assertment-Statements in den Code schreiben einfach

Dominik

und dann sagen Asserts should never happen oder sowas

Dominik

und dann... Genau, und

Dominik

fliegt dann. Genau, auch vielleicht

Philipp

auf Testen. Also bei dem Beispiel, was ich eben gebracht

Philipp

habe, wo die Nutzer Emojis eingeben

Philipp

haben oder andere komische Unicode-Zeichen,

Philipp

haben wir halt einen Test gemacht. Und dieser Test,

Philipp

also wir haben sowohl einen Unit-Test,

Philipp

der also ganz normal in der Anwendung

Philipp

läuft, wo wir halt mal ausprobieren, was passiert,

Philipp

wenn ich nur Emojis eingebe oder andere

Philipp

komische Strings. Und wir haben aber auch einen

Philipp

End-to-End-Test, der das

Philipp

gesamte System testet. Also zum Beispiel

Philipp

hatten wir auch mal einen Bug, der

Philipp

durch

Philipp

den Reverse-Proxy vor unserer Anwendung

Philipp

verursacht wurde, dass der halt Sachen falsch

Philipp

macht. Und sowas kann man dann halt

Philipp

nicht so richtig testen. Natürlich könnte man auch in

Philipp

Nginx sagen, ich schreibe eine Art Unit-Test

Philipp

für unsere Nginx-Konfiguration, aber

Philipp

da ist dann praktisch halt wirklich ein End-to-End-Test zu schreiben,

Philipp

der halt

Philipp

wirklich eine echte Anfrage gegen das echte System

Philipp

schickt oder gegen Prot, also da kann man sogar gegen sein

Philipp

Production-System testen, aber natürlich testet

Philipp

man das im Normalfall zuerst gegen Development

Philipp

und sendet mal komische Anfragen

Philipp

und schaut, okay, geht das?

Philipp

Kommen hier ordentlich Ergebnisse raus und

Philipp

meldet das System vielleicht auch

Philipp

hinten drum schon, dass irgendwas umgefallen ist

Philipp

und das kann man halt

Philipp

damit schon ganz gut testen.

Philipp

Ich finde das halt auch spannend

Philipp

aus der Perspektive von

Christian

User lassen sich halt

Christian

mehr Dinge einfallen, als man selber halt

Christian

vorher konstruieren kann.

Christian

Tests sind an der Stelle immer natürlich auch super,

Christian

weil man, wenn man im Hinterkopf behält,

Christian

dass Tests halt eben nicht

Christian

dafür da sind, Beweise

Christian

zu ersetzen. Also ja,

Christian

Sie sind sogar eine Annäherung eines Beweises, aber sie können halt nie alle Fälle abdecken.

Christian

Das geht halt schon in dem Moment schief, wenn du halt ein kontinuierliches Wertesystem hast an der Stelle.

Christian

Und was da halt interessanterweise zum Tragen kommt, aus einer ganz anderen Ecke von Security,

Christian

ich weiß gerade nicht mehr, welcher amerikanische Militär das war, das kommt so aus dem Counterterrorism-Zeug,

Christian

Das ist Only Variety Can Match Variety.

Christian

Also das Problem von Terrorismus ist halt, dass Terroristen extrem variierte Inputs, also Angriffe fahren.

Christian

Also da geht es ja nicht um eine reguläre Kriegsführung nach irgendwie Genfer Konvention,

Christian

sondern die machen Dinge, gerade weil sie verboten sind und weil keiner damit rechnet, an Stellen, wo keiner damit rechnet.

Christian

Und die Amerikaner haben halt irgendwann rausgefunden, wir können dem halt nicht mit herkömmlichen Maßnahmen,

Christian

indem wir alle möglichen Fälle durchdeklinieren, entgegentreten,

Christian

sondern du brauchst halt kognitive Diversität, um auf diese absurden Ideen zu kommen.

Christian

Du brauchst tatsächlich Leute, die unterschiedlich ticken.

Christian

Und ganz ehrlich, keiner von uns, wenn ich hier in die Runde gucke,

Christian

wir haben halt vier mittelalte weiße Männer.

Christian

Und die Diversität ist auf der Ebene halt auch kognitiv dadurch mit dem Bias belegt.

Christian

Keiner von uns kommt auf die Idee in seinen Tests halt, Katzen-Emojis in den Input zu tragen.

Christian

Das macht halt von uns keiner.

Christian

Und an der Stelle ist Security als Prozess

Christian

halt tatsächlich auch von einer hohen Diversität,

Christian

also braucht eine hohe Diversität,

Christian

immer mit dem kleinen Zusatz von kognitiver Diversität,

Christian

die aber auch tatsächlich überlappt

Christian

mit kultureller und persönlicher Erfahrung etc.,

Christian

um halt das erzeugt zu kriegen,

Christian

dass man halt auf genügend Ideen kommt,

Christian

die dann mal so eine Baseline herstellt von,

Christian

okay, das ist jetzt hier nicht mehr scheiße.

Christian

Naja, das ist immer, ich finde das aus einem prozesshaften Ansatz gesehen und das ist halt das, wo ich dann, wenn Jochen, der halt sagt, Hilfe, ich will keinen Space Shuttle Code schreiben, aber Leute, die halt besser differenzieren können zwischen, ja, wie gut oder schlecht ist es denn versus ist es jetzt perfekt sicher oder ist es nicht perfekt sicher, weil das kenne ich halt aus vielen auch so Corporate-Umgebungen, wenn man Diskussionen führt, für die ist halt Sicherheit ein An- oder Ausknopf.

Christian

Entweder es ist sicher oder es ist nicht sicher, weil die müssen unter irgendeinem Produkt ihre Checkliste machen von, ja, dieses Produkt ist sicher, deswegen dürfen wir es einsetzen.

Dominik

Da steht halt immer auf Rot die Lampe, wenn man ehrlich ist.

Christian

Ja, also ich habe halt schon Sachen gehabt, wo wir mit Institutionen aus dem Finanzumfeld, für die wir dann Sachen betreiben außerhalb der Kernrechenzentren, weil wir dann immer mit irgendwelchen jetzt so, oh, die Finanzwelt entdeckt, dass die Leute Apps wollen.

Christian

Aber nein, ihr dürft, die App darf nicht mit unserem Kernbanking-System reden. Und dann sind wir da häufig so ein Layer dazwischen, wo wir sagen, okay, wir betreiben für euch diese ganzen APIs und machen da den Kram dazwischen, dann sind wir so diese Pufferzone. Und wenn ich dann aber einen Excel-File kriege mit 5000 Einträgen, wo die ganzen Security-Anforderungen laut dieses Finanzinstituts drin sind und ich dann in Zeile 2327 sage, ja, wenn ich jetzt die Cipher, die ihr da vorgebt, raus ins Internet lasse, dann ist es von heute auf morgen kaputt.

Christian

Weil ihr habt das letzte Mal vor drei Jahren eure Cypher-Liste aktualisiert und für eure Rechenzentren, wo kein Internet reinkommt, mag das jetzt alles okay sein, aber wenn ich damit jetzt halt raus ins Internet gehe, dann ist es halt kaputt.

Christian

Und jetzt musst du ihnen klar machen, naja, im Internet wird ständig alles angegriffen und du kannst jetzt nicht mit mir einen Vertrag schließen, wo du reinschreibst, welcher Cypher da drin stehen soll, sondern du machst mit mir bitte einen Vertrag, wo du sagst, nach bestem Wissen und Gewissen haltet ihr euch informiert und kompetent und ihr aktualisiert das, so wie es halt nötig ist.

Christian

und jada, jada, jada.

Christian

Aber das war dann halt auch plötzlich

Christian

ein Kampf, wo die davor standen und sagten,

Christian

ich muss jetzt hier das Siegel drauf machen, obwohl ich

Christian

eigentlich in der Liste geschrieben habe,

Christian

Verstöß gegen unsere Sicherheitspolicy.

Christian

Ja, stimmt.

Jochen

Das ist ein großes Problem. Das ist auch so ein Problem

Jochen

mit so Zertifizierungen, die man ja sonst vielleicht

Jochen

macht, wenn man jetzt irgendwie ein Auto fährt oder

Jochen

keine Ahnung, wo das eigentlich herkommt,

Jochen

Kirmesgeräte hat, auf denen Leute

Jochen

rumfahren. Dann kommt der TÜV und sagt halt,

Jochen

okay, ist noch nicht durchgerostet, alles klar,

Jochen

das Siegel, das geht halt

Jochen

bei Software nicht so gut, weil die muss man

Jochen

ja ändern und eigentlich braucht man dann eine neue Zertifizierung,

Jochen

aber das, ja genau,

Jochen

das wäre, ja könnte man jetzt denken, dass das

Jochen

die Lösung wäre. Ich habe das schon gemacht,

Jochen

ich habe schon einen Software-Test.

Jochen

Ja, ich habe

Christian

2003 oder 2004

Christian

haben wir damals mit Soap eine

Christian

Common Criteria Zertifizierung gemacht

Christian

und das war so ein Challenge,

Christian

da gab es einen Sponsor, der uns das bezahlt hat

Christian

und parallel

Christian

dazu hatte damals Red Hat den

Christian

J-Boss, glaube ich,

Christian

durch eine Common Criteria gejagt

Christian

und wir hatten im Prinzip

Christian

das gleiche Schutzniveau anzubieten.

Christian

War irgendwie eine ERP 3 Plus

Christian

oder ERP 4 oder so ein Kram.

Dominik

Du hast jetzt gerade irgendwie ein kryptische...

Jochen

Ich kann es nicht, ich kann auch nur

Jochen

die humoristische Variante irgendwie so,

Jochen

die unterste ist irgendwie, das Programm existiert

Jochen

irgendwie, die nächste ist dann

Jochen

irgendwie, ja, das Programm existiert und es gibt

Jochen

Dokumentation dazu, dann die nächste

Jochen

ist irgendwie, jemand hat mal geguckt, ob die Dokumentation

Jochen

zum Programm passt und dann irgendwie

Jochen

Die nächste ist dann irgendwie, es existiert

Jochen

ein formaler Beweis, dass das Programm korrekt ist.

Jochen

Wo dann irgendwie so ein Zwischenschritt fehlt,

Jochen

das ist glaube ich diese Stufe 6

Jochen

oder weiß ich nicht genau.

Christian

Ja, ERP 6 ist die formale Verifikation, genau.

Christian

Und, nee, nee, wir hatten

Christian

da schon ein relativ hohes Schutzniveau und

Christian

die Common Criteria als Framework,

Christian

um über Security nachzudenken,

Christian

inhaltlich, ist toll.

Christian

Weil du kriegst halt einen Katalog

Christian

von, also du hast zum einen einen Prozess,

Christian

der dir sagt, okay, mach dir mal Gedanken

Christian

über, wer sind denn deine Assets?

Christian

Wer sind deine Angreifer? Was haben die für Motivationen? Was haben die für Ressourcen? So, und jetzt gucken wir mal, wie mappen wir das alles aufeinander von, wie sind deine Assets mit was geschützt gegenüber welchen Angriffsszenarien und die haben auch noch einen tollen Implementationskatalog, wo sie sagen, okay, also wenn du folgendes countern möchtest, könnte man zum Beispiel Logging machen.

Christian

Wenn du Logging machst, dann musst du dir über die Integrität vom Log Gedanken machen, dann musst du dir über Zeitstempel Gedanken machen, dann musst du, das ist sozusagen, das ist so ein bisschen, da kannst du wie bei so einem Spinnennetz irgendwie reingreifen, erstmal was interessiert mich und dann kommen alle Sachen hinterher, von die du noch berücksichtigen musst. Das ist viel, aber es ist eigentlich erstmal auf der Ebene fachlich gar nicht schlecht gewesen.

Christian

Das große Problem ist, die Common Criteria kommt aus der Produktsicherheit und die gehen halt davon aus, dass ein Produkt eben, siehe ein Karussell auf dem Jahrmarkt, das Ding wird einmal gebaut und existiert jetzt und jetzt ist das ab und jetzt läuft das 30 Jahre, wenn du aber sowas wie einen Open Source Application Server hast, wo du exakt ein Release einmal verifizieren darfst und dann kommt aber in 23 Stunden das nächste raus.

Christian

Und du fängst die ganze Zertifizierung

Christian

wieder von vorne an, das geht dann halt schief.

Christian

Ja, also man muss

Christian

ja die Zertifizierung erstmal, also

Philipp

es kann manchmal sehr gut sein, dass man sich

Philipp

über alle Sachen Gedanken macht, aber man kann

Philipp

ja auch ganz viele Sachen vermissen, also ich glaube

Philipp

der viel besser

Philipp

oder für viele Anwendungen besser

Philipp

ist es, wenn man sagt, ich mache einen Pentest

Philipp

und lasse ich einen Auftrag geben, bei einem

Philipp

Pentest geht halt jemand anders hin und sagt

Philipp

ich checke deine Software, also

Philipp

entweder checke ich die von außen oder

Philipp

ich schaue mir den Source Code an, ich schaue mir das mal an, was du so in Python oder auch in anderen Programmiersprachen alles programmiert hast.

Philipp

Und da sind dann erfahren Entwickler in der genau der Programmiersprache und die können dann halt schon,

Philipp

vielleicht auch mit automatischen Tools, sehr schnell kritische Stellen finden.

Philipp

Also damit habe ich auch gute Erfahrungen gemacht.

Philipp

Das ist natürlich eine ganz andere Herangehensweise, dass man sagt, okay, ich versuche nicht alles irgendwie,

Philipp

den ganzen Prozess, ich schreibe kein Papier, sondern ich lasse im Wesentlichen Leute anfangen, uns zu coden.

Philipp

Und das muss man natürlich auch regelmäßig wiederholen.

Philipp

Das bringt natürlich nichts, wenn man vor zehn Jahren das mal gemacht hat.

Philipp

Aber das ist auch sicherlich eine Methode,

Philipp

mit der man seine Anwendung gut absichern kann.

Dominik

Ja, du musst da seinen Angreiferhut aufsetzen und da draufhauen,

Dominik

solange du bist, auseinanderfällt er.

Dominik

Da brauchen wir halt gute Angreifer auch, die so ein bisschen ein paar Tricks kennen.

Dominik

Und ich glaube, wenn man jetzt nur so Tools drauf loslässt, dann weiß ich nicht.

Philipp

Genau, also wenn man nur ein Tool selber drauf loslässt,

Philipp

hilft es wahrscheinlich nicht.

Philipp

Aber wenn man halt jemanden beauftragt, der da wirklich Experte ist,

Philipp

ich glaube, das ist eine ganz gute Möglichkeit,

Philipp

um auch so einen Blick zu bekommen, wie schlimm ist denn mit unserer Anwendung?

Philipp

Haben wir nur eine ganz kleine Schwachstelle oder ist unsere Admin-Oberfläche ohne Benutzername und Passwort irgendwie verfügbar und man kann beliebigen Code hochladen?

Philipp

Und ich glaube, das ist noch ein bisschen eine andere Herangehensweise, aber ich glaube, das ist oftmals effektiver, vor allem für so kleinere Projekte.

Philipp

Wenn man natürlich eine Zertifizierung braucht, dann braucht man sie, aber ich weiß nicht, ob das immer auch wirklich zu Sicherheit führt, wenn ich nur ganz viel Papier schreibe.

Christian

Also ich würde an der Stelle halt eine Lanze verbrechen für das, was wir jetzt zu Corona-Zeiten kennengelernt haben als irgendwie Schweizer Käse-Modell.

Christian

Aber du kannst halt, also für alle, die das noch nicht gehört hatten, ist sozusagen die ganzen Maßnahmen, alle Anti-Corona-Maßnahmen sind für sich genommen natürlich durchlöchert, wie so ein Schweizer Käse.

Christian

Aber wenn ich halt fünf Scheiben Schweizer Käse hintereinander lege, ist die Filtrationsrate dann doch relativ gut.

Christian

Dass also wirklich über fünf Schichten an der gleichen Stelle überall die Löcher sind, das passiert halt normalerweise nicht.

Christian

Und deswegen würde ich halt immer, also aus meiner dann längerfristigen Erfahrung, würde ich halt sagen, es kommt immer auf den Kontext drauf an.

Christian

Man muss immer erstmal gucken, was sind hier eigentlich die Assets gerade und wenn ich gerade hier in meinem Heimkeller irgendwie die Temperaturdaten von meinen Hubs aufschreibe, denke ich mir so, ja, egal, dann darf es halt auch mal, wenn ich für mich entschieden habe, die dürfen auch ins Internet purzeln, dann ist schon okay.

Christian

Aber tatsächlich diese Layer zu haben, auf der einen Seite Produktsicherheit tatsächlich sich anzugucken mit den, was sind hier eigentlich die technischen Maßnahmen und sowas wie eine Common Criteria im Hinterkopf zu haben, ist für mich inzwischen eher das Know-how von, das setze ich ein, während ich ein System aufbaue, um sozusagen schon vorher zu wissen, okay, wo ist denn die Checkliste, wo ich dann weiß, jetzt habe ich wenigstens nichts unnütz vergessen.

Christian

Während dann halt das Thema ist halt auch jemand zum Beispiel vom Pentest, da würde ich auch sagen, einige Leute, mit denen ich mich dann austausche, sagen, nee, dann machst du halt lieber auch noch gleichzeitig sozusagen eine externe Code-Review, die sozusagen über das, was du brauchst, dann nochmal im Whitebox drüber guckst und dann kannst du nochmal von draußen draufhauen und diese ganzen Schichten ergeben dann halt.

Christian

Und gleichzeitig kannst du dann an vielen Stellen ja auch, wenn man standardisierte Protokolle wie halt HTTP immer so dazwischen hat, dann gibt es da ja auch noch die Möglichkeit, immer nochmal so Schichten einzuziehen wie eine Web-Application-Firewall, die einem so bestimmte Sachen schon mal wegfängt.

Christian

Also ich habe zum Beispiel ein paar Kunden, denen gucke ich über die Schulter und da weiß ich dann so, okay, bei dir knalle ich da jetzt eine Waffe davor, weil ansonsten traue ich mich nicht, das ins Netz rauszulassen.

Christian

Du sagst mir, es muss raus ins Netz.

Philipp

Das ist das gleiche Prinzip wie ein Virenscanner.

Philipp

Also da habe ich irgendwie ein Muster, das ich suche.

Philipp

Genau, ja, ja, ja.

Philipp

Okay, wenn ich das Muster finde, dann mache ich irgendwas,

Philipp

dann unterbinde ich die Anfrage oder schmeiße das Muster raus

Philipp

oder mache irgendwas.

Philipp

Genau, genau.

Philipp

Das ist schon ein bisschen gefährlich,

Philipp

weil eine Möglichkeit ist halt schon wie bei einem Virenscanner,

Philipp

dass der, also die Wald- und Wiesenattacken findet der sicherlich.

Philipp

So was im Internet das Grundrauschen ist,

Philipp

das findest du auf jeden Fall.

Philipp

Aber wenn dann wirklich jemand deine Firma angreifen will,

Philipp

dann merkst du dich da vielleicht auch in falscher

Philipp

Sicherheit, weil man halt dann doch immer

Philipp

also du hast recht mit dem Schweizer

Philipp

Käse-Modell, das macht es vielleicht ein bisschen besser

Philipp

aber gleichzeitig kann ja so ein Waff auch

Philipp

wieder ein Angriffsmodell sein, weil der muss ja auch wieder alles

Philipp

interpretieren und ein Problem kann halt sein

Philipp

dass mein Server davor und mein Server danach

Philipp

sowieso schon unterschiedliche Details

Philipp

anders interpretieren, also bei HTTP

Philipp

zum Beispiel Junk Encoding oder

Philipp

irgendwelche komischen HTTPS-Optionen

Philipp

anders interpretieren und dass dann die Waff

Philipp

sogar noch ein neues Problem aufmacht

Philipp

dass sie plötzlich Sachen anders interpretiert

Philipp

und dann vielleicht sogar eine Schwachstelle

Philipp

an sich hat. Also auch die Waffe ist ja nur Code.

Philipp

Ne, genau. Deswegen ist es auch für uns zum Beispiel

Christian

keine Maßnahme, die wir halt so Blanko überall drüber

Christian

gießen, sondern das ist halt, wir haben halt

Christian

dann Kunden, wo feststellen, also

Christian

die Waffe ist für uns mehr oder weniger dann

Christian

der erste Move. Also manchmal,

Christian

wie du sagst, will irgendwer einfach in seiner

Christian

Ausschreibung sehen, da muss eine Waffe davor.

Christian

Pack ich da eine Waffe davor.

Christian

Und wenn, das

Christian

muss er ja anbieten können erstmal in dem Moment, wenn er

Christian

das fragt. Und wenn der dann irgendwie nach zwei Monaten

Christian

fragt mit, warum ist das hier alles so doof, dann sage ich,

Christian

du wolltest eine Waffe haben, dann sagt der mir, jetzt machst du wieder aus,

Christian

dann mache ich es halt wieder aus.

Christian

Wo wir es häufiger als Werkzeug

Christian

tatsächlich sehen, ist,

Christian

dass tatsächlich diese Wald- und Wiesenscans

Christian

und Angriffe gerne

Christian

mal massiv für Last sorgen.

Christian

Und das ist halt,

Christian

wir sehen immer wieder Anwendungen,

Christian

wo Leute mit SQL-Injection

Christian

versuchen,

Christian

quer über so eine Anwendung drüber gießen

Christian

und die Anwendung dadurch in

Christian

Performance-Probleme gerät.

Christian

das ist halt tatsächlich, was das Filtern wird, dann damit

Christian

zum Beispiel vorne weg. Also jetzt hier haben wir die ganze

Christian

SQL-Kram, das hat da nichts drin zu suchen,

Christian

zack, weg, raus.

Christian

Ah, okay.

Jochen

Ja, aber genau, also ich habe

Jochen

auch schon mal von jemandem gehört, der so

Jochen

Pentests macht, dass er

Jochen

meinte, so ja, da war eine Bank, die hatte irgendwie

Jochen

ein System vor den

Jochen

Datenbanken und das sollte eigentlich aus

Jochen

dem SQL irgendwie alles rausfiltern, was

Jochen

und das hat dazu geführt, dass SQL-Injection wieder möglich

Jochen

wurde, weil es halt

Jochen

Dinge zu viel

Jochen

rausgenommen hat.

Jochen

Du hast

Christian

ja aus

Christian

Komplexitätsperspektive hast du immer das Problem

Christian

der Kombinatorik.

Christian

Das heißt, wenn du n Dinge hast,

Christian

die miteinander reden, dann hast du halt

Christian

n Quadratverbindungen mindestens.

Christian

Und wenn du jetzt sagst,

Christian

okay, das ist mir zu unsicher, ich packe noch eins

Christian

davor,

Christian

dann hast du noch mehr.

Dominik

Das Problem ist, glaube ich,

Dominik

an der Stelle auch, wer halt

Dominik

irgendwie diese Architektur entscheidet

Dominik

und so und wem man da vertrauen kann. Gerade wenn

Dominik

Leute jetzt keine Ahnung haben von

Dominik

Sicherheit oder von Computern allgemein, aber

Dominik

irgendwie Software als Manager irgendwie bestellen

Dominik

wollen. Die haben ja eine unheimliche Asymmetrie

Dominik

gegenüber den auch Entwicklern und so

Dominik

und die müssen halt vertrauen

Dominik

auf das, was denen da erzählt wird und die

Dominik

stellen sich dann meistens so ein Sammelsurium an

Dominik

Angebot und Nachfrage

Dominik

oder Best Practice oder irgendwas, was die

Dominik

halt an Informationen saugen können zusammen.

Dominik

Und das ist ja auch schon so eine Art

Dominik

Baukasten und das ist ja nie ganzheitlich

Dominik

irgendwie gedacht, was wird ja auch immer dann teuer und so,

Dominik

muss ja auch dann wieder sparen und

Dominik

wenn man das dann rauslässt, dann ist ja klar,

Dominik

Fehler sind ja völlig vorprogrammiert

Dominik

und sich da richtig vorzuschützen

Dominik

ist fast eine unmögliche Aufgabe

Dominik

und die Frage wäre vielleicht, wie man solchen

Dominik

Menschen auch eine Möglichkeit geben kann,

Dominik

Systeme in sicherer zu denken,

Dominik

also ihr habt jetzt gesagt, so Prozesse von Anfang an

Dominik

so ein bisschen, das würde ja wirklich bedeuten,

Dominik

dass man sich, bevor man damit anfängt,

Dominik

mit einem Systemarchitekten oder sowas

Dominik

intensiv auseinandersetzen muss,

Dominik

welche Tech-Stacks man benutzt oder so was

Dominik

oder wie der Prozess halt aussehen muss

Dominik

und wo man Sicherheits, ja, was ist das, Netze einzieht oder ...

Dominik

Ja, die Frage ist halt, welche Angriffsmöglichkeiten

Dominik

man irgendwie zur Verfügung stellen möchte.

Dominik

Da gibt es ja unzählige.

Dominik

Es ist ja nicht immer nur so diese Website,

Dominik

die nach außen dann da das Aushängeschild ist,

Dominik

wo man dann draufhauen kann.

Dominik

Ja, die Versuchung ist ja nicht groß,

Philipp

sich halt sozusagen als Feature, als Draufklopf anzukaufen,

Philipp

also ein riesiges System, was aktuell existiert,

Philipp

was in Wirklichkeit wahnsinnig unsicher ist

Philipp

und dass man sagt, okay, ich mache jetzt einfach,

Philipp

ich kaufe jetzt eine Waffe oder

Philipp

irgendwas anderes, mache einmal

Philipp

einen Pentest oder mache eine Sache

Philipp

und hoffe dann, dass das damit okay ist,

Philipp

dass ich halt so Sicherheit dazukaufen kann.

Philipp

Ich glaube, es ist viel,

Philipp

es entsteht viel bessere Software, nicht nur sichere,

Philipp

sondern auch bugfreie Software,

Philipp

wenn man die gesamte Software

Philipp

direkt so anlegt, dass man sagt, okay, bei der Produktion

Philipp

der Software, ich mache mir vielleicht vorher Gedanken,

Philipp

ich würde nicht mal sagen, viel über die

Philipp

eigentlichen Zertifizierung oder

Philipp

die Prozesse, sondern vielleicht mehr

Philipp

wie lasse ich die entwickeln?

Philipp

Wie sorge ich dafür, dass das, wie ich eben

Philipp

erwähnt hatte, Code Review, also

Philipp

wie sorge ich dafür, dass das halt schon

Philipp

bei der Entwicklung

Philipp

direkt die Software sicher ist? Weil nachher das

Philipp

draufzubauen ist immer schwieriger. Also nachher

Philipp

mit dem Scanner zu suchen ist, glaube ich, schwieriger als

Philipp

zu sagen, okay, ich habe Entwickler,

Philipp

die sich direkt darüber Gedanken machen.

Dominik

Das ist ja zum Beispiel total kaputt. Also ich

Dominik

hatte jetzt irgendwie mal so die Situation, dass

Dominik

so ein Konzern da war, die wollten

Dominik

dann Software bereitstellen und dann haben sie

Dominik

gesagt, nee, aber neue Software ist irgendwie komisch,

Dominik

wir wollen die alle auditieren vorher, so persönlich,

Dominik

also als Security-Team und haben dann so

Dominik

ein Service dann rausgebracht, dann

Dominik

jetzt im November und da war dann Django

Dominik

1.10.4, weil das dann die sichere Version

Dominik

war, das ist also LTS war 1.11, für alle, die es noch

Dominik

wissen, das ist halt schon ein altes System und da

Dominik

gibt es halt dann irgendwie schon jede Menge irgendwie Exploits,

Dominik

wenn man irgendwie genug nachsucht, die irgendwo drinstehen

Dominik

und das wird dann von den Leuten irgendwie

Dominik

geauditet und man fragt sich halt so, okay, was machen

Dominik

die denn da eigentlich, so, warum tun

Dominik

die das? Und das ist halt vielleicht so ein, ja,

Dominik

das kriegt man, glaube ich, gar nicht so gut in die Hüfte.

Christian

Das ist halt wieder der Griff in Richtung Product Security statt

Christian

Process Security.

Christian

Also

Christian

ein prozesshafter Ansatz und wir haben jetzt ja auch

Christian

seit eineinhalb Jahren, nee, seit, doch,

Christian

seit ein bisschen mehr als eineinhalb Jahren machen wir bei uns

Christian

ISO 27000 und

Christian

der Trick ist

Christian

halt bei vielen, die prozesshaften

Christian

Security-Sachen werden häufig missverstanden,

Christian

weil die Standards, die es

Christian

dazu gibt, wie eine Keule

Christian

aussehen, obwohl sie eigentlich gar nicht so schlimm sind.

Christian

Man muss da bloß, wenn man die Standards

Christian

interpretiert, immer unterscheiden zwischen

Christian

was fordert der Standard formal

Christian

und was ist im nächsten Satz schon nur noch die

Christian

Implementationsguideline,

Christian

wo man dann eigentlich

Christian

selber Hoheit hat. Also ich habe halt

Christian

auch jemanden,

Christian

der meinte, der ISO 27000,

Christian

seitdem müssen wir sämtliche

Christian

Stromkabel einmal im Jahr

Christian

irgendwie auf die Erdung

Christian

prüfen. Also

Christian

nee, musst du nicht, ich habe auch nur

Christian

27.000, aber dann müsst ihr das doch auch mal so, nee, müssen wir

Christian

nicht. Ja, aber, aber,

Christian

ja, nee, müssen wir nicht.

Christian

Und dann dreht man so eine Schleife mit,

Christian

die ISO sagt, du musst dich halt um die für dich

Christian

relevanten Normen und Vorschriften

Christian

kümmern, das sagt die ISO 27.000,

Christian

also macht man das

Christian

und die sagt aber auch, du musst sie

Christian

bewerten und musst

Christian

dann Schlussfolgerungen für dich daraus ziehen.

Christian

Und es ist völlig

Christian

legitim im Rahmen der ISO zu sagen, ja,

Christian

wir haben zur Kenntnis genommen, dass

Christian

ortsveränderliche elektrische Verbraucher

Christian

irgendwie alle zwei Jahre auf X geprüft werden

Christian

müssen.

Christian

Machen wir nicht.

Dominik

Aber jetzt kannst du doch mal erklären, was für eine Lücke das

Dominik

offen lassen könnte, warum man das

Dominik

testen wollen möchte.

Dominik

So, naja, ISO als Prozess,

Christian

die ISO als Informationssicherheitsprozess

Christian

ist extrem umfassend

Christian

und zwingt dich dazu,

Christian

den kompletten Wertschöpfungsprozess

Christian

von einem IT-System

Christian

zu betrachten. Da gehört halt dann unter anderem auch

Christian

dazu, dass

Christian

dass du eben rechtliche Rahmenbedingungen bewertest etc.,

Christian

weil du musst am Ende immer für alle deine Assets,

Christian

und Philipp hat das halt schon, die vier Grundsicherheitsaspekte,

Christian

also bei uns sind sie aufgeschlossen, manchmal wären es drei, manchmal wären es vier,

Christian

halt nach Vertraulichkeit, Confidentiality, nach Integrität, Integrity,

Christian

nach Authentizität und nach Availability zu schütten.

Dominik

Und was hat das jetzt damit zu tun, dass da so ein Stromkabel ist, in das sich …

Christian

Strom ist zum Beispiel für die Availability relativ wichtig.

Christian

Okay, also Availability, okay.

Dominik

Und du misst halt dann da quasi nur die Stromleitung,

Dominik

um zu testen, ob das Ding irgendwann mal ausfällt.

Christian

Es ist halt eine deutsche Norm,

Christian

die kommt aus dem, ich weiß nicht, welches ist,

Christian

die schreibt halt vor,

Christian

dass halt alle ortsveränderlichen Verbraucher

Christian

auf Fehlerstrom zu prüfen sind, alle zwei Jahre halt so.

Christian

Und wenn die ISO halt sagt,

Christian

du musst halt alle für dich gültigen Rechtsnormen berücksichtigen

Christian

und überwachen etc., dann schlägt sowas halt auch zu.

Christian

Was die Leute aber eben häufig missverstehen, ist, dass in der ISO drinsteht, du sollst es bewerten.

Christian

Und du sollst für dich daraus ableiten, ob das jetzt was Relevantes ist oder nicht.

Christian

Du kannst als Geschäftsführer oder als CISO an der Stelle immer sagen, okay, ich habe da fünf Risiken gesehen, ich akzeptiere die.

Christian

Jetzt hast du aber meine Story kaputt gemacht.

Dominik

Ich wollte eigentlich die Story hören, wie man durch das Stromkabel in den Rechner des CISOs einringt.

Christian

Das Stromkabel, also das kann zum Beispiel passieren, wenn du deinen Prozessor aufstellst und sagst, naja, Stromkabel sind für uns keine sicherheitsrelevanten Dinge, deswegen kaufen wir die aus der Grabbelkiste beim Euroshop nebenan.

Christian

Das heißt, dann verkaufen die dir plötzlich en masse Dinge, wo sie wissen, in einem halben Jahr geht da drinnen irgendwas kaputt und dann geht bei dir im Rechenzentrum mit einem Mal das Licht aus und dann ist deine Verfügbarkeit hin.

Christian

Und weil dein Redundanzkonzept natürlich davon ausging, dass dir niemand so ein Ding untergejubelt hat mit der Absicht, dass da ein kleiner Sollbruchkondensator oder irgendwas drin ist, der dann halt nach so und so viel schönen Laufzeit einfach eine Schmelzsicherung durchgehen lässt.

Dominik

Also das ist glaube ich auch erstmal nur relevant für so Atomkraftwerke oder sowas, die halt dann vernünftige Kühlung brauchen.

Christian

Nein, das kommt auf deine Angreifer und die Motivation der Angreifer drauf an.

Christian

Also die Story da drumherum wäre zum Beispiel, jemand zu sagen, wir betreiben Dienste sehr, sehr lange, teilweise 10, 15 Jahre und länger.

Christian

Das heißt, wenn ich, und auch teilweise mit politischem Impact, also wir haben ein paar Systeme, die sind unter anderem zu uns gewandert, extra aus Amerika raus, von Non-Profits, die unter anderem im Nahen Osten halt aktiv sind.

Christian

Und die haben ein massives Sicherheitsbedürfnis um das Leben derer, deren Daten in dem Ding drin stehen, weil da halt Decknamen und so ein Zeug auftauchen.

Christian

Und die, wenn du dann halt sagst, naja, wenn da jemand ein richtiges Longgame spielt und sagt, ich hab hier drei Jahre Zeit, das ist nicht das Problem.

Christian

Ich will aber, dass diese NGO mal so richtig gegen die Wand fährt, dann farbe ich jetzt die Lücke und sage, aha, ich hab rausgefunden, deren Hoster kauft immer irgendwie aus der Grabbelkiste die Stromkabel.

Christian

das dauert jetzt, naja, der tauscht nur so und so oft

Christian

die Stromkabel aus, aber wenn

Christian

ich es schaffe, irgendwie ein Drittel

Christian

seiner Stromkabel durch meine mit dieser Schmelzsicherung

Christian

zu ersetzen, dann bin ich in drei Jahren

Christian

soweit, dass dann irgendwie bei dem das RZ

Christian

implodiert.

Christian

Das ist sozusagen

Christian

die, und da muss man immer

Christian

aufpassen,

Christian

da kommt dieser, welcher XKCD ist

Christian

das mit der hohen Verschlüsselung und dem

Christian

der 5-Dollar-Entschlüsselungsmaschine?

Christian

XKCD, bitte

Christian

nochmal einmal.

Christian

XKCD, Comic.

Christian

Wo die Idee ist,

Philipp

dass du eine ganz, ganz teure Verschlüsselung

Philipp

kaufen kannst, mit super zertifiziert

Philipp

und dann kommt aber jemand

Philipp

zu deinem Admin mit einem

Philipp

5 Dollar Baseballschläger

Philipp

und bedroht ihn dann und sagt, okay, gib mir das Passwort.

Philipp

Wenn das für dich gibt, dann

Philipp

hau ich dich mit dem Schläger und dann bringt

Philipp

dir die beste Zertifizierung und die beste Sicherheit

Philipp

nichts. Ja, tatsächlich, ja.

Christian

Und man sagt halt auch an der Stelle, weil häufig,

Christian

gerade dieses Thema Advanced

Christian

Persistent Threat, also

Christian

die typischerweise staatlich

Christian

finanzierte Organisationen

Christian

oder Teams, die irgendwo reingehen sollen,

Christian

man sagt halt auch so schön,

Christian

gegen den Mossad

Christian

schützt du dich

Christian

nicht, weil

Christian

der Mossad interessiert nicht,

Christian

was du für Security irgendwo in deinem RZ hast.

Christian

Der kommt zu dir nach Hause und nimmt

Christian

dich mit und dann reden

Christian

wir nochmal.

Christian

Und deswegen ist, wenn man das mal schluckt und sagt, okay, ich bin hier nicht der, der sich gegen den Mossad schützen muss, weil ich habe eh keine Chance, dann brauche ich aber auch nicht so tun, als wenn ich sozusagen alles auf dem Niveau machen müsste.

Christian

Oder du brauchst einen eigenen Geheimdienst.

Christian

Bitte?

Christian

Oder du brauchst einen eigenen Geheimdienst.

Christian

Ja, genau.

Philipp

Aber das Fiese am Internet ist ja,

Philipp

dass du immer mit den besten Angreifern kommunizierst.

Philipp

Das heißt, vielleicht nicht mit dem Mossad,

Philipp

aber vielleicht hast du irgendwelche russische Hacker,

Philipp

die durchaus was draufhaben.

Philipp

Und die installieren dann halt,

Philipp

wie hier in der Uniklinik Düsseldorf,

Philipp

deine Ransomware.

Philipp

Und die sind auch fast auf dem Level

Philipp

von so einem Advanced Persistent Threat.

Philipp

Die haben vielleicht jetzt nicht so...

Philipp

Also, die machen schon ein bisschen Streufeuer,

Philipp

aber die haben durchaus das technische Know-how

Philipp

und auch die Zeit.

Philipp

Und die machen sich auch die Mühe, das an deine Architektur anzupassen.

Dominik

Also vielleicht noch mal kurz, Uniklinik Düsseldorf, da gab es einen Vorfall, da sind die Server rausgefallen.

Dominik

Und da das Netzwerk intern nicht geordnet war, konnte man durch den einen befallenen Rechner irgendwie mehrere OP-Säle ausknipsen, wenn ich das richtig verstanden habe.

Dominik

Ja, ich weiß nicht genau, was da passiert ist, aber war ein bisschen nicht verfolgt, muss ich zugeben.

Dominik

War aber auch, glaube ich, nicht der erste Fall in Deutschland und ich glaube, das hat es auch ein paar Mal so richtig erwischt.

Christian

Nee, natürlich. Also das ist halt ja jetzt erstmal, die Mossad-Beispiele kommen immer zu dem Thema, wenn man anfängt, die Physical Security halt extrem stark zu übertreiben. Und das ist aber dummerweise auch das, wo Leute gerne übertreiben, weil das können sie sich bildlich vorstellen.

Christian

Dann kommt halt immer noch ein, ja warum ist hier vor dem RZ keine Panzersperre und alle nur, ja, denkt dran, Panzersperre hilft dir nichts, weil in Deutschland hat die Feuerwehr, guck mal da draußen, siehst du diesen kleinen unauffälligen grauen Kasten? Da ist der Generalschlüssel für das ganze Haus drin.

Christian

Ja, wie? Na, das ist der Feuerwehrschlüsselkasten, da gibt es einen Feuerwehrschlüssel, den hat die Feuerwehr, die kann das Ding aufschließen, die kommt hier rein.

Christian

Also spar dir mal bitte deine Panzersperre.

Christian

Also deswegen, das ist immer so dieses für mich bloß abzugrenzen von, wenn du das Niveau hast, musst du dir nochmal um ganz andere Sachen Gedanken machen.

Christian

Und wenn man das aber mal so übertrieben hat, dann wird den Leuten schnell klar, dass Security halt eine Abwägung ist und eine kontextspezifische Abwägung.

Christian

Und immer nur auf 100% zu schalten, geht halt nicht.

Christian

Und damit macht man auch mehr kaputt.

Christian

Ich würde halt nochmal anknüpfen an den Punkt von

Christian

dieser Prozessempfehlung. Ich würde halt

Christian

immer versuchen, an allen Enden

Christian

weniger ist mehr zu machen.

Christian

Weniger Code, den du schreibst,

Christian

ist typischerweise weniger Architektur, über die

Christian

du nachdenken musst, ist weniger. Und damit

Christian

auch ein Team, was gerade erst anfängt, würde ich eben

Christian

nicht sagen, ihr fangt jetzt mal an, euch über Security

Christian

Gedanken zu machen. Auch bei uns

Christian

in der ISO ist es halt, in unserer

Christian

Umsetzung der ISO 27000 ist es halt auch

Christian

so, dass wir sagen, du willst irgendwie

Christian

neues Feature für die Plattform etc. entwickeln? Ja, mach halt.

Christian

Ja, mach halt.

Christian

Ja, und du kannst gern auch irgendwie deine

Christian

drei, vier Testmaschinen auf der Plattform halt

Christian

schon mal auf diese Branch umstellen.

Christian

Habe ich kein Problem mit. Aber,

Christian

bevor das dann halt in großen Einsatz kommt,

Christian

muss das halt mal durch eine

Christian

Vier-Augen-Review durch. Und dann musst du mal

Christian

irgendjemand anders erklärt haben, was du dir gedacht hast.

Christian

Und dann gibt es dort eine Checkliste

Christian

und die fragt, jetzt erklär mir mal, was du dir

Christian

für Security für Gedanken gemacht hast.

Christian

Und das ist im Prinzip, das ist bei uns

Christian

der komplette formale Prozess

Christian

für die Entwicklungssicherheit.

Christian

Also übertrieben jetzt ein bisschen,

Christian

aber im Prinzip ist sozusagen bei uns nur ein

Christian

ja komm, entwickle halt, da drüben

Christian

sind die zehn Guidelines, was man in welchen Situationen

Christian

so alles mal berücksichtigen könnte.

Christian

Und aber das Einzige, wozu wir dich zwingen, ist,

Christian

du musst in dem Pull-Request, wo dein

Christian

Feature in die General Availability geht,

Christian

musst du mir oder deinem

Christian

PR-Reviewer glaubhaft vermitteln,

Christian

dass du dir jetzt wirklich adäquat zu dem

Christian

Ding Gedanken gemacht hast.

Philipp

Schreibt man das dann als Text in den

Christian

Pull-Request? Als Text in den Pull-Request rein.

Christian

Da gibt es zwei Fragen. Das eine ist, was sind hier die Sicherheitsanforderungen? Und B, wie habt ihr die erfüllt? Wo ist hier der Nachweis, dass die erfüllt wurden? Wie seid ihr zu der Frage gekommen von, was sind hier die relevanten Sicherheitsanforderungen? Und wie weist ihr nach, dass ihr das jetzt halt ordentlich umgesetzt habt?

Dominik

Das hört sich so ein bisschen an, als sollte man die Angst weglassen und tatsächlich nur, also die Worst-Case-Szenarien, also was ist das Schlimmste, was passieren kann? Also bei dir wären zum Beispiel jetzt Daten weg gewesen, das wäre nicht so gut gewesen, weil die so sehr privat sein müssen. Und an anderer Stelle ist es vielleicht so, ja okay, wenn man die Backups noch hat, dann ist es halt nicht so schlimm. Und das ist halt dann vielleicht der Worst-Case und da muss man sich halt Gedanken darüber machen, dass der nicht eintreten kann und der Rest ist dann egal.

Christian

Auch bei uns ist es so, unser Auditor zum Beispiel sagt halt auch immer, ein Unternehmen, was hochsicher ist und aber am Markt kein Produkt platzieren kann, hilft halt nicht. Es geht halt nicht. Und dieses Angstthema ist da schon relevant, weil halt Angst ist, häufig wird Security, gerade wenn es eine eigene Abteilung ist, immer wahrgenommen als, das sind halt die, die halt nachher unterschrieben haben sollen mit, hier ist alles sicher und deswegen sagen sie per Default einfach nein.

Christian

Und für uns ist der Review-Prozess aber zum Beispiel auch umgedreht. Der Review-Prozess in einem PR bei uns ist halt immer nur ein, ja, man darf nicht alleine Zeug nach draußen prügeln, Sternchen, Fußnote, doch, es gibt Situationen, in denen man das darf, aber dann muss man noch mehr Dinge beachten, weil es gibt halt bei uns auch so Gefahr- und Verzugssituationen, dann muss ich handlungsfähig sein.

Christian

aber der Pull-Request ist halt,

Christian

wenn der gemerged wird, ist das halt nicht die Aussage

Christian

von dem Reviewer, dass er

Christian

seinen Erstgeborenen irgendwie

Christian

mit Blut unterschrieben dem Teufel

Christian

überantwortet, dass er

Christian

sagt, hier ist alles sicher,

Christian

sondern der Vier-Augen-Prozess ist

Christian

dafür da, dass ein zweiter Mensch

Christian

dem ersten nochmal in die Augen guckt

Christian

und sagt, also wenn

Christian

du jetzt nicht noch sagst, ich soll nach

Christian

irgendwas schauen, dann merge ich den Kram

Christian

jetzt. Also das ist aber dein Code,

Christian

den ich jetzt gleich merge.

Christian

Und das ist ganz spannend, weil das ist ein kognitiver Prozess, der halt einer Person, einem anderen Menschen, und da gehört Empathie eben mit dazu, gegenüberstellt und sagt, ich lasse das hier raus. Du hast jetzt gerade gesagt, du sagst mir, das ist das Beste an Arbeit, was du abzuliefern hast und ich gucke mit dir nochmal gemeinsam drüber, aber ich werde es nicht aufhalten.

Christian

Ich bin hier nur der, der deinem Gewissen nochmal auf die Sprünge hilft, zu sagen, na, hast du nicht doch abgekürzt? Bist du dir wirklich sicher? Ich lasse das jetzt raus. Und das macht einen ganz massiven Unterschied, weil dann, was passiert? Die Änderungseinheiten werden kleiner, klassisches agiles Thema, weil die Leute nicht mehr sagen, oh Gott, oh Gott, oh Gott, der Review-Prozess ist so aufwendig, dann muss er sich aber auch lohnen, sondern wir drehen es halt um und sagen, nee, der Review-Prozess ist erstmal freundlich und der Default ist, wir gucken da zusammen drüber.

Christian

und alle machen ihre Arbeit und reden drüber

Christian

und klären das und dann lassen wir es auch

Christian

raus und dann ist der in 5 Minuten erledigt.

Christian

Also wenn ich halt zum Beispiel nur

Christian

weiß ich, ein Pull-Request bei uns kann sein,

Christian

Paket-Update vom Nginx, weil

Christian

war ein CVE drin, kommt die nächste meiner Version.

Christian

Ein CVE ist ein Vulnerable, was?

Christian

Ja genau, also

Christian

war eine Vulnerability, die bekannt war,

Christian

die haben einen Patch bereitgestellt, wir spielen den Patch ein.

Christian

Dann ist der Diff bei uns auf der Plattform

Christian

typischerweise so zwei Zeilen lang,

Christian

also irgendwie Version vom Nginx

Christian

hochgedreht und den Hash halt angepasst.

Christian

und die Review dazu sieht dann so aus,

Christian

ja, ne, machen wir, oder?

Christian

Ja, was war da noch drin in der

Christian

Änderung? Ja, nix, war nur der CVE.

Christian

Und beim NGINX? Ja, auch nur

Christian

der CVE. Ja, jut, okay, was waren

Christian

hier die Anforderungen? Anforderung war, wir

Christian

müssen Updates machen, weil wir die Sicherheit

Christian

aufrechterhalten sollen. Nachweis,

Christian

naja, das ist jetzt die alte Version, war die, die neue ist

Christian

die, zack, fertig, raus damit, Ende.

Christian

That's it.

Christian

Das ist halt den Leuten

Christian

in den Prozessen das so an die Hand zu geben,

Christian

dass sie nicht jedes Mal vor so einer Checkliste stehen von,

Christian

du musst jetzt aber umhalten, damit dir nachher keiner den Kopf abbeißt.

Christian

Weil das ist ja dann alles immer nur noch Ass-Covering,

Christian

dass niemandem die Schuld zugeschoben werden kann.

Christian

Und das ist ja nicht der Prozess, um den es geht,

Christian

sondern der Prozess ist, dass Leute produktiv arbeiten können.

Christian

Und während dieser Arbeit, der Vektor der Änderung immer heißt,

Christian

mit jeder Änderung machen wir es erst mal potenziell sicherer und nicht unsicherer.

Christian

Und wenn man dann sagt, okay, wenn ich das für alle Änderungen sicherstellen kann,

Christian

dass alle Änderungen die richtigen Vektor haben,

Christian

ja, dann mache ich doch einfach mehr Änderungen

Christian

und werde halt immer sicherer.

Christian

Ja.

Dominik

Ja, das ist interessant. Also was mir da gerade noch als Idee kommt,

Dominik

es gibt da eigentlich ein Problem bei dieser Sache

Dominik

mit den quasi Pull-Requests.

Dominik

Wenn das jetzt nicht in so einer Firma ist, wo alle Leute da Ahnung haben

Dominik

von dem, was sie tun, sondern wieder

Dominik

den nicht ganz optimalen Fall angenommen,

Dominik

dann kann sich jemand hinstellen,

Dominik

kann sagen, er ist jetzt hier der Türsteher und der guckt sich das alles an.

Dominik

Und

Dominik

dann hat er

Dominik

eine Existenzberechtigung, obwohl er eigentlich sonst gar nichts

Dominik

tun muss. Und das kann dann

Dominik

dieser Informationsasymmetrie

Dominik

dann ausnutzen.

Dominik

Für mich regelt das der Wettbewerb.

Dominik

Eine Firma, die so drauf ist, wird halt

Christian

Schwierigkeiten haben, wirklich

Christian

innovativ nach vorne zu laufen.

Christian

Was ich halt noch spannend finde, ist, dass Python

Christian

natürlich, um mal die Schleife jetzt noch zu ziehen,

Christian

auch als

Christian

Sprache natürlich ein gutes Standing hat.

Christian

Ich hatte vorhin noch mal irgendwie durchgeguckt

Christian

und wenn man halt guckt,

Christian

wenn ich,

Christian

wir könnten jetzt sozusagen, also der

Christian

völlige Tiefschlag ist natürlich, wenn ich es gegen

Christian

PHP vergleiche.

Christian

Da habe ich halt das Problem, dass allein die

Christian

Laufzeitumgebung von PHP und die Sprache selber

Christian

ich hatte vorhin

Christian

geguckt, über die letzten 20 Jahre

Christian

über 600

Christian

CVEs eingesammelt haben.

Christian

Und die machen im Prinzip

Christian

in einigen Jahren das

Christian

Fünffache von dem, was Python über die

Christian

letzten 20 Jahre

Christian

insgesamt hat.

Christian

Also bei Python kamen irgendwie 20

Christian

CVS oder sowas raus über die letzten 20 Jahre.

Christian

Viel mehr kommt da einfach

Christian

nicht. Und

Christian

das ist halt auch schon mal was, wo man immer sagen kann,

Christian

okay, das ist was. Auf der einen

Christian

Seite die Sprache selber hat viele

Christian

Probleme nicht, sowas wie ein

Christian

Buffer-Overflow zum Beispiel, kannst du mit Python

Christian

erstmal so nicht erzeugen. Und es ist auch in der Community

Christian

ja so verankert, dass extrem viele

Christian

Bibliotheken, viele Frameworks

Christian

das ja auch als Thema für sich erklärt haben und

Christian

eben sagen, wir basteln

Christian

nicht nur um Security-Probleme rum, sondern versuchen

Christian

sie dann ordentlich zu fixen. Und es gab

Christian

auch in Python selber, also die Sachen, die es

Christian

gab, wenn ich halt schaue, das war mal

Christian

irgendwann ein libxml-Thema,

Christian

weil du halt zum Beispiel

Christian

libxml über

Christian

das externes Auflösen von Entities dann

Christian

irgendwie Code ausführen konntest und so ein Kram.

Christian

Aber

Christian

die wurden halt in der Community

Christian

immer sehr differenziert und schnell

Christian

diskutiert und auch

Christian

adäquat behoben.

Christian

Da

Christian

habe ich einfach eine völlig andere Basis, von der

Christian

ich ausgehe, als wenn ich praktisch

Christian

bei jeder Codezeile, die ich schreibe, da denke ich

Christian

dann eher so an C, tatsächlich

Christian

meinen Doktor-Kittel angezogen haben muss, um

Christian

ja, nicht daneben zu tappen.

Dominik

Ja, dann hat, glaube ich, sowas wie Rust auch

Dominik

deswegen gekommen, oder? Weil das genau das dann wieder

Dominik

anders macht und

Dominik

in den Griff kriegt, ja.

Jochen

Ja, ja, also Rust ist auf jeden Fall,

Jochen

also ich meine, es kommt halt

Jochen

darauf an, was man jetzt,

Jochen

ich glaube, eben vor Buffer-Overflow,

Jochen

so muss man gar nicht so viel Angst haben, aber

Jochen

wenn man jetzt Server betreibt,

Jochen

die halt super viele Requests bearbeiten

Jochen

oder so.

Jochen

Was hat letztens in einem

Jochen

Podcast irgendwie der

Jochen

Entwickler von Flastia

Jochen

Armin Ronacher gesagt? Er meinte so, Rust

Jochen

ist halt für ihn schon

Jochen

allein deswegen so viel netter, weil

Jochen

Python hätte er ja auch irgendwie

Jochen

sehr gerne gemacht, aber das liegt halt wie Sau.

Jochen

Das ist halt, da kann man

Jochen

nicht viel dran machen. Und das ist

Jochen

natürlich schon irgendwie

Jochen

so.

Christian

Das würde ich gerne verstehen, weil da geht mir

Christian

Philipp dreht den Kopf und ich

Christian

habe auch so ein kleines Messer, was mir in der Tasche aufgeht.

Jochen

Ja, ja, klar. Also es ist

Jochen

muss, aber ich kann

Jochen

schon in gewisser Weise verstehen, was er

Jochen

meint. Also ich meine, bei Rust kannst du dir halt

Jochen

sicher sein, dass da nichts liegt,

Jochen

wenn du es halt richtig machst.

Dominik

Was meinst du denn damit da liegt was rum?

Dominik

Naja, zum Beispiel,

Dominik

dass halt

Jochen

der Hauptspeicher immer weiter anwächst, ohne

Jochen

dass du das eigentlich wolltest, ja,

Jochen

sozusagen, ohne dass du wirklich den Hauptspeicher brauchst,

Jochen

sondern dass halt Sachen nicht wieder

Jochen

weggeräumt werden, die halt irgendwann mal angefallen sind.

Jochen

Klar, also Python

Christian

nimmt dir das Memory-Management halt komplett

Christian

weg und

Christian

das ist tatsächlich Fluch

Christian

und Segen zugleich, logischerweise.

Christian

Also jede technische Entscheidung der Hinsicht hat

Christian

immer Trade-Offs und ein Aspekt

Christian

bei Python ist nun mal, dass Python

Christian

Speicher, den es mal gebraucht hat,

Christian

auch wenn es den Akut gerade nicht braucht,

Christian

nicht einfach mal so wiederhergibt.

Christian

Also wenn dein Prozess

Christian

mal irgendwie, keine Ahnung, ein Gig oder zwei Gig groß

Christian

ist, dann kann

Christian

es gut sein, dass der das jetzt für die nächste Zeit

Christian

mal behält, auch wenn du alle Objekte gelöscht hast

Christian

und wenn die Garbage Collection durch war,

Christian

weil es ist halt auch ein Trade-Off

Christian

zu sagen, naja, ständig

Christian

Mellocs groß und klein und

Christian

groß und klein zu machen, hat auch

Christian

Nachteile. Es hat Nachteile in der Hauptspeicher

Christian

Fragmentierung, das ist an sich ein Performance

Christian

Thema, jada jada jada jada

Christian

und Python als Universalsprache

Christian

in der Hinsicht, wo eben Memory Management als

Christian

ich kümmere mich drum, draufsteht,

Christian

verstehe ich, dass es in diese

Christian

Richtung neigt, eben eher diesen

Christian

universalen Ansatz da zu verfolgen. Und Rust

Christian

tritt nun mal an mit, du hast deinen

Christian

Speicher im Griff, dann müssen sie das auch abliefern.

Christian

Das ist klar.

Dominik

Also nochmal ganz kurz, vielleicht, was

Dominik

ein Melloc ist, also du alloziierst

Dominik

irgendeinen Speicher, oder?

Christian

Genau, also wenn du

Christian

vom Betriebssystem halt Speicher haben möchtest,

Christian

dann ist es ja heutzutage

Christian

eh schon nur noch virtueller Speicher. Also

Christian

Also dass das in deinem Rechner irgendwie 8 Gig, 16 Gig oder halt mal ein halbes Tera oder ein Tera RAM drin ist, das weiß ja kein Programm.

Christian

Das guckt auch kein Programm so wirklich nach heutzutage, sondern ein Programm geht her und sagt, ey, du, könnte ich mal irgendwie Speicher im Wert von 3 Terabyte haben?

Christian

Und dann sagt normalerweise der Linux-Kern heutzutage, klar, kein Thema, hier hast du.

Christian

Und erst in dem Moment, wo es das dann auch anfängt zu beschreiben, sagt der Kern, ach, du willst es auch noch benutzen?

Christian

Na dann, dann teilt er ihm tatsächlich irgendwie diese Sachen zu.

Christian

Und deswegen gibt es einige Programme, MongoDB ist halt auch so ein Ding,

Christian

die alloziieren zum Beispiel immer bloß in Vielfachen von 2 oder in 2 Potenzen oder so ein Kram.

Christian

Also wenn der halt hergeht und sagt, ich brauche hier mal RAM,

Christian

dann sagt er als erstes, ich brauche 64 MB,

Christian

und dann irgendwie, ja jetzt hätte ich auch lieber 118 MB.

Christian

Okay, also jetzt hätte ich gerne 1 GB.

Christian

Und das kann manchmal schon so ein bisschen unangenehm sein,

Christian

aber der Vorteil ist halt, wenn der Speicher dann auch am Stück ausgeliefert wird,

Christian

dann hat das bestimmte andere charmante Aspekte,

Christian

weil dann bestimmte Overhead-Strukturen im Kernel dann halt reduziert werden können.

Christian

Der kann sogenannte Huge-Pages machen, das heißt, du musst dann halt nicht,

Christian

wenn du einen Gigabyte alloziierst, muss der Kernel halt nicht eine Million mal

Christian

eine 1-Kilobyte-Page irgendwo in seiner Tabelle abmarkern,

Christian

weil auch das kann plötzlich schon mal 2, 3, 4, 500 Millisekunden dauern,

Christian

sondern der sagt dann einfach nur noch, hier hast du das Gigabyte.

Christian

Und das sind so Sachen, wo Python dann eben auch häufig optimiert.

Christian

Und Python ist extrem erfolgreich, was diese Optimierung angeht.

Christian

Ein Beispiel dafür sind zum Beispiel Listen.

Christian

Listen haben eine, es gibt eine Operation bei Listen,

Christian

die ist unoffensichtlich O von 1,

Christian

nämlich ein, genau, ein Append an Listen bei Python ist, wie war denn das, ne, sind Listen nicht immer ein O von 1 Append?

Christian

Ja, sollte, wer weiß es, ich weiß es, da war, ne, es gab irgendeinen spezifischen Fall, also die Story drumherum grob ist die,

Christian

dass die Speicherallokation für Listen in Python auch immer nur verdoppelt.

Christian

Der alloziiert einen Buffer für das Array, um die Indizes zu verwalten

Christian

und alloziiert aber, wenn er dann sozusagen es größer machen muss,

Christian

nicht einfach sozusagen, dann muss er ja sozusagen das Ganze,

Christian

achso genau, das Problem ist, wenn du es dann größer machen willst,

Christian

musst du den Bestandsspeicher plus 1 nochmal neu alloziieren,

Christian

alles umkopieren und dann halt das neue reinschreiben.

Christian

Was Python aber macht ist, Python alloziiert immer dann das Doppelte von dem, was es vorher hatte,

Christian

kopiert das einmal um, dann sind die nächsten n gratis,

Christian

dann musst du wieder einmal verdoppeln, einmal kopieren und dann hast du wieder 2n gratis.

Christian

Und das sind so typische Sachen, die man in solchen Situationen halt hat,

Christian

was so Laufzeitumgebungen für einen automatisieren und machen

Christian

und weswegen sich dann hinten so ein bisschen komische Speichereffekte ergeben.

Christian

Und da habe ich lange, lange Zeit meines Lebens auch immer mit meinem Kopf kratzend davor gestanden

Christian

und konnte Leuten nicht erklären, warum es das jetzt gerade tut.

Christian

Und da muss man sich halt irgendwann sagen, kann man nicht erklären.

Christian

Warum es genau das jetzt gerade tut, kann ich dir nicht erklären.

Christian

Ich bin mir relativ sicher, dass es kein Leak ist, wenn du halt dann irgendwie mal sowas beobachtest

Christian

über eine Woche oder einen Monat, wenn du einen langlaufenden Prozess hast

Christian

und die Saisonalitäten findest und du was merkst wie, ah, okay,

Christian

frühmorgens haben die Leute ihren Kaffee getrunken, jetzt lesen sie alle irgendwie das,

Christian

auf deiner Webseite ist, dann geht ihr Speicherbedarf

Christian

irgendwie hoch, dann kommen abends

Christian

irgendwann die Cronjobs, dann geht er nochmal ein bisschen hoch,

Christian

dann passiert lange nichts und dann ist plötzlich,

Christian

gibt er mal wieder ein bisschen Speicher frei und dann ist es irgendwie gut.

Christian

Und wenn du dann

Christian

aber siehst, okay, über einen Monat ist das immer das Gleiche,

Christian

dann mag das zwar sein, dass er zu jedem einzelnen

Christian

Zeitpunkt mal einen Speicher hat, den er

Christian

jetzt gerade akut nicht braucht,

Christian

aber es liegt nicht.

Christian

Ja, ich weiß auch nicht,

Christian

was er damit genau gemeint hat.

Christian

Nee, ich verstehe das, dass er sagt, ich kann

Christian

zum Beispiel, in Python ist es schwierig,

Christian

kontrollierbar schlanke Prozesse zu bauen.

Christian

Das geht nicht so ohne

Christian

weiteres. Also das geht schnell, dass dein,

Christian

wenn du zum Beispiel

Christian

eine Datenverarbeitungspipeline hast mit

Christian

neun oder zehn Schritten und jeder

Christian

Schritt davon braucht irgendwie

Christian

einen Gigabyte RAM, dann kann das

Christian

schon sein, dass dein Python nachher zehn Gig frisst.

Christian

Weil er halt eben

Christian

den Speicher von vorher noch nicht freigegeben

Christian

hatte, der jetzt aber auch gerade nicht gepasst hat, um das

Christian

nächste Ding zu bearbeiten und

Christian

dann so. Das ist halt

Christian

das kriegst du unter Python halt nicht gut kontrolliert.

Christian

Ja, vor allem, weil alles so dynamisch ist,

Philipp

weil ich also im Zweifel auch wirklich den Stack hochwandern

Philipp

kann und schauen kann, was da rumliegt oder

Philipp

ein Integer-Objekt als beliebiges Objekt sehen

Philipp

kann, was halt in Rust ohne weiteres nicht möglich ist

Philipp

und auch in anderen Poemischsprachen nicht geht.

Philipp

Aber auch

Philipp

ohne Speicherverwaltung kann ich ja in Python

Philipp

durchaus noch andere Sicherheitslücken machen,

Philipp

die also gar nichts mit dem Speicher zu tun haben,

Philipp

mit dem, was wir jetzt die meiste Zeit

Philipp

besprochen haben, sondern halt zum Beispiel, dass ich sage,

Philipp

ich verwende den Subprozess

Philipp

und öffne den Subprozess und

Philipp

übergebe einen String

Philipp

und habe diesen String halt

Philipp

konstruiert aus Benutzerdaten und

Philipp

jetzt habe ich plötzlich eine Command Injection,

Philipp

dass man beliebige Shell-Commandos ausführen kann.

Philipp

Das kann man

Philipp

in jeder Programmiersprache

Philipp

und in jeder Programmiersprache

Philipp

die Shell-Commandos ausführen kann. Natürlich kannst du

Philipp

dich auf den Standpunkt stellen, okay, man hat

Philipp

das gefälligst nicht zu machen oder man hat

Philipp

gefälligst immer Shell gleich freuds zu setzen

Philipp

oder das ist ja der Standard, also dass man eine Liste

Philipp

übergibt, aber

Philipp

das sind die, also es gibt noch

Philipp

zahlreiche andere Schwachstellen, glaube ich, die

Philipp

in höheren, auf höherem

Philipp

Level noch passieren können, die gar nichts mit dem Speicher direkt

Philipp

zu tun haben.

Jochen

Ja, absolut, genau, was habt

Jochen

ihr, habt ihr schon mal böse Sachen gesehen,

Jochen

die in Python schiefgegangen sind?

Jochen

Ich weiß nicht, ich überlege

Jochen

gerade, ob ich irgendwas mal

Jochen

wirklich Schlimmes gesehen habe.

Christian

Django Rackaxe. Der Shellout,

Christian

den Philipp da nennt, das ist halt ganz klassisch.

Christian

Ja, das ist schon schlimm. Das ist ganz klassisch.

Christian

Auch sehr beliebt ist, wenn Leute

Christian

meinen, ich muss hier Flexibilität reinbringen

Christian

und jagen halt irgendwie User-Input einfach durch

Christian

einen E-Val durch. Das ist sozusagen

Christian

die interne Variante des Shell-Outs.

Christian

Was ist denn ein E-Val?

Christian

E-Val, ja, okay, Entschuldigung.

Christian

Ja, Funktion. E-Val ist Evil.

Christian

Aber das ist im Prinzip die

Jochen

Oh ja, doch, Pickle.

Jochen

Ei, ei, ei.

Jochen

Ja, Pickle, nur trusted.

Jochen

Da kann man sich

Jochen

auch schon mit dem Fuß schießen.

Philipp

Mit E-Val hat man sogar einen ganz, ganz schlimmen Bug.

Philipp

Und zwar hat eine Anwendung auf die Idee gekommen,

Philipp

dass man doch das cachen könnte.

Philipp

Und man könnte doch den Code nehmen

Philipp

und dann kann man sich so ein kurzes...

Philipp

Also man nimmt irgendwelche Benutzerdaten,

Philipp

die oftmals abgerufen werden.

Philipp

Dann schreibt man dynamisch Python-Code,

Philipp

der das ausführt.

Philipp

Und dann kann man das cachen.

Philipp

Und dann war aber das Problem,

Philipp

dass sogar die noch eine Datenbank-Schwarstelle hatten,

Philipp

dass man sehen konnte, was in der Datenbank lag

Philipp

und da lagen deren Cache-Objekte.

Philipp

Und dann lagen da plötzlich Benutzer-Passwörter

Philipp

oder sonst irgendwelche Sachen.

Philipp

Also da kann man halt, wenn man

Philipp

Schwachstellen verkettet, kann man das

Philipp

auf sehr krumme,

Philipp

sehr fiese

Philipp

Sachen, die man mit einer einzelnen Schwachstelle gar nicht machen

Philipp

könnte. Also das war jetzt nicht

Philipp

der Fehler von denen, dass sie, also es war

Philipp

ein Fehler, dass man den Cache

Philipp

plötzlich sehen kann. Und es war ein anderer Fehler,

Philipp

dass sie überhaupt Eval verwendet haben.

Philipp

Aber erst durch die Kombination ist es halt eigentlich eine

Philipp

Schwachstelle gewesen.

Christian

Auch so ein klassisches Ding ist auch Directory Traversal.

Christian

Dass halt irgendwie

Christian

von außen sagen kannst, ich will XYZ

Christian

haben und dann wird halt nicht ordentlich

Christian

geguckt, ob du durch Punkt-Punkt-Slash

Christian

Kombinationen plötzlich dir dann irgendwie

Christian

ETC-Pass-Videos und so ein Kram halt auslesen lassen kannst

Christian

und das sind immer auch, das ist

Christian

tatsächlich, glaube ich, am wichtigsten

Christian

und deswegen ist dieses, das ist wieder

Christian

Variety matches Variety, deswegen

Christian

sagen wir, wir wollen so schnell so viele

Christian

Verbesserungen in der Security wie

Christian

möglich durch unsere Entwicklungspipeline jagen können,

Christian

weil

Christian

die eigentlichen Vektoren ist nachher, dass

Christian

du hast immer eine Vielzahl von

Christian

Vielzahl von potenziellen Schwachstellen,

Christian

die für sich genommen alle gar nicht so schlimm

Christian

sind. Und wenn du aber immer

Christian

nur auf der Suche nach dem einen großen Ding

Christian

bist, um alles zu reparieren,

Christian

dann vergisst man schnell, dass es halt eher um diese

Christian

Verkettung geht, wie Philipp sagt.

Christian

Da gibt es viele Kleinigkeiten, die das halt machen.

Christian

Also eben Directory Traversal, irgendwie Daten abzusaugen,

Christian

die dir dann einfach nur noch den Pointer geben für

Christian

ah, guck mal, da könntest du da drüben nochmal gucken.

Christian

Ein Klassiker, den ich mag,

Christian

sind Exceptions.

Christian

Exceptions sind für mich die sensibelsten

Christian

Daten, die dein System zur Laufzeit

Christian

eigentlich von sich gibt.

Christian

Weil das Problem ist ja folgendes.

Christian

Dein System ist in einem nicht bekannten Zustand

Christian

mit Daten, die du nicht kennst

Christian

und weißt nicht mehr, was es tun soll.

Christian

Und die Daten können halt alles sein.

Christian

Das können die Kreditkartendaten sein,

Christian

das können die was auch immer.

Christian

Und dann steht da irgendwie Value Error.

Christian

Hast du nicht gesehen?

Christian

Und du kannst den User nicht davon abhalten,

Christian

Daten ins falsche Feld zu schreiben.

Christian

Dann schreibt er seine Kreditkartendaten

Christian

halt das erste Mal irgendwie bei seinem Nachnamen aus Versehen

Christian

rein. Und deswegen diese

Christian

Bewertung von, was ist eigentlich sicher und was

Christian

ist unsicher, ist total schwer.

Christian

Das Paradigma sollte auch

Christian

eher sein, lieber ein bisschen

Christian

zu sensibel zu sein und sozusagen

Christian

dein Schutzniveau einmal grob

Christian

festzulegen und zu sagen, okay,

Christian

wir gehen ja mit Kreditkartendaten um.

Christian

Du musst davon ausgehen, dass irgendein

Christian

doofer User, nein, die User sind nicht doof.

Christian

Das Problem, es ist ein Usability-Problem.

Christian

Das Usability-Problem ist, dass wir halt ein Gehirn

Christian

haben, was bekloppt ist.

Christian

Da kommt dieses ganze Thema Cognitive Processing rein von, unser Gehirn will Energie sparen und deswegen reagiert es auf irgendeine Form von Challenge immer mit der billigstmöglichen Antwort, also Pattern Matching. Und das Pattern Matching von unserem Gehirn ist auch nicht Best Match, sondern First Match. Das heißt, du hast eine Seite vor dir, hast aus deinem Passwortmanager deine Kreditkartennummer kopiert, dein Kind will was von dir, ja bitte, ich muss nur noch, klick, klick, klick und dann hast du halt deine Kreditkartennummer in das falsche Feld eingetragen.

Christian

So, und das ist halt, wie man bei Microsoft damals, alle zwei Millionen Mal, ja, das ist bei uns halt nächsten Dienstag. Und sowas, und deswegen sagen wir auch, wenn wir Anwendungen dann mit Schutzniveaus belegen und sagen, was macht man hier, dann gucken wir eigentlich nur noch nach dem Worst Case und sagen so, jetzt müssen wir davon ausgehen, dass das ganze Ding mit dem Niveau geschützt werden muss.

Christian

Weiter differenzieren macht überhaupt keinen Sinn mehr, weil du kommst dann von Hölzchen zu Stöckchen und irgendwer greift eh daneben.

Christian

Und deswegen bin ich immer sensibel drum, wenn es darum geht, so Exceptions an externe Systeme weiterzuleiten,

Christian

weil im Prinzip übergibst du jemandem Externes alle deine Daten, weil du ja gar nicht weißt, was in der Exception drin ist.

Christian

Wenn du es gewusst hättest, hättest du halt schon irgendwas geschrieben, damit die nicht auftritt.

Philipp

Wie bekommst du dann mit, wenn eine Exception passiert? Also an irgendein System muss das ja weitergeleitet werden.

Christian

Ja, internes System. Also ich meine, wir, also, ich habe mich hier heute jetzt noch nicht wieder vorgestellt, ich bin ja so ein bisschen Stammgast schon. Philipp und ich, wir kennen uns noch nicht, ja. Wir betreiben halt Systeme auf eigenen, wir sind ein eigener sozusagen Cloud-Anbieter in der Hinsicht und haben die Infrastruktur und wir machen das auch so, dass wir halt zwischen den unterschiedlichen Locations, die wir haben, halt entweder verschlüsselt Sachen weiterreichen oder eben lieber Dienste dezentral überall lokal nochmal vorhalten und dann musst du halt selber noch eine Greylock-Instanz da haben.

Christian

Und wenn man das heutzutage alles vernünftig ein bisschen automatisiert, dann lässt er halt noch eine Greylock-Instanz raus und kann sie dann da einfüttern.

Christian

Was ist Greylock, Christian?

Christian

Das ist ein Log-Aggregationssystem.

Christian

Also den kannst du mit Log-Daten befüttern und ihn dann nachher Parser drüber jagen lassen und dir automatisch Alerts schicken.

Christian

Das ist auch so ein Ding, da spielen wir gerade zum Beispiel mit rum für so Threat-Themen.

Christian

Der kann aus Log-Daten IP-Adressen rauspopeln.

Christian

und der technische Begriff für Parsen, und hatte halt dann wieder eine Anbindung an, daran abzugleichen, ob diese IPs assoziiert werden mit irgendeiner Form von, da kommen ständig Angriffe her.

Christian

Und dann kann ich die Auswertung dann wieder zurückfüttern auf meine Firewall vorne und kann sagen, so, und immer wenn irgendwie eine IP, die den Threat Indicator hat, irgendwie öfter als so und so oft pro Stunde vorkommt, dann wird die jetzt erstmal für drei Tage lahmgelegt.

Philipp

Ah, das ist aber gefährlich. Es kann ja sein, dass jetzt irgendjemand auf die Idee kommt und sagt, okay, du hast einen ganz, ganz wichtigen Kunden, mit dem du immer kommunizierst und derjenige schafft es, irgendwie in das Netz reinzukommen von dieser IP und dann löst er diese Anfrage aus. Ich glaube, da gab es auch schon mal Virenscanner, die, sobald ein Paket kam, dann die gesamte IP geblockt haben und dann konnte man die lustig anschreiben von 8888, einem typischen DNS-Server und die haben gesagt, oh, das Paket sieht nach Virus aus, sofort blocken wir alles von diesem Rechner und dann geht nichts mehr.

Christian

Ja, genau. Da muss man immer mit vorsichtig sein und nichtsdestotrotz so ein bisschen mit so Sachen experimentieren, weil halt gerne mal rumzugucken, wie sie aussehen und dann willst du halt immer noch die Möglichkeit haben, nochmal durchgreifen zu können in dem Moment, klar.

Jochen

Ja, aber ich meine, das ist, macht das auch solche Sachen wie, weil ich kenne das eigentlich eher so als, es gibt immer, entweder verwenden Leute diesen Kibana-Stack oft.

Dominik

Kibana hört sich nach Kibakirsch-Banane an.

Jochen

Ja, es schmeckt nicht so gut wie Kirsche oder Banane, leider. Aber klingt auch lustig, ja, nee, das ist so irgendwie Elasticsearch und also diese Richtung.

Jochen

aber da werfen Leute auch Logdaten rein

Jochen

oder halt eben Greylock oder

Jochen

manche machen das auch mit Postgres oder

Jochen

aber ich meine jetzt für Python

Jochen

speziell, da gibt es dann irgendwie so

Jochen

Sentry oder Bugsnack

Jochen

oder so, wo die Tracebacks halt gesammelt

Jochen

werden. Kann man sowas eigentlich auch

Jochen

gut selber hosten, weil das habe ich jetzt tatsächlich

Jochen

verwendet, aber ich kenne es auch immer nur, dass man

Jochen

da externe Services verwendet.

Philipp

Kein Problem, Sentry kann man ohne Problem, ist auch ein

Philipp

Source-Projekt, kann man ganz normal selber hosten.

Philipp

Kommt ja auch selber aus der Python-Ecke,

Christian

Ist, glaube ich, auch Django unten drunter oder so.

Christian

Ich bin mir gar nicht mehr sicher.

Christian

Ja, war es mal.

Christian

Aber stimmt, ist auch, genau.

Christian

Vielleicht nicht mehr.

Christian

Century ist ja relativ groß geworden tatsächlich, Armin und so.

Christian

Und die kannst du selber hosten tatsächlich an der Stelle.

Christian

Das würde ich dann auch immer empfehlen.

Christian

Wichtig ist sozusagen der Unterschied von der Log Aggregation

Christian

versus Exception Logging.

Christian

Exception Logging hat die große Aufgabe,

Christian

wenn du viel vom Gleichen

Christian

entgegenkriegst, weil irgendwie der eine

Christian

backt gerade 50.000 Mal im letzten

Christian

Tag auf, dann willst du, dass der dir die

Christian

schon normalisiert und sagt, hier, das Problem

Christian

gab es jetzt in 50.000 Instanzen,

Christian

hier sind die Parameter, die ich gesehen habe.

Christian

Logging macht natürlich immer nur,

Christian

hier ist der Hydrant, hier kommt

Christian

alles raus.

Christian

Ja, interessant.

Christian

Da gibt es also viele verschiedene Typen von

Dominik

Angriffen, die man irgendwie mit verschiedenen

Dominik

Typen von Verteidigungsmaßnahmen beantworten

Dominik

möchte, können muss,

Dominik

probieren kann.

Dominik

Sollen wir uns mal

Dominik

unbeliebt machen? Oder ich mach mich unbeliebt.

Dominik

Wir, ein Scanner oder sowas.

Jochen

Ich meine, was Leute immer so machen, wenn sie zu Hause,

Jochen

ich meine, vielleicht,

Jochen

sehr beliebt,

Jochen

aber irgendwie glaube ich zum Beispiel,

Jochen

das bringt alles nix.

Jochen

Vor allem müssen die ganz viel

Philipp

mit Speicher machen und ganz viel

Philipp

Level erarbeiten. Genau, das, was man eigentlich nicht haben will.

Philipp

Also wo ich es noch sehe,

Philipp

wo ich noch mitspiele, ist, wo wir es

Christian

gern haben, wo es angefragt wird

Christian

und dem nicht harsch

Christian

widersprechen, ist,

Christian

wenn du sozusagen tatsächlich

Christian

sowas hast wie, deine Anwendung nimmt Daten

Christian

per Mail oder Upload entgegen und du weißt,

Christian

die werden dann nachher auf eher schlecht

Christian

gepflegten Rechnern wieder weiterverarbeitet.

Christian

Also wir haben so ein Kram, wo dann

Christian

irgendwie, keine Ahnung, Wordfiles reinkommen und die sollen

Christian

dann von irgendeiner dritten Partei auf ihrem

Christian

Windows-Rechner verarbeitet werden.

Christian

Dann habe ich halt mal einen

Christian

Klamm-AV da mit drauf sitzen, der halt

Christian

diese eine Datei scannt, aber das ist

Christian

dann kein Ding, was das System scannt,

Christian

sondern es ist bloß ein Programm.

Christian

Hier scannt die eine Datei, du sagst, ja, okay,

Christian

dann geben wir die weiter und wenn nicht, dann

Christian

sperren wir sie halt zur Seite. Das ist

Christian

eine Form von Virenscanner, da spiele ich punktuell

Christian

halt noch mit. Das kann man

Christian

schon mal machen. Was ich halt nicht leiden

Christian

kann, sind diese Security-Suites,

Christian

die dann irgendwie einen Rechner irgendwie übernehmen

Christian

und irgendwie mehr Schaden machen als

Christian

also gut, ich meine, da braucht man bloß

Christian

Fefe lesen, da kriegst du es halt alle zwei Wochen wieder

Christian

serviert, Schlangenöl und so.

Christian

ein gutes Konzept

Dominik

was ich eben noch

Dominik

kurz erwähnt hatte, was ich mir ja noch irgendwann

Dominik

drüber gestolpert bin, was bei Django eine

Dominik

DOS-Attacke möglich war, und zwar

Dominik

bei Regex, die benutzt worden ist

Dominik

um bestimmte Formularfelder auszulesen

Dominik

das heißt man konnte einfach, indem man

Dominik

in Formulare, ich glaube E-Mail oder so

Dominik

einen cleveren Regex reingeschrieben hat

Dominik

irgendwie eine

Dominik

exponentiell wachsende oder Endlosschleife

Dominik

produzieren und dann damit die Seite

Jochen

man kann Regex

Jochen

zu bauen, die sehr, sehr langsam werden dann.

Jochen

Genau.

Dominik

Dann hat man einfach ganz viele Requester dran geschickt und dann hat man halt die Seite

Dominik

in die Knie ziehen können. Das haben die irgendwann gefixt.

Dominik

Ich glaube auch relativ spät, erst bei einer Zweier-Version,

Dominik

wenn ich das richtig bekommen habe.

Dominik

Sehr interessant, solche Sachen. Also das

Dominik

denkt man immer, jemand, der keine Ahnung hat, nicht dran,

Dominik

dass in so einfachen

Dominik

Bibliotheken wie RegEx da was Tolles hinterstehen

Dominik

kann. Ich glaube, was ist das? Perl RegEx oder wie

Jochen

nennt man das? Diese Perl Compatible

Jochen

RegEx, also PCIe, aber ich

Jochen

weiß nicht, ob das...

Jochen

Das ist nicht in Python. Die Python-Regex-Engine

Jochen

ist eine eigene.

Philipp

Also moderne Regex-Engines können schon

Philipp

nicht alle Fälle, aber viele Fälle

Philipp

da besser erkennen und haben dann

Philipp

auch bessere Garantien, also nicht erkennen,

Philipp

aber haben Garantien, dass das halt nicht

Philipp

in diesen exponentiellen Fall läuft. Natürlich nicht immer.

Philipp

Und natürlich kann ich immer ein Regex produzieren,

Philipp

der einfach so lange dauert, weil ich einfach

Philipp

sage, okay, hier kommt irgendwas Beliebiges

Philipp

und das darf beliebig oft vorkommen.

Philipp

Und wenn ich da einen langen String habe, dann ist es halt total,

Philipp

dann gibt es

Philipp

natürlich exponentiell viele Möglichkeiten,

Philipp

wie ich das Matching

Philipp

nehmen kann. Und wenn ich den String so konstruiere, dass das Matching

Philipp

nie passiert, dann dauert

Philipp

es halt ewig. Also unendlich

Philipp

nicht, aber schon mal länger ist das Universum.

Philipp

So, ich mach ja mal

Christian

kurz, wir müssen die Chapter-Mark hier ziehen.

Christian

Ich muss jetzt raus.

Christian

Ihr könnt mich rausschneiden.

Christian

Ich kann jetzt raus, du kannst einfach Tschüss sagen.

Christian

Ja, wir haben eine Sekunde Pause gehabt,

Christian

das könnt ihr rausschneiden.

Christian

Alles klar.

Christian

Tschüss, vielen Dank, dass du da warst.

Christian

Bis zur Fortsetzung demnächst mal wieder.

Christian

Viel Spaß, bis dann. Ciao.

Christian

Ja.

Jochen

Haben wir denn zu dem

Jochen

Security-Thema noch irgendwie,

Jochen

ich weiß nicht genau, irgendwelche Dinge,

Jochen

die wir unbedingt erzählen

Jochen

wollten, oder?

Jochen

Ja, also,

Dominik

mir fallen noch einige Sachen ein, aber frage ich erst mal euch weiter.

Dominik

Was geht's denn, Philipp fragen wir nochmal. Was wolltest du denn noch

Dominik

erzählen zu Security?

Dominik

Es gibt, also,

Philipp

was vielleicht wichtig ist,

Philipp

dass man eine Funktion

Philipp

nimmt, oder eine Standardmöglichkeit

Philipp

nimmt, um sich gegen die Sicherheit

Philipp

Schwachstädte zu verteidigen. Also wir haben eben schon

Philipp

Path Traverses angesprochen, da könnt ihr mal denken,

Philipp

okay, also bei Path Traverses ist das Problem,

Philipp

dass ich irgendwas in den Pfad einschleuse,

Philipp

typischerweise halt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Philipp

typischerweise halt ... um halt aus dem Pfad der Anwendung rauszukommen

Philipp

und dann statt eine lokale Datei der Anwendung zu lesen,

Philipp

bekomme ich halt eine Datei irgendwo aus dem System.

Philipp

Weiß nicht, die Passwortdatei oder die Datenbankdatei oder irgendwas anderes.

Philipp

Und eine Möglichkeit, um sich dagegen zu verteidigen, ist natürlich zu sagen,

Philipp

ich nehme immer alle Punkte raus oder so oder alle Slashes raus.

Philipp

Und dann kommt man halt auf andere Systeme, zum Beispiel unter Windows,

Philipp

da ist ja ein Doppelpunkt wichtig.

Philipp

Und dann muss man auch an den denken und dann ist der Backslash wichtig.

Philipp

Und es ist halt sehr schwierig, sowas richtig zu schreiben.

Philipp

Da gibt es immer wieder Leute, die es versuchen.

Philipp

Die sagen, ja, ich weiß es trotzdem.

Philipp

Und bei einigen Systemen geht das auch.

Philipp

Also man kann zum Beispiel bei SQL Injection kann man relativ einfach vermeiden,

Philipp

weil das halt eigentlich nur ein einfaches Anführungszeichen ist.

Philipp

Aber es ist halt immer gut, dann für eine fertige Funktion oder eine fertige Struktur zu nehmen,

Philipp

die genau dafür programmiert ist.

Philipp

Und die dann auch, zwar die sicher ist, aber die ist halt sicher oder hoffentlich sicher,

Philipp

weil es halt nur eine ist. In Python

Philipp

zum Beispiel, um Path-Traverse zu verhindern,

Philipp

kann man halt os.path.basename

Philipp

oder aus der Path-Lib was nehmen,

Philipp

statt halt selber zu versuchen,

Philipp

diesen String zu bearbeiten.

Dominik

Also nicht selber machen, Security war das der...

Philipp

Ja, genau. Es sei denn, man weiß,

Philipp

was man tut. Also an einigen

Philipp

Stellen kann das richtig sein. Und ich glaube,

Philipp

ein anderes häufiges Problem ist auch, dass man sagt,

Philipp

ich versuche, die Eingaben

Philipp

zu früh

Philipp

abzufangen. Also dass ich sage, okay,

Philipp

ich habe eine ganz komplizierte Anwendung und immer,

Philipp

wenn mir jemand was mit einem Anführungszeichen schickt, dann sage ich, geht nicht, ist Fehler oder ich schmeiße das Anführungszeichen raus und das ist natürlich klappt vielleicht, aber dann muss ich halt überall dran denken und es gibt halt verschiedene Kontexte, also wenn ich einen Pfad habe, dann ist halt ein Slash oder ein Backslash ein Problem, wenn ich aber HTML habe, dann ist das kleiner Zeichen oder das doppelte Anführungszeichen ein Problem und so weiter und so fort, das heißt, es ist wichtig, dass man darauf achtet, dass man das in jedem Kontext richtig macht und es ist schwierig zu sagen,

Philipp

oder es ist ein häufiger Anfänger vielleicht zu sagen,

Philipp

okay, ich gehe davon aus, dass meine Daten

Philipp

irgendwie korrekt sind. Das ist dann doch immer

Philipp

sehr schwierig, weil man halt ein komplexes

Philipp

System hat, vielleicht sogar mit mehreren

Philipp

Microservices, die die Daten aus verschiedenen

Philipp

Quellen

Philipp

anliefern. Aber wenn man darauf vertraut, dass

Philipp

die Datenbank irgendwie gute Daten enthält, das ist

Philipp

immer sehr, sehr gefährlich.

Dominik

Ja, ist interessant, welche Assertions man

Dominik

daraus gibt oder welche Dinge man daraus macht, wenn

Dominik

das nicht dem erwarteten Standard entspricht oder so.

Dominik

ein paar Stolper fallen. Dass man einfach interpretiert,

Dominik

was da kommt, ist wahrscheinlich

Philipp

eine mittelgültige Idee. Genau, man muss immer misstrauisch sein gegenüber allen Daten.

Philipp

Also auch der eigene Datenbank, auch die kann

Philipp

Schrott enthalten.

Philipp

Okay, guter Tipp.

Philipp

Ja.

Philipp

Ja.

Jochen

Ja, ansonsten, genau, ein Thema, wo ich immer

Jochen

denke, das kann doch nicht so schwer sein, aber

Jochen

ich tue mich irgendwie schwer damit,

Jochen

ist halt, wie authentifiziert man sich eigentlich

Jochen

richtig irgendwie

Jochen

zum Beispiel per

Jochen

einer API per HTTP oder so

Jochen

oder die Web-Authentifizierung

Jochen

ist irgendwie nicht so einfach.

Jochen

Und dann, ja.

Dominik

Es gibt ein paar interessante Artikel dazu, die wir

Dominik

letztens gelesen hatten, warum

Dominik

JBT kaputt ist.

Jochen

Ja, JBT sieht nicht gut aus, ja.

Dominik

Und dass ja viele Leute nutzen und sagen, das ist der Standard,

Dominik

den es da gibt. Und ich habe aber

Dominik

auch jetzt auch noch nicht so viel gefunden, was man da anders

Dominik

machen kann. Es gibt irgendwie Paseto oder

Dominik

PyPaseto, aber da gibt es noch nichts wirklich Nutzbares. Das muss man

Dominik

irgendwie auch alles wieder selber machen

Dominik

vielleicht und das ist da vielleicht wieder nicht so

Dominik

eine gute Idee und da ist es gar nicht so

Dominik

einfach, sich vernünftig per Token zu authentifizieren.

Jochen

Ja, tatsächlich. Also das, was ich jetzt auch

Jochen

ist halt, ja, HTTP-only-Cookies.

Jochen

Ja.

Jochen

Vielleicht. Also Sessions dann?

Jochen

Ja, Sessions, Session-Cookies.

Jochen

Ist halt manchmal ein bisschen

Jochen

schwierig, aber

Jochen

ja, also das ist immer wieder,

Jochen

wo ich mir denke, das müsste doch eigentlich jetzt einfach sein,

Jochen

aber irgendwie ist es das nicht.

Jochen

Ja.

Jochen

Tja. Oh, oder hast du

Jochen

mal so von Indie

Jochen

aufgehört? Also ich meine, das ist halt so eine

Jochen

etwas abgespeckte O-Aus-Variante.

Jochen

Nee, gar nicht.

Jochen

Okay, ja. Was ist das?

Jochen

Das ist sozusagen,

Jochen

dass man halt

Jochen

selber,

Jochen

also

Jochen

naja, also das ist auch von dem

Jochen

von den gleichen, also das hat,

Jochen

oh Gott, jetzt muss ich wiederkommen, ich vom Hölzchen aufs

Jochen

Stöckchen, das hat was mit dem Indie-Web zu tun,

Jochen

das ist so eine Bewegung, um, dass man halt

Jochen

die Dinge selber machen kann, die,

Jochen

wo man normalerweise immer irgendwelche Unternehmen

Jochen

braucht, die das halt machen.

Jochen

Und es geht zum Beispiel darum, dass man

Jochen

sich mit seiner eigenen Webseite einloggen können will.

Jochen

Also nicht Username, Passwort,

Jochen

sondern man gibt halt ein URL an

Jochen

und dann gibt es halt sozusagen

Jochen

einen Hook, wo dann irgendwie man

Jochen

sagen kann, wie man

Jochen

jetzt, wie man sagt,

Jochen

dass man jetzt authentifiziert ist und dann zum Beispiel kann man

Jochen

sich dann halt irgendwie

Jochen

eine Push-Notification schicken lassen

Jochen

aufs Handy. Und dann sagt man

Jochen

halt, ja, okay, das war jetzt richtig. Oder man

Jochen

kriegst du einfach eine E-Mail geschickt oder so und drückst dann auf

Jochen

einen Link und dann...

Jochen

Genau, genau, genau. Solche Sachen.

Jochen

Und man ist ja sehr frei in der Art, wie man das halt

Jochen

dann, wie man diese Authentifizierung

Jochen

gestalten kann und das klingt eigentlich

Jochen

schon sehr nett, aber...

Jochen

Das ist ja sicherlich immer die

Philipp

einfachste Lösung, wenn du sagst, ich möchte selber keinen

Philipp

Benutzernamen, kein Passwort speichern,

Philipp

weil einerseits sind mir die Daten zu sensitiv und ich muss

Philipp

genau gucken, wie ich das richtig speichere,

Philipp

ist zu sagen, okay, ich mache einfach, ich speichere überhaupt keine

Philipp

Benutzernamen, Passwörter und ich verwende irgendein Single-Sign-On-System.

Philipp

Du hast ja schon OROS angesprochen oder OpenID Connect ist ja der alternative Standard,

Philipp

dass man sagt, okay, jemand anders müsste sich darum kümmern.

Philipp

Und dann habe ich zwar diesen anderen Dienst, der irgendwo vielleicht auch in meinem Netzwerk ist

Philipp

oder vielleicht sage ich, okay, ich erlaube Login mit Facebook, mit Google, mit Twitter und so weiter, mit GitHub.

Philipp

Dann müssen die sich ja darum kümmern und dann bin ich da raus aus der Sache.

Philipp

Ich muss kein Passwort speichern.

Philipp

Und für den Benutzer ist das ja eigentlich auch nicht schlecht, weil der Benutzer muss kein Passwort wählen.

Philipp

Weil wenn der Benutzer ein Passwort wählt, das ist ja auch...

Philipp

Nicht so gut.

Dominik

Aber das hat auch ein paar Falschstücke wieder.

Dominik

Also zum Beispiel, wir hatten jetzt das System,

Dominik

dass wir auch so ein OpenID-Connect-Schnittstelle bauen mussten,

Dominik

aber wir haben das dann über Django All aus versucht zu implementieren,

Dominik

der ja viele davon schon bereitstellt, irgendwie als Pakete.

Dominik

Und dann mussten wir aber so einen eigenen Provider dafür bauen,

Dominik

weil der, den wir da hatten,

Dominik

der hat nicht genau das gemacht, was wir wollen.

Dominik

Und ich bin mir nicht sicher,

Dominik

ob das, was wir da gebaut haben, alles so gut richtig funktioniert.

Dominik

Das wird sich dann irgendwie im Laufe der Zeit zeigen.

Dominik

Das müssen wir richtig testen. Mal gucken, ne?

Dominik

Beim ersten Pentest, hoffentlich.

Dominik

Ja, ja, ja. Oder beim ersten

Dominik

Pentest, der ungefragt ist.

Dominik

Ja, aber

Jochen

was ich vor allen Dingen blöd

Jochen

finde bei diesen ganzen OpenIDO

Jochen

aus Geschichten auch, ist halt, dass man

Jochen

dann halt alles an so bestimmte

Jochen

User-Accounts hängt.

Jochen

Weiß ich nicht, ob das jetzt GitHub, Twitter oder

Jochen

schlimmer noch vielleicht Facebook ist oder so.

Jochen

Dann passiert irgendwas Blödes und dann verliert man halt den

Jochen

Account und dann verliert man gleichzeitig den Zugang zu ganz

Jochen

vielen anderen Sachen. Das ist ja auch

Jochen

irgendwie nicht so schön.

Philipp

Ja gut, aber dadurch braucht

Philipp

der Benutzer halt nur noch ein Kennwort und

Philipp

Facebook kann halt sehr, sehr viel bessere Sachen,

Philipp

bessere Authentifizierung durchführen, als du es machen

Philipp

könntest. Also die schauen halt auf deine IP-Adresse,

Philipp

auf deinen Browser, die haben noch ein

Philipp

Session-Token, die haben vielleicht auch eine

Philipp

Mehrfach-Authentifizierung,

Philipp

dass du noch irgendwie auf dem Handy

Philipp

was bestätigen musst und

Philipp

da gibt es dann eine Partei,

Philipp

das musst du nicht alles selber implementieren.

Philipp

Wenn du es selber implementierst, hast du...

Dominik

Ja, also es gibt wirklich dann einige

Dominik

Firmen, die das dann wohl doch

Dominik

ernster nehmen, als man manchmal so denkt. Ich war zum Beispiel

Dominik

in Mainz irgendwo in den Ausland geflogen, als man das noch

Dominik

durfte irgendwie und habe eine

Dominik

relativ hohe Überweisung angefordert

Dominik

oder durchgeführt. Und auf einmal bekam

Dominik

ich dann so einen Anrufer von einem Telefon von der Bank, die meinte so

Dominik

ja, hallo,

Dominik

wollen Sie das wirklich tun?

Dominik

Oder waren Sie das?

Dominik

Ja, das war ich. Ja, dann ist ja alles gut.

Dominik

Ja, aber das war schon mal nett, dass sie nochmal

Dominik

nachgefragt haben, anstatt dass sie einfach eine hohe Summe

Dominik

irgendwo hin überweisen oder von irgendwo.

Dominik

Das war schon, kann ich so

Dominik

unrichtig, dass dann vielleicht

Dominik

ein Mensch da nochmal nachguckt, also dass dann solche

Dominik

Alerts irgendwie in das System rausgehen, die dann nochmal gucken,

Dominik

wenn irgendwas ist. Genau, das

Philipp

kann deine Anwendung ja nicht leisten, das möchtest du ja

Philipp

normalerweise nicht machen. Du möchtest natürlich anfangen,

Philipp

SMS zu verschicken oder was auch immer

Philipp

oder solche Überprüfungen

Philipp

zu machen und ich glaube, das ist einfacher, wenn man sowas

Philipp

zentralisiert und wenn du

Philipp

ein Passwort, also

Philipp

viele Leute verwenden halt einen Passwortmanager, aber auch

Philipp

die, glaube ich, die große Masse an Leuten

Philipp

verwendet immer noch in 2020 keinen Passwortmanager,

Philipp

sondern haben ein Standardpasswort, was sie dabei

Philipp

verwenden. Und wenn dann halt irgendein Katzenforum

Philipp

gehackt wird, dann bist du plötzlich dran und dann

Philipp

rufen deine Kunden an, warum wurde hier meine Bankseite

Philipp

oder was auch immer, welche Seite du anbietest,

Philipp

warum wurde die gehackt? Und dann sagst du,

Philipp

ja, du hast das gleiche Passwort in deinem Katzenforum

Philipp

verwendet. Und die haben halt, wir haben

Philipp

die besten Sicherheitsstände, aber das Katzenforum, das ist

Philipp

halt nur irgendeine Kiste, die irgendwo

Philipp

läuft. Und die ist halt eh,

Philipp

da reichen sich die Hacker,

Philipp

die wird in der Türklinke,

Philipp

drücken sich die Hand, weil da halt so viele Hacker drauf

Philipp

sind, dass die sich gegenseitig schon stören

Philipp

mit ihren ganzen Exploits auf dem Katzenforum

Philipp

und das ist halt ein Problem, was

Philipp

du mit dem Sing-It-Sign-On direkt an andere

Philipp

Leute verschiebst. Dann muss sich Facebook oder

Philipp

Google oder wer auch immer oder dein eigener

Philipp

Sing-It-Sign-On-Service muss sich dann

Philipp

darum kümmern.

Philipp

Ja.

Dominik

Ja, ja. Ja, wir haben uns ein paar Sachen, glaube ich, vergessen.

Dominik

Also was wäre mit Security jetzt so ganz groß?

Dominik

Müsste man ja eigentlich noch über Social Engineering

Dominik

reden und ganz andere Geschichten.

Dominik

Also ein paar USB-Sticks auf den Parkplatz fallen lassen

Dominik

oder sowas und ob man

Dominik

Corporate sicher bekommt und wie das halt ist

Dominik

so mit, wie man die Leute auditen

Dominik

kann und da gibt es ja so Experimente zu.

Dominik

Also zum Beispiel

Dominik

einige Konzerne verschicken ja dann

Dominik

so Test-E-Mails oder Trainings-E-Mails

Dominik

regelmäßig, um zu gucken,

Dominik

klicken die Leute auf alles,

Dominik

was da so ins Mailfach

Dominik

flattert und die Antwort ist schon, ja,

Dominik

das tun sie. Und dann kann man die halt

Dominik

ein bisschen erziehen oder sowas, sodass man die

Dominik

Quote davon reduziert und das ist eine ganz spannende.

Dominik

Ja, aber

Jochen

da würde ich jetzt auch so ganz spontan

Jochen

würde ich sagen, naja gut, aber ich meine, dafür sind

Jochen

doch die Sachen dafür da, dass man da drauf klickt.

Jochen

Also ich meine, das ist ja,

Jochen

das kann es ja eigentlich nicht sein, dass man

Jochen

irgendwie die Leute dazu erzieht,

Jochen

irgendwie sich an komische Regeln zu halten,

Jochen

damit die Software bleiben darf.

Jochen

Das ist ja irgendwie... Ja gut, da gibt es ja ein ganz

Philipp

wichtiges Sicherheitskonzept, was wir noch gar nicht so richtig...

Philipp

Doch, wir haben es Schweizer Käse genannt

Philipp

oder Defense in Depth, dass ich sage, okay,

Philipp

ich sorge dafür, dass auch wenn

Philipp

also dem Chef der Firma, der

Philipp

schon 60 ist und der

Philipp

noch ein bisschen mit der Schreibmaschine arbeitet

Philipp

und der auf alles klickt, was bunt

Philipp

blinkt, dem gebe ich vielleicht keinen

Philipp

Ruhezugriff, auch wenn der sagt, ich bin der Chef, ich möchte

Philipp

auf die ganze Firma überall Zugriff haben.

Philipp

Da sage ich, okay, du kriegst deinen eigenen Rechner

Philipp

und von deinem Rechner darfst du nirgendwo rein

Philipp

und darfst vielleicht noch...

Dominik

Dazu beruht dann der Admin, der bei dir vor der Tür steht und

Dominik

das dann mit dir gemeiner macht.

Dominik

Ja.

Philipp

Ja, aber du kannst halt dafür sorgen,

Philipp

dass du halt Netze separierst oder

Philipp

im Zeiten des Homeoffice, dass du halt Systeme separierst

Philipp

und sagst, okay, jedes System muss

Philipp

eigentlich

Philipp

davon ausgehen, dass alle anderen Systeme gehackt sind,

Philipp

also auch im internen Netzwerk, also ich

Philipp

muss davon ausgehen, ich kann keinem

Philipp

nur aufgrund der IP-Adresse vertrauen, nur weil

Philipp

er mit mir kommunizieren kann, sondern das System

Philipp

muss halt ordentliche Single-Sign-On-Tokens überprüfen

Philipp

oder was auch sehr beliebt ist

Philipp

für Service-to-Service-Kommunikation, sind

Philipp

halt Client-Side-TLS-Zertifikate,

Philipp

dass ich sage, ich verwende das TLS

Philipp

nicht, wie man es normalerweise verwendet, dass ich

Philipp

einen Server habe, sondern ich habe auch einen Client,

Philipp

du hast ja eben schon den YubiKey angesprochen, den man genauso

Philipp

einsetzen kann, wenn da ein Mensch ist,

Philipp

aber auch zwischen Systemen ist das glaube ich so der

Philipp

goldenen Stand, dass man sagt, okay, ich habe

Philipp

einen Client-Site TLS-Zertifikat, ich habe einen Server-Site

Philipp

TLS-Zertifikat. Vielleicht nochmal ganz kurz da,

Dominik

einmal kurz das Low-Level, also TLS ist irgendwie

Dominik

Transport-Layers, sehr cute.

Philipp

Genau, auch bekannt als SSL. SSL ist der

Dominik

Vorgang. Und das macht sowas sicher, wie

Dominik

eine Verbindung zu einem anderen Rechner, dass die irgendwie

Dominik

verschlüsselt übertragen, dass man sich nicht in die Mitte setzen kann,

Dominik

um das abzuhören irgendwie. Ja, nicht eine Verbindung zu

Philipp

einem anderen Rechner, sondern, also

Philipp

auch, aber

Philipp

von einer Anwendung zu einer anderen Anwendung.

Philipp

Also auch auf dem lokalen Rechner. Ja, okay.

Philipp

Ja, genau.

Dominik

Ja, okay. Ja, das sind halt irgendwie so

Dominik

genestete Sicherheitslevel, die irgendwie so

Dominik

ineinander stecken und das ist dann, wo ist dann irgendwann alles

Dominik

relativ komplex dann mit den ganzen...

Jochen

Ja, ja, du brauchst halt allein, also

Jochen

für sowas wie eben so eine stinknormale,

Jochen

ich weiß nicht, so eine Anwendung, wie du besuchst,

Jochen

bist auf deiner Bankseite und

Jochen

machst da irgendeine Transaktion, müssen halt viele

Jochen

Dinge gewährleistet sein.

Jochen

Also der TLS-Teil macht halt die

Jochen

Vertraulichkeit,

Jochen

beziehungsweise Integrität, ich weiß jetzt gar nicht genau,

Jochen

aber was du halt auch noch...

Jochen

Beides, genau.

Jochen

Was du halt auch noch brauchst, ist halt

Jochen

Authentifizierung, also du musst dich halt irgendwie

Jochen

gegenüber der Bank ausweisen, damit

Jochen

die Bank weiß,

Jochen

wer du bist und überprüfen kann

Jochen

und das ist dann der dritte Teil, ob du auch autorisiert

Jochen

bist, das zu tun, was du da tun willst, das ist halt

Jochen

nochmal getrennt davon, weil es kann ja sein,

Jochen

du hast dich zwar eingeloggt, aber du darfst irgendetwas

Jochen

nicht machen und Autorisierung

Jochen

ist ja auch nochmal so ein Riesenthema,

Jochen

wie kriegt man das eigentlich ordentlich

Jochen

hin und

Philipp

Der coole Trick bei TLS ist halt,

Philipp

dass du sagen kannst, also

Philipp

Also du kannst erstmal sowieso asymmetrisch arbeiten, das heißt der private Schlüssel verlässt nie die Box.

Philipp

Du hast also einen Client, also einen Service, der einen anderen Dienst was sendet

Philipp

und der hat einen privaten Schlüssel und der andere Dienst kennt nur den öffentlichen Schlüssel.

Philipp

Und das kannst du noch weiter treiben, indem du halt sagst,

Philipp

der andere Dienst muss noch nicht mal den öffentlichen Schlüssel kennen,

Philipp

sondern es gibt noch eine dritte Partei, die das irgendwie signiert.

Philipp

Und das verwendest du ja, wenn du auf eine normale Webseite gehst,

Philipp

normale HTTPS-Seite, dann ist die halt

Philipp

oben grün, weil halt

Philipp

dieses Zertifikat von jemandem signiert wurde

Philipp

und das kannst du

Philipp

aber auch kleinseitig verwenden, dass du sagst, okay,

Philipp

der, ich zertifiziere

Philipp

nicht nur, dass derjenige, der die Anfrage

Philipp

entgegennimmt, richtig ist, sondern auch der, der

Philipp

die Anfrage sendet. Das ist ja tatsächlich wieder

Dominik

interessant, weil das nämlich das nächste Thema ist, was irgendwie eigentlich

Dominik

zu Security natürlich dazugehört und das wäre

Dominik

Kryptografie oder Verschlüsselung, ohne dass man ja

Dominik

wahrscheinlich nicht auskommt und da gab es ja irgendwie

Dominik

Algorithmen, mit denen man bestimmte Dinge

Dominik

verschlüsselt oder

Dominik

hasht oder wie auch immer und die man dann

Dominik

mehr oder weniger schnell

Dominik

entschlüsseln konnte oder sowas. Oder man konnte sogar

Dominik

so Angriffe fahren wie, ich glaube Rainbow Table

Dominik

nennt sich das oder sowas, dass man halt Passwort-Hashes

Dominik

einfach in eine Tabelle schmeißt und guckt, wie ist denn

Dominik

das Ergebnis von dem Hash, also was ist denn da der umgekehrte

Dominik

Wert von oder so. Und ja, wenn man

Dominik

solche Sachen halt irgendwie

Dominik

vermeiden möchte, dann müsste man glaube ich

Dominik

schon gucken, welchen Algorithmus man zum Schlüsseln,

Dominik

Entschlüsseln seiner Schlüssel nimmt.

Dominik

Achtung, das ist zwei verschiedene Sachen.

Philipp

Verschlüsseln und, also mein Passwort möchte ich

Philipp

eigentlich nicht verschlüsseln, weil dann

Philipp

muss ich ja den Schlüssel irgendwo auf dem Server speichern.

Philipp

Ja. Also das Passwort

Philipp

eines Nutzers möchte ich nicht.

Dominik

Also SSH-Keys oder sowas, das mache ich mit Schlüssel.

Dominik

Die dann

Dominik

bestimmten Algorithmus benutzen irgendwie.

Dominik

Okay, ja.

Dominik

Das man halt da, also das müsst ihr vielleicht

Dominik

nochmal erklären, also wie man halt da von einem

Dominik

einen, ich sag mal,

Dominik

nicht so guten Algorithmus den Schlüssel

Dominik

berechnen kann aus einem Public Key oder sowas, ja, bei

Dominik

asymmetrischer Verschlüsselung.

Philipp

den Schlüssel selber musst du eigentlich nicht berechnen.

Philipp

Du kannst ein Zertifikat berechnen,

Philipp

das ist der Schlüssel nochmal in Kurs, aber du

Philipp

könntest eigentlich auch immer den Schlüssel an sich verwenden,

Philipp

den öffentlichen Schlüssel zumindest.

Philipp

Nur weil der öffentliche Schlüssel ist halt bei dieser

Philipp

Kryptografie sehr lang, das muss halt eine sehr lange Zahl sein

Philipp

und die kannst du halt eindampfen auf

Philipp

eine kürzere Zahl, die man aus verschiedenen Gründen

Philipp

dann verwendet, die auch immer gleich ist, egal wie lang

Philipp

der Schlüssel ist und das ist das Hash-Verfahren.

Philipp

Das verwenden wir auch bei Passwörtern und auch an

Philipp

vielen anderen Stellen, kann ich auch verwenden, um

Philipp

zum Beispiel zu überprüfen, wenn ich Software runterlade,

Philipp

dass die in Ordnung ist. Haben wir eben schon mal

Philipp

angesprochen, dass wenn ich

Philipp

das mit Python mache,

Philipp

dann habe ich zum Beispiel bei pip-env

Philipp

oder bei pip habe ich ein pip-file

Philipp

oder ein pip-file.log und in dem pip-file.log

Philipp

stehen halt die ganzen Hashes drin.

Philipp

Und was ein Hash macht, ist halt genau eine lange

Philipp

Eingabe zu nehmen, egal welche Länge

Philipp

und sie auf eine Zahl zu reduzieren,

Philipp

die eine

Philipp

relativ kurze Länge hat und die auch immer die gleiche

Philipp

Länge hat. Das sind dann halt nachher so 32

Philipp

Buchstaben oder sowas.

Philipp

Und das

Philipp

ist halt kryptografische

Philipp

Magie und

Philipp

es gibt halt Mathematiker,

Philipp

also

Philipp

haben sich darum gekümmert, dass es nicht

Philipp

möglich ist, das rückwärts zu rechnen. Das heißt, wenn ich

Philipp

ein Hash habe, kann ich nicht

Philipp

das Original berechnen und ich kann

Philipp

gegeben einen Hash, kann ich nicht

Philipp

überhaupt ein Original

Philipp

finden. Das heißt, wenn du mir dein Hash gibst,

Philipp

dann kann ich eigentlich sicher sein, dass

Philipp

die Originaldatei genau

Philipp

unverändert ist. Und genau dafür

Philipp

kann ich die halt einsetzen.

Dominik

das Rückrechnen ist dann bei unsicheren

Dominik

Hashverfahren dann vielleicht dann doch möglich

Dominik

oder sowas oder dauert dann lange

Jochen

man kann halt Kollisionen finden

Jochen

und dann kann man eben beispielsweise

Jochen

Dokumente dadurch fälschen, dass man

Jochen

wenn man hinten Leerzeichen anfügt

Jochen

oder wegnimmt, kann man ja beliebig viele Kombinationen erzeugen

Jochen

wenn man weiß, wie man die Kollisionen erzeugen kann

Jochen

dann kann man halt quasi beliebige Texte

Jochen

mit einem bestimmten Hash erzeugen und das ist natürlich ganz schlecht

Philipp

Genau, dann habe ich halt deinen Schlüssel

Philipp

und dann kann halt jemand anders einen anderen Schlüssel

Philipp

generieren und die haben plötzlich den gleichen

Philipp

Hash. Dann kann er sich mit

Dominik

seinem eigenen Schlüssel, der so tut, als wäre dein Schlüssel

Dominik

damit authentifizieren

Dominik

Also es geht um Sicherheit von Kryptografie

Dominik

oder sowas in der Hinsicht noch?

Jochen

Ja, aber ich glaube, ich weiß gar nicht, ob man

Jochen

sich als Endanwender oder so

Jochen

wahnsinnig viel mit beschäftigen muss, weil

Jochen

ich glaube, wenn man da anfängt

Jochen

sich für zu interessieren und dann irgendwelche

Jochen

Entscheidungen zu treffen, dann liegt man

Jochen

wahrscheinlich eher, ist die Wahrscheinlichkeit hoch,

Jochen

dass man falsch liegt. Also genau, dann sollte man

Dominik

quasi diese Wahl auch gar nicht mehr treffen, welche

Dominik

kryptografischen Algorithmen man zum

Dominik

Verschlüsseln, Entschlüsseln benutzt.

Dominik

Doch, also wenn du

Philipp

zum Beispiel hasht, dann muss dir der

Philipp

Python-Hashlet, musst du sagen, okay, ich möchte

Philipp

diesen Hash haben. Dann sagst du zum Beispiel, ich möchte

Philipp

SHA-1 haben oder ich möchte MD-5

Philipp

haben. Und wenn du da die falsche Wahl

Philipp

triffst, dann hast du durchaus ein Problem. Also SHA-1

Dominik

oder MD-5 sollte man nicht nehmen, sondern SHA-256

Philipp

oder? Genau, SHA-256

Philipp

oder eine SHA-3-Variante oder

Philipp

was anderes. Aber eigentlich willst du gar nicht, dass

Philipp

der Entwickler sich drum Gedanken machen soll.

Philipp

Der Entwickler soll gar nicht sagen, okay, ich nehme ShyOne,

Philipp

sondern der Entwickler soll eigentlich sagen, okay, ich nehme

Philipp

eine fertige Bibliothek. Und dafür

Philipp

gibt es dann in Python zum Beispiel die

Philipp

neue Passwortbibliothek

Philipp

oder es gibt Bcrypt.

Philipp

Und

Philipp

da muss ich mich halt gar nicht drum kümmern.

Philipp

Ich weiß gar nicht, die Passwortbibliothek heißt, glaube ich, Secret?

Philipp

Secrets. Secrets, ja, genau.

Philipp

Und da muss ich halt nicht mehr drum kümmern.

Philipp

Also da wird halt die Wahl für dich getroffen

Philipp

und das macht es für den

Philipp

Entwickler natürlich

Philipp

besser, weil der Entwickler keine Entscheidung

Philipp

treffen muss. Wenn du ein System groß

Philipp

zertifizieren musst, dann musst du wahrscheinlich trotzdem irgendwo eine Entscheidung

Philipp

treffen, weil da andere Leute drüber schauen wollen,

Philipp

aber für so die Wald- und Wiesenanwendung,

Philipp

die einfach mal so von

Philipp

vielleicht einem kleinen Team entwickelt wird, ist das

Philipp

sicherlich eine bessere Option, wenn die

Philipp

keine kryptographischen Entscheidungen treffen. Also

Philipp

nicht mal die Entscheidung treffen, welche Algorithmen

Philipp

sie verwenden, sondern vielleicht nur noch sagen,

Philipp

ich möchte ein bestimmtes Sicherheitslevel

Philipp

haben. Das ist ja auch immer ein Trade-off,

Philipp

dass ich sage, okay, ich kann ja zum Beispiel mehrfach

Philipp

hintereinander hashen und dann kann man

Philipp

das halt bei dem Passwort

Philipp

dauert es auch länger, das rauszufinden,

Philipp

weil ich halt, wenn ich

Philipp

ein Testpasswort habe,

Philipp

muss ich das ganz oft hashen, um das Zielpasswort

Philipp

zu finden. Aber das ist halt auch ein

Philipp

Problem, was auf deiner

Philipp

Seite, weil wenn du das jetzt sehr oft

Philipp

hasht, dann dauert es natürlich bei dir länger.

Philipp

Und du möchtest ja nicht, dass dein

Philipp

Service plötzlich eine Minute braucht, wenn es den

Philipp

Benutzer einloggt, weil dein Passwort irgendwie

Philipp

eine Million mal hasht oder sowas.

Jochen

Das ist übrigens auch mal so ein schönes Ding bei

Jochen

Tests, wo man halt irgendwie Zeit sparen

Jochen

kann. Und da halte ich meine,

Jochen

die Passwort-Hash-Funktionen sind ja genau die,

Jochen

sie sind ja genauso

Jochen

gestaltet, dass sie möglichst langsam sind.

Jochen

Und

Jochen

genau, da will man dann vielleicht auch mal MD5

Jochen

verwenden oder sowas in der Art,

Jochen

weil das ist halt dann deutlich schneller.

Jochen

Und man legt ja, wenn man jetzt einen Testsuite

Jochen

durchlaufen lässt, oft irgendwie ganz viele Nutzer an

Jochen

und ja,

Jochen

das kann Dinge deutlich beschleunigen.

Jochen

Ja.

Jochen

Ja.

Dominik

Sehr, sehr interessant. Also da fallen mir

Dominik

ganz viele Sachen, glaube ich, noch zu ein.

Dominik

Was man da so macht mit

Dominik

Vulnerabilities und Disclosure und

Dominik

alle so Themen. Ja, Pics

Dominik

tatsächlich. Und die Frage, wollen wir

Dominik

ein Standard-Lib-Modul

Dominik

vorstellen?

Dominik

Ich finde, jetzt vielleicht ein Siegwitz vorstellen.

Dominik

Ja, das wäre super. Kennst du dich mit Siegwitz auch

Philipp

aus? Nicht im Detail.

Philipp

Okay.

Philipp

Schade.

Philipp

Ich dachte, er hat gedacht, ich kann

Philipp

die Verantwortung von mir schieben.

Jochen

Ja, aber wenn du dich damit beschäftigt hast, dann mach das doch.

Jochen

Was, ich? Nein, nein, nein.

Jochen

Nein? Nein, nein, nein.

Jochen

Was wäre denn euer Blick?

Jochen

Ja, also meiner

Jochen

wäre jetzt

Jochen

tatsächlich YouTube.dl.

Jochen

Wie kommst du

Jochen

da drauf?

Jochen

Ja, ich habe damit in letzter Zeit, im letzten Jahr

Jochen

viel gemacht. Ich habe das so, ich habe es früher

Jochen

vielleicht ab und zu mal benutzt, um irgendwie mal Videos

Jochen

runterzuladen, die ich gerne auf der Platte hätte.

Jochen

Also genau dafür ist es ja da.

Jochen

Aber im letzten

Jochen

Jahr habe ich das auch viel

Jochen

sozusagen in Projekten

Jochen

verwendet, weil es darum ging,

Jochen

wie man da Videos irgendwie automatisch verarbeiten

Jochen

kann und so.

Jochen

Ja, und

Jochen

es ist ein sehr, sehr schönes Tool.

Jochen

Aber ich glaube, Philipp kann das deutlich

Jochen

besser erklären, was das eigentlich so tut und was so

Jochen

ein bisschen...

Dominik

Es gab auch so einen kleinen politischen Vorfall beim YouTube.

Dominik

Dann müssen wir auch noch natürlich erzählen.

Philipp

Also der Name von YouTube.de

Philipp

ist stark irreführend.

Philipp

Also es hat angefangen

Philipp

als ein Download-Tool nur für YouTube

Philipp

und als ich das damals

Philipp

übernommen habe, da

Philipp

wurden glaube ich noch Vimeo unterstützt

Philipp

und noch ein, zwei andere Seiten, aber als ich

Philipp

das abgegeben habe, also mittlerweile

Philipp

entwickle ich auch schon länger nicht mehr daran,

Philipp

oder entwickle schon ein bisschen dran, aber bin halt nicht mehr

Philipp

der Chef-Maintainer

Philipp

oder überhaupt ein Maintainer und

Philipp

mittlerweile unterstützt es über tausend Dienste, das heißt

Philipp

du kannst es auch auf irgendeine komische Anime-Seite

Philipp

laufen lassen oder auf die ARD-Audiothek

Philipp

oder auf

Philipp

archive.org

Philipp

oder die CCC-Kongress-Seite

Philipp

und es wird dir halt immer ein ordentliches

Philipp

Video zurückliefern, du kannst

Philipp

natürlich auch sagen, ich möchte verschiedene

Philipp

Konfigurationen, also möchtest du das Video

Philipp

sortieren oder möchtest du direkt eine Playlist runterladen

Philipp

und YouTube-Date ist komplett in Python

Philipp

geschrieben, das ist vielleicht auch ein bisschen besonders, weil

Philipp

es eine Python-Anwendung ist,

Philipp

die gar keine Dependencies hat.

Philipp

YouTube.dl verlangt nur die Standard-Diplotek

Philipp

und das auch sehr, sehr, sehr flexibel.

Philipp

Also bis vor kurzem noch konnten wir zwischen Python 2.6,

Philipp

ging noch bis Python 3.8, wurde alles unterstützt.

Philipp

Hat sehr, sehr viele Benutzer.

Philipp

Und ja, ist halt hoffentlich ein super flexibles Tool,

Philipp

das man auch sowohl programmatisch

Philipp

als auch als Kommando-Zeitanwendung verwenden kann,

Philipp

um schnell was runterzuladen.

Philipp

Viele grafische oder serverseitige Programme

Philipp

verwenden auch intern YouTube.dl

Philipp

um halt Videos runterzuladen

Philipp

aus verschiedensten Quellen. Typischerweise

Philipp

also oft YouTube, aber kann auch was ganz anderes

Philipp

sein. Und der

Philipp

Vorfall, der halt passiert war, ist

Philipp

also vor dem öffentlichen Vorfall

Philipp

bin ich und ein Hoster

Philipp

angeschrieben worden von einer deutschen Anwaltskanzlei

Philipp

die Rush heißt die

Philipp

die sind, wenn man nach denen googelt, dann

Philipp

also ich hab zuerst natürlich nach denen gegoogelt

Philipp

als ich das Schreiben bekommen hab, sieht man okay

Philipp

die schicken normalerweise Abnahmen wegen

Philipp

Tauschbörsenvorfällen oder sowas.

Philipp

Irgendwie bekannt für den Namen, ja.

Philipp

Und die haben halt da typischen, also ich kann das jetzt nicht so beurteilen, ich bin kein Jurist, aber die haben ein sehr langes Papier geschrieben, wo sehr große Drohungen drin standen, was für mich eigentlich jetzt irrelevant ist, weil ich bin ja nicht mehr in ein Projekt involviert.

Philipp

auch schon, also ich habe noch gelegentlich

Philipp

Contributions geleistet, aber auch nichts mehr zu

Philipp

YouTube, sondern nur noch zu ganz anderen

Philipp

Seiten. Und dann

Philipp

haben die wohl aber mitbekommen, dass

Philipp

YouTube.dl auf GitHub gehostet ist.

Philipp

Und dann an die

Philipp

amerikanischen, ja, so richtig technisch

Philipp

drauf waren sie nicht, aber gut, sind auch

Philipp

recht anwesend, sind keine Programmierer, haben halt

Philipp

nur so ein bisschen was gefunden und haben auch viele Sachen

Philipp

nicht richtig verstanden. Also

Philipp

das ist halt,

Philipp

ja, kann man ja nicht machen.

Philipp

Und dann sind sie halt

Philipp

zu den Amerikanern gegangen

Philipp

und die RIAA

Philipp

und die hat dann halt

Philipp

GitHub eine Notiz geschickt,

Philipp

eine

Philipp

DMCA-Notiz,

Philipp

dass sie halt

Philipp

die YouTube-DA

Philipp

sperren sollen. Und davon haben die meisten Leute

Philipp

erst mitbekommen, dass irgendwas nicht stimmt.

Philipp

Also diese Vorgeschichte, das war schon Wochen davor in Deutschland

Philipp

und auch andere Sachen waren

Philipp

Wochen davor, aber was die Öffentlichkeit mitbekommen hat,

Philipp

war okay, GitHub ist gesperrt.

Philipp

Und GitHub ist freundlicherweise

Philipp

für das YouTube-2L-Projekt, das hostet die Downloads.

Philipp

Das YouTube-2L

Philipp

muss relativ häufig aktualisiert werden.

Philipp

Also wird so alle 2-3 Tage

Philipp

aktualisiert. Klar, bei irgendeiner Webseite ändert

Philipp

immer was oder irgendjemand fügt etwas hinzu.

Philipp

Und es ist halt auch ein sehr, sehr aktives Open-Source-Projekt.

Philipp

Also da laufen pro Tag

Philipp

10 PRs rein.

Philipp

dadurch

Philipp

stehen halt große, hohe Download-Zahlen und dann ging halt

Philipp

erstmal gar nichts, weil GitHub das nicht gemacht hat.

Philipp

Das Projekt ist direkt umgeschwenkt und ich hatte

Philipp

schon befürchtet, dass es daran endet,

Philipp

dass das Projekt nur noch YouTube-Musik runterladen kann.

Philipp

Also der Stein des Anstoßes waren nicht die normalen YouTube-Downloads,

Philipp

sondern die YouTube-Musik-Videos.

Philipp

Das war das Problem, was die Rechtsanwälte bemängelt hatten.

Philipp

Und was jetzt aber passiert ist,

Philipp

dass glücklicherweise die EFF, die Electronic Frontier Foundation,

Philipp

in den USA die Verteidigung übernommen hat von YouTube.dl

Philipp

und da eine Gegennotiz geschickt hat.

Philipp

Und jetzt auf GitHub wieder alles da ist und GitHub das wieder hostet.

Philipp

Und das Projekt wahrscheinlich jetzt ganz normal weiterläuft und alles wieder klappt.

Philipp

Ich war da auch gar nicht so viel involviert.

Philipp

Ich bin halt nur von zig Leuten angeschrieben worden, habe einige Interviews gegeben.

Philipp

Und ich bin halt natürlich rechtlich, habe ich mit einem Rechtsanwalt gesprochen.

Philipp

Damals hatte ich da nicht den richtigen Überblick.

Philipp

Habe dann auch eine Unterlassungserklärung abgegeben, dass ich nicht mehr daran teilnehme an YouTube.de.

Philipp

Sehr traurig.

Philipp

Aber das Projekt sieht jetzt gut aus

Philipp

und scheint überhaupt kein Problem zu sein.

Philipp

Und ich bin sehr froh, dass die EFS sich darum gekümmert hat.

Philipp

Und auch über die Unterstützung von GitHub.

Philipp

Und zuletzt sollte man vielleicht auch erwähnen,

Philipp

es gibt einen deutschen Hoster, der daran beteiligt ist.

Philipp

Das ist Uberspace.

Philipp

Da kann man super leicht seinen eigenen Dienst hosten.

Philipp

Und die sind auch rechtlich angeschrieben worden,

Philipp

auch von den Rechtsanwälten rasch.

Philipp

Und die haben sich auf eigene Kosten,

Philipp

die ihre eigene Verteidigung organisiert.

Philipp

Die hosten halt nur die Webseite.

Philipp

die hostet nicht das Programm selber,

Philipp

aber auch das fand die Rechtsanwälte verwerflich.

Philipp

Glücklicherweise ist jetzt, glaube ich, alles gut

Philipp

und ich glaube, YouTube.de wird es genutzt.

Philipp

Ich glaube, völlig unbestritten,

Philipp

dass es absolut legitim ist.

Philipp

Es haben sich nach der Sperrung

Philipp

auch sehr, sehr viele Museen

Philipp

oder Archivare oder Bibliotheken gemeldet,

Philipp

die gesagt haben, okay, wir verwenden das

Philipp

und wir haben sogar rechtlich das Anrecht darauf,

Philipp

selbst Musikvideos runterzuladen,

Philipp

weil das genau steht

Philipp

und irgendwie muss es halt passieren

Philipp

und YouTube-DL ist genau das Werkzeug, um sowas zu machen.

Philipp

Und ich glaube, der Nutzen von YouTube-DL überwiegt bei Weitem

Philipp

das jegliche Probleme, dass man da ein Musikvideo

Philipp

in meiner Weise relativ schlechter Qualität von YouTube runterladen kann,

Philipp

was man ja auf Spotify oder überall bei Amazon oder bei Apple

Philipp

als MP3-Datei oder als Flak-Datei in deutlich besserer Qualität kaufen kann.

Philipp

Ich glaube, das ist viel besser für die Gesellschaft,

Philipp

dass YouTube.dl für alle verfügbar ist.

Dominik

Aber als deutscher spitzfindiger Winkeladvokat,

Dominik

da kann man sich ja noch mal überlegen,

Dominik

ob man nicht noch einen kleinen Pfeilstrick herbeizaubern kann.

Dominik

Ja.

Dominik

Ja.

Jochen

Aber ja, ich glaube auch eher,

Jochen

das hat dem Projekt wahrscheinlich doch eher stark genützt.

Jochen

Das hat jetzt noch mal sehr viel Aufmerksamkeit bekommen

Jochen

und hat der Streisand-Effekt voll zugeschlagen.

Jochen

Ja, auf jeden Fall.

Dominik

Also ich bin tatsächlich froh, dass es mittlerweile so weit ist,

Dominik

dass solche Sachen nicht mehr einfach so dann weggeblockt werden,

Dominik

sondern dass die Leute sich anfangen,

Dominik

mit solchen Dingen auch juristisch dann auszukennen

Dominik

und dass diese komischen Kanzleien

Dominik

oder wie man ja auch immer das dann nennen soll,

Dominik

langsam aber sicher gegen die Wände rennen.

Philipp

Ja, ist halt schwierig als Open-Source-Programmierer.

Philipp

Ich bin halt nur eine Person.

Philipp

Ich habe keine große juristische Know-how.

Philipp

Also ich kann das halt technisch beurteilen,

Philipp

was im Gesetz steht.

Philipp

Aber offensichtlich gibt es auch einige Gerichte,

Philipp

die das sehr flexibel ausgelegt haben,

Philipp

was da im Gesetz steht.

Philipp

Also das Landgericht Hamburg hat gesagt, okay, im Wesentlichen, da steht, dass es technisch eine technisch durchsetzbare Verschlüsselung oder Verschleierung geben muss und das haben sie einfach interpretiert als, ja, das hört sich aber komisch an, das interpretieren wir jetzt anders und jetzt haben sie es gesagt in dem Urteil, eigentlich alles, was ein normaler Benutzer nicht machen kann, ist verboten.

Philipp

Das heißt, es gab ein vergleichbares Urteil und da hat ja jemand argumentiert, okay, das kann man aber auch in den Browser-Tools machen und dann hat das Landgericht Hamburg gesagt, nee, das kann aber ein normaler Benutzer nicht, weil das ist nicht im Internet Explorer drin oder so. Und das ist halt eine sehr fragwürdige Argumentation.

Dominik

Ja, da hat der Jurist das dann selber ausprobiert

Dominik

und dann festgestellt, nee, er kann das nicht.

Dominik

Ja, genau, genau, exakt.

Philipp

Und YouTube-DLS funktioniert eigentlich

Philipp

wie ein normaler Browser.

Philipp

Nicht grundsätzlich unterschiedlich wie Chrome.

Philipp

Es hat auch eine eigene JavaScript-Engine in Python geschrieben.

Philipp

Ach, äh,

Jochen

ah, okay, das und tatsächlich

Jochen

die ist selber, aha, naja, stimmt,

Jochen

wenn es keine externen Abhängigkeiten gibt.

Jochen

Oh, das wusste ich nicht, das hätte ich jetzt auch gedacht,

Jochen

dass das vielleicht irgendein Headless-Browser-Engine

Jochen

noch mit dabei ist oder so, nee, komplett, wow.

Jochen

Also gar keine Python-Abhängigkeiten.

Philipp

Klar, wenn ich jetzt normale Python-Anwendungen schreibe,

Philipp

dann verwende ich Abhängigkeiten.

Philipp

Wir haben ja eben gerade besprochen,

Philipp

dass es eigentlich gut ist, wenn ich fertige Bibliotheken verwende.

Philipp

Aber YouTube.jl muss halt auf ganz unterschiedlichen Systemen laufen.

Philipp

Da gibt es halt Leute, die kommen an mit Red Hat

Philipp

und haben halt Python 2.6 oder bis vor kurzem noch Python,

Philipp

oder vor allem jetzt halt noch Python 2.5 haben die noch drauf

Philipp

oder Python 2.4, keine Ahnung.

Philipp

Und da kannst du halt nicht darauf vertrauen,

Philipp

dass die auch überhaupt irgendwas installieren können.

Philipp

Die sind halt froh, wenn die ein Binary bekommen.

Philipp

Und das geht ja in Python relativ gut, man kann die Datei ja einfach als ZIP verpacken und dann ist es ausführbar und man kann das auch mit, ich glaube, mittlerweile verwendet YouTube.jl CX Freeze, um halt auch eine Excel für Windows zu erzeugen und das läuft dann wirklich überall, ohne dass man es installieren muss.

Philipp

Und ich glaube, das ist auch ein Grund für den Erfolg dieser Software, dass man das halt einfach so laufen lassen kann, dass man sich keine Gedanken machen muss, auch wenn das System komplett zerschlossen ist als Python-Entwickler, das klappt immer. YouTube.jl, klar, braucht ungesunde Politik.

Philipp

Sehr gut, sehr gut

Philipp

Ja, das klingt sehr spannend

Philipp

Ja, ja

Jochen

Mir war das auch gar nicht so klar, dass man da tatsächlich

Jochen

irgendwie die meisten Seiten mit

Jochen

bedienen kann und dann

Jochen

ja, ich hatte

Jochen

früher auch immer gedacht, das wäre eigentlich für YouTube

Jochen

aber ja, es ist wirklich

Jochen

sehr, sehr praktisch, es nimmt einem auch viel ab

Jochen

Ich benutze das jetzt halt immer so

Jochen

quasi

Jochen

um halt automatisiert von allen

Jochen

möglichen Seiten Dinge runterzuladen und das

Jochen

halt sozusagen die Schnittstelle, die

Jochen

YouTube-DL ist sozusagen meine API zu

Jochen

Seiten, die Videos haben,

Jochen

um das Video da rauszukriegen.

Jochen

Genau, ohne...

Jochen

Ja, Pics.

Dominik

Also ich würde dieses Mal gleich Python Date

Dominik

Util picken, weil irgendwie das ein schöner

Dominik

Rapper ist, über wie man

Dominik

Datumsangaben irgendwie machen kann.

Dominik

Verschiedene Zeitkalendern mit Deltas

Dominik

irgendwie. Ich wollte es nur mal erwähnt haben,

Dominik

das stand irgendwo noch auf meiner Liste, hat jetzt nicht den Topic

Dominik

gar nichts mehr so viel zu tun.

Dominik

Ja, Datutals

Jochen

ist tatsächlich auch sehr nett.

Jochen

Das Datutal-Pass,

Jochen

das passt erstaunlich viel.

Jochen

Also dem kann man irgendwelche Strings geben,

Jochen

also man hat ja oft irgendwie, sieht man dann irgendwo

Jochen

so einen String mit Datums

Jochen

und Zeitangaben drin und dann denkt man sich,

Jochen

oh, wie waren

Jochen

jetzt nochmal die Format-String-Dinger,

Jochen

wie hießen die nochmal alle?

Jochen

Und dann nimmt man Datutal-Pass

Jochen

und dann passt das automatisch,

Jochen

aber dann muss man irgendwie noch, ich glaube, das geht

Jochen

aber auch irgendwie, man kriegt auch aus dem

Jochen

Datutel-Pass dann raus, wie der Format-String

Jochen

eigentlich sein müsste.

Jochen

Und andere Kalender.

Jochen

Weil Datutel-Pass sollte man nicht

Jochen

über größere Datenmengen

Jochen

aufrufen, weil das wird dann halt sehr langsam,

Jochen

wenn man das Inhaltschleife verwendet, aber

Jochen

um rauszukriegen, wie man das denn jetzt eigentlich

Jochen

aufpasst und dann halt an den Format-String zu kommen,

Jochen

den man dann letztlich verwendet

Jochen

für Striptime oder so,

Jochen

das ist super.

Jochen

Und dein Pick-Up?

Jochen

Hatte ich doch schon.

Jochen

scheuen? Ja, YouTube.dl. Ach, verdammt.

Jochen

Ja, richtig. Ich dachte jetzt, das ist der Philips-Pick gewesen.

Jochen

Na gut. Du bist da

Jochen

ausnahmsweise wegen dem YouTube.dl

Dominik

da rumgekommen. Es sei denn, du hast noch einen.

Dominik

Extra.

Dominik

Ne, das habe ich jetzt nicht vorbereitet.

Dominik

Ich habe mich bei dem Secrets

Dominik

sehe ich gerade völlig vertauscht.

Philipp

Das ist gar nicht die Bibliothek, die eine

Philipp

die eine fertige Algorithmus nimmt,

Philipp

sondern die generiert dir erstmal nur den Zufall

Philipp

darunter und generiert

Philipp

erstmal nur zufällige Werte.

Philipp

Die richtige Bibliothek, um halt Passwörter zu herstellen, wäre

Philipp

sowas wie B-Crypt.

Dominik

Da haben wir das auch noch reingekriegt.

Dominik

Ja, schön,

Dominik

dass ihr alle dabei seid. Danke, Philipp, dass du Zeit gefunden hast

Dominik

für uns. Ja, voll gut.

Dominik

Eine sehr interessante Episode.

Dominik

Ja, auch für mich sehr interessant.

Dominik

Ja, vielen Dank,

Dominik

dass ich dabei sein durfte.

Philipp

Wenn ich noch einmal ganz kurz Werbung

Philipp

machen darf, bei Coxine suchen wir immer

Philipp

Python-Entwickler.

Philipp

Aktuell suchen wir auf jeden Fall

Philipp

Python-Entwickler oder auch Leute, die mit

Philipp

Java oder mit JavaScript arbeiten,

Philipp

speziell mit React.

Philipp

Also wenn ihr ein guter Entwickler seid,

Philipp

vielleicht sogar im Raum Düsseldorf oder

Philipp

auch nur ganz grob in NRW irgendwo,

Philipp

dann meldet euch bei Baboxine.

Philipp

Die Tonybox zu programmieren

Philipp

macht wirklich, die Dienste

Philipp

rund um die Tonybox zu programmieren, macht sehr

Philipp

viel Spaß. Es ist total toll zu wissen,

Philipp

okay, jede Nacht

Philipp

gehen

Philipp

Tausende oder Millionen Kinder

Philipp

mittlerweile mit der Tonybox ins Schlaf und

Philipp

wir machen gute Dienste, die

Philipp

die hoffentlich den Eltern

Philipp

das Leben einfach machen und

Philipp

dafür sorgen, dass die Kinder gute Geschichten hören.

Philipp

Das war die erste Werbeanzeige

Philipp

im Preißen-Podcast.

Jochen

Ja, aber ich kann nicht nur...

Jochen

Könnt ihr rausschneiden, falls...

Jochen

Nein, nein, nein, das finde ich super.

Dominik

Das ist ein schönes Projekt

Dominik

hier aus der Gegend.

Dominik

Ja, alles klar,

Dominik

dann würde ich sagen... Ja, vielen Dank, Philipp.

Dominik

Und bleibt uns gewogen.

Dominik

Egal, wann ihr uns hört, schaltet wieder ein.

Dominik

Morgens, mittags, abends, tags, nachts.

Dominik

einschlafen, das ist auch immer super.

Dominik

Ja, liebe Grüße und bis zum nächsten Mal.

Dominik

Jo. Ja, tschüss.