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ß sie einfach

Philipp

Security. 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 das leichteste, das ist die unterste Ebene, auf der wir jetzt anfangen.

Dominik

Ich finde das aber sehr spannend, weil was du sagtest, 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, 1945, als sie rausgekommen ist.

Dominik

Und diese Harvard-Architektur, die daneben liegt, die macht halt diese Getrennung von Daten und Programmspeicher.

Dominik

Und du sagst jetzt, es gibt auf dem CPU, also der CPU benutzt für alle Menschen, die da vielleicht nicht so drin sind,

Dominik

Opcodes, ja, 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,

Dominik

Decks? Nein, Registern.

Dominik

Macht der dann diese Operation

Dominik

und

Dominik

da kann was schief gehen.

Dominik

Philipp, vielleicht kannst du das noch ein bisschen

Dominik

erklären, weil das irgendwie, klingt das sehr spannend.

Philipp

Ja, weil

Philipp

wenn ich einen ganz klassischen Buffer-Overflow habe,

Philipp

was dann halt passiert ist, wie gesagt, der Benutzer,

Philipp

der Benutzer in Anführungszeichen

Philipp

oder in Wirklichkeit ist das der Angreifer,

Philipp

gibt halt irgendwie eine längere Datenfolge

Philipp

an. Und wie wir eben schon erwähnt haben,

Philipp

da könnten dann zum Beispiel verschiedene Instruktionen

Philipp

wie Knob-Codes drin

Philipp

vorkommen. Und

Philipp

das sieht aus wie ein normaler Text,

Philipp

aber das ist halt genauso

Philipp

designt, dass man das auch

Philipp

als Ob-Codes für die CPU interpretieren kann.

Philipp

Und genau das ist das Problem dann

Philipp

nachher, dass der Entwickler dachte,

Philipp

okay, da kommt einfach nur Text rein, aber in Wirklichkeit

Philipp

hat der Angreifer den Text so geschickt

Philipp

konstruiert, dass er ein gültiges Programm ist.

Christian

Und es ist sozusagen,

Christian

wir können

Christian

für die CPU, weil das konkret zu machen

Christian

ist häufig sehr schwer so im Luftlernraum,

Christian

aber weswegen ich schnell

Christian

zur Neumann-Architektur gegangen bin, ist

Christian

das Problem ist ein

Christian

ganz grundsätzliches Architekturproblem

Christian

und die Features,

Christian

die wir jetzt da oben drüberlegen, wie zum Beispiel

Christian

Non-Executable Pages und so ein Kram

Christian

oder was dann halt auf

Christian

anderen Ebenen kommt,

Christian

Address Randomization und so ein Zeug.

Christian

Das sind alles bloß kleine Trostplaster

Christian

und man macht es den Angreifern schwerer

Christian

und teilweise auch um Größenordnungen schwerer,

Christian

dagegen anzukommen.

Christian

Aber das Restrisiko kann in der Architektur halt nie weggehen.

Christian

Sie wird nie weggehen.

Christian

Und die Effekte, die wir aber sehen,

Christian

lassen sich auf anderen Ebenen genauso wieder erklären.

Christian

Und ein Buffer-Overflow lässt sich gut vergleichen

Christian

und das ist für viele Leute wieder einfacher vorstellbar,

Christian

wie mit einer SQL Injection.

Christian

Das ist genau das Gleiche.

Christian

Eine 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

Christian

so, 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

Christian

als Text aus. Der Name ist

Christian

Text 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 in Buffer-Overflow im Prinzip nichts anderes.

Dominik

Also das Glas Milch, das zu voll ist

Dominik

und dann tropft das auf die Erde

Dominik

und dann hat man alles nass und denkt sich,

Dominik

oh nein.

Dominik

Ja, genau.

Christian

Buffer-Overflow ist sozusagen die Variante von

Christian

das Glas ist zu voll

Christian

und auch Python schützt einen vor sowas

Christian

im Prinzip erstmal nur im Sinne von,

Christian

ja Python selber gibt sich extrem viel Mühe,

Christian

selber keinen Mist zu machen.

Christian

Wenn du aber,

Christian

und ich habe mit sowas halt selber auch,

Christian

also ich sage immer,

Christian

ich fasse C nur dann an,

Christian

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,

Christian

nicht jeder Buffer-Overflow ist gleich halt als Security-Problem ausnutzbar.

Christian

Bevor ich halt sozusagen selber Code ausführen kann,

Christian

kommen noch andere Fehlerklassen oder Effekte vorher.

Christian

Typischerweise ist das dann erstmal ein Denial of Service.

Christian

Also zum Beispiel, dass halt das Programm crasht.

Christian

Das ist erstmal noch nicht so dramatisch.

Christian

Das ist natürlich auch aus dem Thema Availability

Christian

als eine der vier Sicherheitsperspektiven.

Christian

Nur die Recovery ist halt einfacher typischerweise.

Christian

Bei einem 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 Leuten verwendet werden, haben ein Minuszeichen drin.

Christian

ISO 88591 oder 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 in Postgres auch okay, der hat die ganzen Encoding-Namen auch immer noch mit ohne Minus rumliegen.

Christian

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 und 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 ist der Pointer auf die nächste Arena.

Christian

Und der landet dann halt im Nirvana und dann gibt es halt einen Zeg-Fault 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, 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, 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 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 irgend so eine 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, haben wir das sozusagen

Christian

nicht getrennt. Ich finde das eigentlich so

Christian

ein schönes Beispiel, dass

Christian

Konzepte

Christian

mit extra Begriffen in anderen

Christian

Sprachen einem nochmal einen neuen Blick liefern,

Christian

dass Sicherheit im Englischen halt mit

Christian

Security und mit Safety übersetzt

Christian

werden kann. Und Safety ist halt die

Christian

auf Menschenleben und körperliche Unversehrtheit

Christian

bezogene Perspektive

Christian

von Sicherheit. Und Security ist

Christian

halt die Frage, ob das Fahrrad noch da ist.

Philipp

Aber kannst du das denn in der modernen Gesellschaft

Philipp

wirklich auseinanderhalten?

Philipp

Ja, das ist halt sozusagen genau das Thema, dass man

Christian

das, und damit

Christian

machen wir jetzt einen schönen nächsten Bogen,

Christian

dass Security extrem kontextspezifisch ist.

Dominik

Also ich stelle mir gerade die Gesichtsbemalung vor,

Dominik

die dazu führt, dass die Kamera den Algorithmus verändert

Dominik

und ein anderes Gesicht immer in die Daten erkennen lässt.

Dominik

Und dann kann ich mich tarnen mit einer gewissen Schminke

Dominik

und als jemand anderes ausgeben.

Dominik

Weil der Algorithmus dadurch denkt, ich bin jemand anderes,

Dominik

weil ich einen anderen Gesichtshash bekomme oder so.

Christian

Das ist so spannend in dem ganzen Machine Learning Umfeld,

Christian

dass du diese adversarial Models hast,

Christian

dass du sozusagen auf der einen Seite ein Model haben kannst,

Christian

was Dinge erkennt und jemand anders weiß aber,

Christian

wie er auf Basis eines Models Outputs generiert,

Christian

die dieses Model dann wieder aus dem Takt bringen.

Dominik

Ja, nur für seinen Social Score oder sowas kann man den dann hochhalten,

Dominik

obwohl man andere Sachen ...

Christian

Die Ecke von Philipp fand ich jetzt nochmal wichtig und spannend,

Christian

dass halt dieses Thema, ah, hier passiert ja nichts Schlimmes,

Christian

das Interessante ist eben, durch dieses Architekturproblem

Christian

trifft es halt alle und jeden.

Christian

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.

Christian

Er wird irgendwo benutzt werden und er wird für Dinge benutzt werden, die man sich nicht vorgestellt hat.

Christian

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

Ah ja, 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,

Christian

wo sie sagen, da steckt einfach nur meine Lust und meine persönliche Motivation drin.

Christian

anderen Garantien auszusprechen,

Christian

dass 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 meine, 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.

Christian

Nein.

Christian

Zu viele 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 Sicherheit

Christian

investieren.

Christian

Deswegen ist Siemens mit der

Christian

Atomkraftwerkstatt 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

Christian

am 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 schnell eine HTTP-Library und ich würde ja noch mal von der SSL, noch mal da drüben, Repository von GitHub, sowas ist bei aller halt eher nicht so an der Tagesordnung.

Christian

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, ja, das, 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, ähm, und da muss man immer aufpassen, dass es halt kontextbezogen ist.

Christian

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

Jochen

oder so und die ist sogar

Jochen

bewiesen, dass die tatsächlich

Jochen

das tut, was in der Spezifikation steht.

Jochen

Nur das Problem

Jochen

ist halt, sie haben irgendwie die falsche Spezifikation

Jochen

verwendet.

Jochen

Das war Bind.

Jochen

Die Spezifikation war halt für die alten Motoren

Jochen

irgendwie und dann

Jochen

waren die Sensordaten

Jochen

für den Computer halt

Jochen

irgendwie so, nee, das kann nicht sein.

Jochen

Aber es ist ja bewiesen,

Jochen

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

Jochen

ist ja auch sowas. Ich meine, klar, man kann halt

Jochen

beweisen manchmal, dass Programme das tun, was sie tun

Jochen

sollen, aber dann muss man ja immer noch sicher

Jochen

sein können, dass die Spezifikation

Jochen

richtig ist. Aber irgendwie, man kommt

Jochen

da in so einen infiniten Regress und

Jochen

selbst das hilft einem nicht.

Dominik

Das war jetzt ein Fall, wo ein Hardware-Update

Dominik

dazu geführt hat, dass das Ding nicht mehr lief.

Dominik

Also keine Updates fahren, never touch a running system.

Philipp

Aber auch in Python

Philipp

hat man ja nicht völlig verloren. Also auch wenn

Philipp

Python solche strengen Garantien nicht so direkt

Philipp

hat, man kann natürlich Assertions einbauen

Philipp

und damit kann man so ein bisschen

Philipp

in die Richtung gehen, was ADA auch kann.

Philipp

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

Philipp

ich erwarte, dass die Eingabe nur so lang ist

Philipp

oder ich erwarte, wie du eben als Beispiel gebracht hast,

Philipp

Christian, dass halt nur irgendwelche bestimmten Zahlen

Philipp

davor kommen, das kann ich auch in Python machen.

Philipp

Das geht, das macht den Code ein bisschen

Philipp

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

Philipp

aber das ist ja sicherlich auch ein

Philipp

Merkmal von qualitativen

Philipp

Code, dass man sich halt immer Gedanken macht, okay,

Philipp

was sind meine Eingangsbedingungen, was sind

Philipp

meine Bedingungen, die ich vielleicht

Philipp

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

Philipp

rausgebe, die kann ich in ein anderes

Philipp

Modul in meinem Programm, die kann ich auch nochmal validieren,

Philipp

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 und es gibt

Philipp

natürlich auch in Python noch sehr viele andere Sachen

Philipp

im Rahmen eines sicheren Prozesses, die ich

Philipp

durchführen kann. Also das beginnt ja bei ganz

Philipp

normalem Code-Review.

Philipp

Da guckt halt jemand anders drauf und sagt halt vielleicht,

Philipp

okay, der Code sieht komisch aus.

Philipp

Und dann kann ich halt sowohl Tests durchführen

Philipp

gegen den Source-Code, also dass ich

Philipp

mir den gesamten Source-Code nehme

Philipp

und ein automatisiertes Programm drüber laufen lasse,

Philipp

das mir halt sagt, okay, die Stelle sieht komisch aus.

Philipp

Hier machst du wahrscheinlich eine SQL-Injection

Philipp

oder NC, ein Buffer-Overflow, das sieht

Philipp

irgendwie gefährlich aus.

Philipp

Und dann kann ich natürlich auch sogenannte Blackbox-Tests

Philipp

fahren, wo ich sage, okay, ich starte meine Anwendung

Philipp

einfach mal und dann nehme ich mal so einen

Philipp

Hackertool und das probiert einfach mal aus.

Philipp

Kann ich hier komische Sachen eingeben und

Philipp

crashen in das Programm oder macht das Programm

Philipp

irgendwas komisches. Also auch in Python ist das

Philipp

nicht verloren. Da kann man

Philipp

auch sehr sichere Anwendungen schreiben,

Philipp

was meistens das gleiche ist wie eine gute

Philipp

Anwendung zu schreiben, weil die stürzt halt nicht ab

Philipp

und die kann auch mit allen Benutzerangaben

Philipp

umgehen. Und nicht mal nur von Angreifern,

Philipp

sondern auch von Benutzern. Also ich hatte das beruflich

Philipp

auch so. Wir haben, wir dachten

Philipp

erst, wir hätten einen Angreifer, weil unsere

Philipp

Anwendung abgestürzt ist, aber hat sich herausgestellt,

Philipp

wir hatten ein ähnliches Problem wie beim

Philipp

Buffer-Overflow, wir hatten ein Datenbankfeld mit einer bestimmten Länge

Philipp

und die Länge war aber

Philipp

in Bytes und dann kamen halt User an

Philipp

und haben ihre kleine Tony-Figur

Philipp

mit ganz viel Smileys genannt

Philipp

und dann passte das nachher nicht

Philipp

und

Philipp

führte zu einem Crash und auch sowas

Philipp

kann man natürlich auch vorher darauf achten und

Philipp

entsprechend auch

Philipp

testen, das ist ja noch ein anderer

Philipp

Bestandteil eines sicheren Prozesses,

Philipp

der jetzt sagen kann, ich schreibe

Philipp

vorher Tests und ich überlege mir entweder

Philipp

manuell oder sogar automatisiert, wie

Philipp

sehen komische Eingaben aus. Bei Nummern

Philipp

sind das meistens Null oder

Philipp

sehr kleine Zahlen oder sehr große Zahlen.

Philipp

Typischerweise

Philipp

auch Zahlen, die vielleicht über

Philipp

die 32 Bytes hinausgehen, was

Philipp

in Python jetzt nicht so ein Problem ist oder

Philipp

über die 64 Bits

Philipp

hinausgehen. Also wenn

Philipp

ich da eine sehr große Zahl, wenn ich 2 hoch 64

Philipp

plus 1 schreibe, dann in Python gar kein Problem.

Philipp

Aber in vielen anderen Programmiersprachen

Philipp

führt das halt zu einem

Philipp

Absturz oder zu komischem Verhalten.

Philipp

Und damit kann ich auch

Philipp

in Python, glaube ich, sehr gut Sicherheit

Philipp

sichern. Also du würdest

Dominik

tatsächlich in solchen kritischen Fällen, wo du

Dominik

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

Dominik

Assertment-Statements in den Code schreiben einfach

Dominik

und dann sagen, Assert, this should never happen

Dominik

oder sowas. 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? Und jetzt gucken wir mal, wie mappen wir das alles aufeinander? Wie sind deine Assets mit was geschützt gegenüber welchen Angriffsszenarien?

Christian

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.

Christian

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.

Christian

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 jetzt mal an, was du so in Python oder auch in anderen Programmiersprachen alles programmiert hast.

Philipp

Und das sind dann erfahrene Entwickler in 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 Benutzernamen 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

Also 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, 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 und deswegen würde ich halt es immer, also aus meiner dann längerfristigen Erfahrung, würde ich halt sagen, es kommt immer auf den Kontext drauf an, 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 knall ich da jetzt eine Waffe davor, weil ansonsten traue ich mich nicht, das ins Netz rauszulassen. Du sagst mir, es muss raus ins Netz.

Philipp

Das ist das gleiche Prinzip wie ein Virenscanner, also da habe ich irgendwie ein Muster, das ich suche, bei einer Basis, und sage, okay, wenn ich das Muster finde, dann mache ich irgendwas, dann unterbinde ich die Anfrage, oder schmeiße das Muster raus, oder mache irgendwas.

Philipp

Genau, das ist schon ein bisschen gefährlich, weil eine Möglichkeit ist halt schon, wie bei einem Virenscanner, die Wald- und Wiesenattacken findet der sicherlich, was im Internet das Grundrauschen ist, das findet er auf jeden Fall.

Philipp

Aber wenn dann wirklich jemand deine Firma angreifen will,

Philipp

dann merkst du dich da vielleicht auch in falscher Sicherheit.

Philipp

Weil man halt dann doch immer...

Philipp

Also du hast recht mit dem Schweizer Käse-Modell,

Philipp

das macht es vielleicht ein bisschen besser.

Philipp

Aber gleichzeitig kann ja so ein Waff auch wieder ein Angriffsmodell sein,

Philipp

weil der muss ja auch wieder alles interpretieren.

Philipp

Und ein Problem kann halt sein, dass mein Server davor und mein Server danach

Philipp

sowieso schon unterschiedliche Details anders interpretieren.

Philipp

Also bei HTTP zum Beispiel Junk Encoding

Philipp

oder irgendwelche komischen HTTPS-Optionen anders interpretieren.

Philipp

Und dass dann die Waff sogar noch ein neues Problem aufmacht,

Philipp

dass sie die 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

Christian

drüber gießen, sondern das ist halt, wir haben

Christian

halt dann Kunden, wo feststellen, also

Christian

die Waffe ist für uns mehr oder weniger

Christian

dann 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,

Christian

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

Christian

wenn er 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 mal

Christian

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 Performance-Probleme

Christian

gerät. Und

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

Sequel-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

aus Komplexitätsperspektive

Christian

hast du immer das Problem der

Christian

Kombinatorik. Das heißt, wenn du

Christian

n Dinge hast, die miteinander reden,

Christian

dann hast du halt n Quadrat Verbindungen

Christian

mindestens. Und

Christian

wenn du jetzt sagst, okay, das ist mir

Christian

zu unsicher, ich packe noch eins davor.

Christian

Dann hast du halt

Dominik

etwas als Quadrat.

Dominik

Das Problem ist, glaube ich, an der Stelle auch,

Dominik

wer halt irgendwie diese Architektur

Dominik

entscheidet und so und wem man da vertrauen kann.

Dominik

Gerade wenn Leute jetzt keine Ahnung haben von

Dominik

Sicherheit oder von Computern allgemein,

Dominik

aber irgendwie Software als Manager irgendwie bestellen

Dominik

wollen. Die haben ja eine unheimliche

Dominik

Asymmetrie gegenüber den auch

Dominik

Entwicklern und so und die müssen halt vertrauen

Dominik

auf das, was denen da erzählt wird

Dominik

und die stellen sich dann meistens so ein Sammelsurium

Dominik

an, weiß nicht, Angebot und Nachfrage

Dominik

oder Best Practice oder irgendwas,

Dominik

was die 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.

Dominik

Oder, ja, die Frage ist halt,

Dominik

welche Angriffsmöglichkeiten 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

Philipp

okay ist, 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

Philipp

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

Philipp

Produktion der Software, ich mache mir vielleicht

Philipp

vorher Gedanken, ich würde nicht mal sagen, viel über

Philipp

die eigentlichen Zertifizierungen

Philipp

oder die Prozesse, sondern

Philipp

vielleicht mehr, wie lasse ich die entwickeln?

Philipp

Wie sorge ich dafür, dass, wie gesagt,

Philipp

wie ich eben erwähnt hatte, Code-Review,

Philipp

also wie sorge ich dafür, dass das halt schon

Philipp

bei der

Philipp

Entwicklung direkt die Software sicher ist, weil

Philipp

nachher das draufzubauen ist immer schwieriger.

Philipp

Also nachher mit dem Scanner zu suchen ist, glaube ich,

Philipp

schwieriger als zu sagen, okay, ich habe

Philipp

Entwickler, die sich direkt darüber Gedanken

Dominik

machen. Das ist ja zum Beispiel total kaputt.

Dominik

Also ich hatte jetzt irgendwie mal so die

Dominik

Situation, dass so ein Konzern da war,

Dominik

Die wollten dann Software bereitstellen und dann haben sie gesagt, nee, aber neue Software ist irgendwie komisch, wir wollen die alle auditieren vorher so persönlich, also als Security-Team und haben dann so ein Service dann rausgebracht, dann jetzt im November und da war dann Django 1.10.4, weil das dann die sichere Version war.

Dominik

Das ist also LTS war 1.11 für alle, die es noch wissen. Das ist halt schon ein altes System und da gibt es halt dann irgendwie schon jede Menge irgendwie Exploits, wenn man irgendwie genug nach sucht, die irgendwo drinstehen und das wird dann von den Leuten irgendwie geauditet und man fragt sich halt, okay, was machen die denn da eigentlich?

Dominik

warum tun die das? Und das ist halt

Dominik

vielleicht so ein, ja, das kriegt man glaube ich

Christian

gar nicht so gut in den Griff. Das ist halt wieder der Griff in Richtung

Christian

Product Security statt Process Security.

Christian

Die,

Christian

also ein prozesshafter Ansatz

Christian

und wir haben jetzt ja auch seit anderthalb Jahren,

Christian

doch seit ein bisschen mehr als anderthalb Jahren

Christian

machen wir bei uns ISO 27000

Christian

und

Christian

der Trick ist halt bei vielen,

Christian

die prozesshaften Security-Sachen werden

Christian

häufig missverstanden, weil

Christian

die Standards, die es dazu gibt,

Christian

wie eine Keule aussehen, obwohl sie

Christian

eigentlich gar nicht so schlimm sind. Man muss da

Christian

bloß, wenn man die Standards interpretiert,

Christian

immer unterscheiden zwischen, was fordert der

Christian

Standard formal und was ist im nächsten

Christian

Satz schon nur noch die

Christian

Implementationsguideline,

Christian

wo man dann eigentlich selber

Christian

Hoheit hat. Also ich habe halt auch jemanden,

Christian

der meinte, ja, ISO 27000,

Christian

seitdem müssen wir

Christian

sämtliche Stromkabel einmal

Christian

im Jahr irgendwie

Christian

auf die Erdung prüfen.

Christian

Also, nee, musst du nicht,

Christian

ich habe auch eine ISO 27000, aber dann müsst ihr das doch auch mal so,

Christian

nee, müssen wir nicht.

Christian

Ja, aber, aber, ja, nee, müssen wir nicht.

Christian

Und dann dreht man so eine Schleife mit,

Christian

nein, die ISO sagt, du musst dich halt

Christian

um die für dich relevanten Normen und Vorschriften kümmern.

Christian

Das sagt die ISO 27000.

Christian

Also macht man das.

Christian

Und die sagt aber auch, du musst sie bewerten

Christian

und musst dann Schlussfolgerungen für dich daraus ziehen.

Christian

Und es ist völlig legitim, im Rahmen der ISO zu sagen,

Christian

ja, wir haben zur Kenntnis genommen,

Christian

dass ortsveränderliche elektrische Verbraucher

Christian

irgendwie alle zwei Jahre auf X geprüft werden müssen.

Christian

Machen wir nicht.

Dominik

Aber jetzt kannst du doch mal

Dominik

erklären, was für eine Lücke das offen lassen

Dominik

könnte, warum man das testen

Dominik

wollen möchte.

Dominik

So, naja, ISO als Prozess, die ISO

Christian

als Informationssicherheitsprozess

Christian

ist extrem umfassend und

Christian

zwingt dich dazu, den kompletten

Christian

Wertschöpfungsprozess

Christian

von einem IT-System zu betrachten.

Christian

Da gehört halt dann unter anderem auch dazu,

Christian

dass du eben

Christian

rechtliche Rahmenbedingungen bewertest

Christian

etc., weil du musst

Christian

am Ende immer für alle deine Assets

Christian

und Philipp hat das halt schon,

Christian

die vier Grundsicherheitsaspekte,

Christian

also bei uns sind sie aufgeschlossen,

Christian

manchmal wären es drei, manchmal wären es vier,

Christian

halt nach Vertraulichkeit,

Christian

Confidentiality, nach Integrität,

Christian

Integrity, nach Authentizität

Christian

und nach Availability

Christian

zu schütten.

Dominik

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

Christian

in das sich... Ja, Strom ist zum Beispiel für die Availability

Christian

wichtig. Okay, also

Christian

Availability, okay. Und du misst

Dominik

halt dann da quasi nur die Stromleitung, um zu testen, ob das Ding

Christian

irgendwann mal ausfällt. Na, es ist halt

Christian

eine deutsche Norm, die kommt aus dem

Christian

ich weiß nicht, welches ist,

Christian

die schreibt halt vor, dass halt alle

Christian

ortsveränderlichen Verbraucher

Christian

auf Fehlerstrom

Christian

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

Christian

Und wenn die ISO halt sagt, du musst halt

Christian

alle für dich gültigen Rechtsnormen

Christian

berücksichtigen und

Christian

ü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 ist, was relevant 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 News eindringt.

Christian

Das Stromkabel, also das kann zum Beispiel passieren, wenn du deinen Prozess so aufstellst und sagst,

Christian

naja, Stromkabel sind für uns keine sicherheitsrelevanten Dinge,

Christian

deswegen kaufen wir die aus der Grabbelkiste beim Euroshop nebenan.

Christian

Das heißt, dann verkaufen die dir plötzlich en masse Dinge,

Christian

wo sie wissen, in einem halben Jahr geht da drinnen irgendwas kaputt

Christian

und dann geht bei dir im Rechenzentrum mit einem Mal das Licht aus

Christian

und dann ist deine Verfügbarkeit hin.

Christian

Und weil dein Redundanzkonzept natürlich davon ausging,

Christian

dass dir niemand so ein Ding untergejubelt hat,

Christian

mit der Absicht, dass da ein kleiner Sollbruchkondensator oder irgendwas drin ist,

Christian

der dann halt nach so und so viel schönen Laufzeit einfach eine Schmelzsicherung durchgehen lässt.

Dominik

Also das hat jetzt glaube ich auch erstmal nur relevant für so Atomkraftwerke oder sowas,

Dominik

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,

Christian

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 wenn du dann halt sagst, naja, wenn da jemand ein richtiges Long Game spielt und sagt, ich habe 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 fahre ich jetzt die Lücke und sage,

Christian

aha, ich habe rausgefunden, deren Hoster kauft immer irgendwie aus der Grabbelkiste die Stromkabel.

Christian

Das dauert jetzt, naja, der tauscht nur so und so oft die Stromkabel aus.

Christian

Aber wenn ich es schaffe, irgendwie einen Drittel seiner Stromkabel durch meine mit dieser Schmelzsicherung zu ersetzen,

Christian

dann bin ich in drei Jahren so weit, dass dann irgendwie

Christian

bei dem das RZ implodiert.

Christian

Das ist sozusagen die...

Christian

Und da muss man immer aufpassen.

Christian

Da kommt dieser...

Christian

Welcher XKCD ist das mit der hohen Verschlüsselung

Christian

und der 5-Dollar-

Christian

Entschlüsselungsmaschine?

Christian

XKCD, bitte nochmal einmal.

Christian

XKCD?

Christian

Comic.

Christian

Wo die Idee ist,

Philipp

dass wir 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

also wenn jetzt halt gerade dieses Thema

Christian

Advanced Persistent Threat,

Christian

also die typischerweise

Christian

staatlich 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

Christian

nimmt dich mit und dann

Christian

reden wir nochmal.

Christian

Und deswegen ist,

Christian

wenn man das mal schluckt und sagt, okay,

Christian

ich bin hier nicht der, der sich gegen

Christian

den Mossad schützen muss, weil ich habe eh keine Chance,

Christian

dann brauche ich aber auch nicht

Christian

dann brauche ich aber auch nicht so tun, als wenn ich

Christian

sozusagen alles auf dem Niveau machen müsste.

Christian

Oder du brauchst einen eigenen Geheimdienst.

Christian

Bitte? Oder du brauchst einen eigenen

Christian

Geheimdienst. Ja, genau.

Philipp

Das Fiese

Philipp

am Internet ist ja, dass du immer

Philipp

mit den besten Angreifern

Philipp

kommunizierst. Das heißt, vielleicht

Philipp

nicht mit dem Mossad, aber vielleicht hast du irgendwelche russische

Philipp

Hacker, die durchaus was drauf haben.

Philipp

Und die installieren dann halt, wie hier

Philipp

in der Uniklinik Düsseldorf, deine

Philipp

Ransomware. Und die sind auch

Philipp

fast auf dem Level von so einem Advanced

Philipp

Persistent Threat.

Philipp

Die haben vielleicht jetzt nicht so,

Philipp

also die machen schon ein bisschen Streufeuer, aber die haben

Philipp

durchaus das technische Know-how und

Philipp

auch die Zeit

Philipp

und die machen sich auch die Mühe, das an

Philipp

deine Architektur anzupassen.

Dominik

Also vielleicht noch mal kurz, Unique Düsseldorf,

Dominik

da gab es einen Vorfall, da sind die Server rausgefallen

Dominik

und da das Netzwerk intern nicht geordnet

Dominik

war, konnte man durch den einen

Dominik

befallenen Rechner irgendwie mehrere

Dominik

OP-Säle ausknipsen, wenn ich das richtig verstanden habe.

Dominik

Ja, ich weiß nicht genau, was da passiert ist, aber war...

Dominik

Hab ich nicht verfolgt, muss ich zugeben, ja.

Dominik

War aber auch, glaube ich, nicht der erste Fall in Deutschland

Dominik

und ich glaube, der dritte hat es auch ein paar Mal so richtig erwischt.

Christian

Nee, natürlich, also das ist halt ja jetzt erstmal,

Christian

die Mossad-Beispiele kommen immer zu dem Thema,

Christian

wenn man anfängt, die Physical Security halt extrem stark zu übertreiben.

Christian

Und das ist aber dummerweise auch das, wo Leute gerne übertreiben,

Christian

weil das können sie sich bildlich vorstellen.

Christian

Dann kommt halt immer noch ein, ja, warum ist hier vor dem RZ keine Panzersperre?

Christian

Und alle nur, ach, ja.

Christian

denkt dran, Panzersperre hilft dir nichts,

Christian

weil in Deutschland hat die Feuerwehr,

Christian

guck mal da draußen, siehst du diesen kleinen, unauffälligen

Christian

grauen Kasten? Da ist der

Christian

Generalschlüssel für das ganze Haus drin.

Christian

Ja, wie? Na, das ist der Feuerwehrschlüsselkasten.

Christian

Da gibt es einen

Christian

Feuerwehrschlüssel, den hat die Feuerwehr,

Christian

die kann das Ding aufschließen, die kommt hier rein.

Christian

Also spar dir mal bitte deine

Christian

Panzersperre.

Christian

Also deswegen, das ist immer

Christian

so dieses, für mich bloß

Christian

abzugrenzen von, wenn du

Christian

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,

Christian

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 dieser Prozessempfehlung.

Christian

Ich würde halt immer versuchen, an allen Enden weniger ist mehr zu machen.

Christian

Weniger Code, den du schreibst, ist typischerweise weniger Architektur, über die du nachdenken musst,

Christian

Deswegen, ja, und damit auch ein Team, was gerade erst anfängt, würde ich eben nicht sagen, ihr fangt jetzt mal an, euch über Security-Gedanken zu machen. Auch bei uns in der ISO ist es halt, in unserer Umsetzung der ISO 27000 ist es halt auch so, dass wir sagen, du willst irgendwie ein neues Feature für die Plattform etc. entwickeln? Ja, mach halt. Ja, mach halt. Ja, und du kannst gern auch irgendwie deine drei, vier Testmaschinen auf der Plattform halt schon mal auf diese Branch umstellen. Habe ich kein Problem mit.

Christian

Aber bevor das dann halt in großen Einsatz kommt, muss das halt mal durch eine Vier-Augen-Review durch und dann musst du mal irgendjemand anders erklärt haben, was du dir gedacht hast und dann gibt es dort eine Checkliste und die fragt, jetzt erklären wir mal, was du dir für Security für Gedanken gemacht hast.

Christian

Und das ist im Prinzip, das ist bei uns der komplette formale Prozess für die Entwicklungssicherheit. Also übertrieben jetzt ein bisschen, aber im Prinzip ist sozusagen bei uns nur ein, ja komm, entwickle halt, da drüben sind die 10 Guidelines, was man in welchen Situationen so alles mal berücksichtigen könnte.

Christian

Und aber das Einzige, wozu wir dich zwingen, ist, du musst in den Pull-Request, wo dein Feature in die General Availability geht, musst du mir oder deinem PR-Reviewer glaubhaft vermitteln, dass du dir jetzt wirklich adäquat zu dem Ding Gedanken gemacht hast.

Philipp

Schreibt man das dann als Text in den Pull-Request?

Christian

Text in den Pull-Request rein.

Christian

Da gibt es zwei

Christian

Fragen. Das eine ist, was sind hier die

Christian

Sicherheitsanforderungen? Und B,

Christian

wie habt ihr die erfüllt?

Christian

Wo ist hier der Nachweis, dass die erfüllt wurden?

Christian

Wie seid ihr zu der Frage gekommen von

Christian

was sind hier die relevanten Sicherheitsanforderungen?

Christian

Und wie weist ihr nach,

Christian

dass ihr das jetzt halt ordentlich umgesetzt habt?

Dominik

Das hört sich so ein bisschen an, als sollte man die Angst

Dominik

weglassen und tatsächlich nur, also

Dominik

die Worst-Case-Szenarien, also was ist das Schlimmste, was passieren kann?

Dominik

Also bei dir wären zum Beispiel jetzt Daten weg gewesen,

Dominik

das wäre nicht so gut gewesen, weil die so sehr

Dominik

privat sein müssen und an anderer Stelle ist

Dominik

vielleicht so, ja, okay, wenn man die Backups noch hat, dann

Dominik

ist halt nicht so schlimm und

Dominik

das ist halt dann vielleicht der Worst Case und da muss man

Dominik

sich halt Gedanken drüber machen, dass der nicht eintreten kann und der Rest

Dominik

ist dann egal.

Christian

Also auch bei

Christian

uns ist es so, unser Auditor zum Beispiel sagt halt

Christian

auch immer, ein Unternehmen, was hochsicher

Christian

ist und aber am Markt kein

Christian

Produkt platzieren kann,

Christian

hilft halt nicht.

Christian

Es geht halt nicht.

Christian

Und dieses Angstthema

Christian

ist das schon relevant, weil halt Angst ist,

Christian

häufig wird Security, gerade wenn es eine eigene

Christian

Abteilung ist, immer wahrgenommen als,

Christian

das sind halt die, die halt nachher unterschrieben

Christian

haben sollen mit, hier ist alles sicher und

Christian

deswegen sagen sie per Default einfach nein.

Christian

Und für uns ist der Review-Prozess aber

Christian

zum Beispiel auch umgedreht.

Christian

Der Review-Prozess in einem PR bei uns

Christian

ist halt immer nur ein,

Christian

ja, man darf nicht alleine

Christian

Zeug nach draußen prügeln. Sternchen

Christian

Fußnote, doch es gibt Situationen, in denen

Christian

man das darf, aber dann muss man noch mehr

Christian

Dinge beachten, weil es

Christian

gibt halt bei uns auch so Gefahr- und Verzugssituationen,

Christian

dann muss ich handlungsfähig sein.

Christian

Aber der Pull-Request

Christian

ist halt, wenn der gemerged wird, ist das halt

Christian

nicht die Aussage von dem Reviewer,

Christian

dass er seinen Erstgeborenen

Christian

irgendwie mit Blut unterschrieben

Christian

dem Teufel überantwortet, dass

Christian

er sagt, hier ist alles sicher,

Christian

sondern der Vier-Augen-Prozess

Christian

ist dafür da, dass ein zweiter

Christian

Mensch dem ersten nochmal

Christian

in die Augen guckt und sagt,

Christian

also wenn du jetzt nicht noch sagst,

Christian

ich soll nach irgendwas schauen, dann merge

Christian

ich den Kram jetzt.

Christian

Das ist aber dein Code, 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

Jochen

Rust 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

man kann nicht viel dran machen und das

Jochen

ist natürlich schon irgendwie

Jochen

irgendwie so, ja das ist

Christian

Das würde ich

Christian

gerne verstehen, weil da geht mir

Christian

Philipp dreht den Kopf und ich habe auch so ein

Christian

kleines Messer, was mir in der Tasche aufgeht.

Jochen

Ja, ja, klar. Also es ist, es muss,

Jochen

aber ich kann schon in gewisser

Jochen

Weise verstehen, was er meint.

Jochen

Also ich meine, bei Rust kannst du dir halt sicher sein,

Jochen

dass da nichts liegt, wenn du es halt

Dominik

richtig machst. Und da musst du mir auch mal erklären, was meinst du denn,

Dominik

damit da liegt was rum?

Dominik

Naja, zum Beispiel,

Dominik

dass halt der Hauptspeicher

Jochen

immer weiter anwächst, ohne dass du

Jochen

das eigentlich wolltest, ja, sozusagen,

Jochen

ohne dass du wirklich den Hauptspeicher brauchst, sondern

Jochen

dass halt Sachen nicht wieder weggeräumt werden,

Jochen

die halt irgendwann mal angefallen sind.

Jochen

Klar, also Python nimmt dir das

Christian

Memory-Management halt komplett weg

Christian

und das ist tatsächlich

Christian

Fluch und Segen zugleich,

Christian

logischerweise, also

Christian

jede technische Entscheidung der Hinsicht hat immer Trade-Offs

Christian

und ein Aspekt bei Python ist nun mal,

Christian

dass Python Speicher,

Christian

den es mal gebraucht hat, auch wenn es

Christian

den Akut gerade nicht braucht,

Christian

nicht einfach mal so wieder hergibt.

Christian

Also wenn dein Prozess mal irgendwie, keine Ahnung, ein Gig oder zwei Gig groß ist,

Christian

dann kann es gut sein, dass der das jetzt für die nächste Zeit mal behält,

Christian

auch wenn du alle Objekte gelöscht hast und wenn die Garbage Collection durch war.

Christian

Weil es ist halt auch ein Trade-Off zu sagen,

Christian

naja, ständig Mellocs groß und klein und groß und klein zu machen, hat auch Nachteile.

Christian

Es hat Nachteile in der Hauptspeicherfragmentierung.

Christian

Das ist an sich ein Performance-Thema.

Christian

Und Python als Universalsprache 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,

Christian

das weiß ja kein Programm, das guckt auch kein Programm so wirklich nach heutzutage,

Christian

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,

Christian

ach, du willst es auch noch benutzen,

Christian

na dann, dann teilt er

Christian

ihm tatsächlich irgendwie diese Sachen zu.

Christian

Und deswegen gibt es

Christian

einige Programme, MongoDB ist halt auch so ein Ding,

Christian

die alloziieren zum Beispiel immer bloß in

Christian

Vielfachen von 2 oder in

Christian

Zweierpotenzen 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

Christian

Mac und dann irgendwie, ja, jetzt hätte ich auch lieber

Christian

118, okay, also jetzt hätte ich

Christian

gerne einen Gigabyte und das kann manchmal schon so ein bisschen

Christian

unangenehm sein,

Christian

aber

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.

Christian

Das heißt, du musst dann halt nicht, wenn du einen Gigabyte alloziierst,

Christian

musst der Kernel halt nicht eine Million mal 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, die ist unoffensichtlich O von 1.

Christian

nämlich ein, genau, ein Append an Listen bei Python ist, wie war denn das, ne, Listen, 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, kopiert das einmal um, dann sind die nächsten n gratis, dann musst du wieder einmal verdoppeln, einmal kopieren und dann hast du wieder 2n gratis und das sind so typische Sachen, die man in solchen Situationen halt hat, was so Laufzeitumgebungen für einen automatisieren und machen 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, 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 über eine Woche oder einen Monat,

Christian

wenn du einen langlaufenden Prozess hast und die Saisonalitäten findest und du was merkst wie,

Christian

ah, okay, frühmorgens haben die Leute ihren Kaffee getrunken, jetzt lesen sie alle irgendwie das, was auf deiner Webseite ist,

Christian

dann geht ihr Speicherbedarf irgendwie hoch,

Christian

dann kommen abends irgendwann die Cronjobs,

Christian

dann geht er nochmal ein bisschen hoch, dann passiert lange nichts

Christian

und dann ist plötzlich, gibt er mal wieder ein bisschen

Christian

Speicher frei und dann ist es irgendwie gut.

Christian

Und wenn du dann aber siehst, okay,

Christian

über einen Monat ist es immer das Gleiche, dann mag das

Christian

zwar sein, dass er zu jedem einzelnen Zeitpunkt mal

Christian

einen Speicher hat, den er jetzt gerade akut

Christian

nicht braucht, aber es liegt

Christian

nicht.

Christian

Ja, ich weiß auch nicht, was er damit genau gemeint hat.

Christian

Nee, ich verstehe,

Christian

dass er sagt, ich kann zum Beispiel in

Christian

Python ist es schwierig, kontrollierbar

Christian

schlanke Prozesse zu bauen.

Christian

Das geht nicht so ohne weiteres. Also das geht

Christian

schnell, dass dein,

Christian

wenn du zum Beispiel eine Datenverarbeitungspipeline

Christian

hast mit zehn, neun oder zehn

Christian

Schritten und jeder Schritt davon braucht

Christian

irgendwie einen Gigabyte RAM,

Christian

dann kann das schon sein, dass dein Python

Christian

nachher zehn Gig frisst.

Christian

Weil er halt eben den Speicher von vorher

Christian

noch nicht freigegeben hatte, der jetzt aber auch gerade

Christian

nicht gepasst hat, um das nächste Ding zu bearbeiten

Christian

und dann so.

Christian

das kriegst du unter Python halt nicht gut

Christian

kontrolliert. Ja, vor allem, weil alles

Philipp

so dynamisch ist, weil ich also im Zweifel auch wirklich

Philipp

den Stack hochwandern kann und schauen kann, was da rumliegt

Philipp

oder ein Integer-Objekt als beliebiges

Philipp

Objekt sehen kann, was halt in Rust ohne

Philipp

weiteres nicht möglich ist und auch in anderen Poemischsprachen nicht geht.

Philipp

Aber auch ohne Speicherverwaltung

Philipp

kann ich ja in Python durchaus noch andere

Philipp

Sicherheitslücken machen, die also gar nichts mit dem Speicher zu tun

Philipp

haben, mit dem, was wir jetzt die

Philipp

meiste Zeit besprochen haben, sondern halt zum Beispiel,

Philipp

dass ich sage, ich verwende den Subprozess

Philipp

und öffne den Subprozess und

Philipp

übergebe einen String

Philipp

und habe diesen String halt konstruiert

Philipp

aus Benutzerdaten und jetzt habe ich

Philipp

plötzlich eine Command Injection, dass man

Philipp

beliebige Shell-Commandos ausführen kann.

Philipp

Das kann man in

Philipp

jeder Programmiersprache

Philipp

die Shell-Commandos

Philipp

ausführen können. Natürlich kannst du dich auf den Standpunkt

Philipp

stellen, okay, man hat das gefälligst nicht

Philipp

zu machen oder man hat gefälligst immer

Philipp

Shell gleich Freud zu setzen oder das ist ja der

Philipp

Standard, also dass man eine Liste übergibt.

Philipp

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 doch 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

Christian

ist, wenn Leute meinen, ich muss hier Flexibilität

Christian

reinbringen und jagen halt irgendwie User-Input

Christian

einfach durch einen Eval durch. Das ist sozusagen

Christian

die interne Variante des

Christian

Shell-Out. Was ist denn ein Eval?

Christian

Achso, Eval, ja, okay, ja, Entschuldigung.

Christian

Ja, Funktion, ja. Eval ist

Christian

Evil. Ja, ja. Aber das ist im Prinzip

Jochen

die... Oh ja, doch,

Jochen

Pickle. Ei, ei, ei.

Jochen

Ja, Pickle,

Jochen

nur Trusted.

Jochen

Da kann man sich auch schon mit dem Fuß schießen.

Philipp

Mit Eval haben wir sogar einen ganz, ganz

Philipp

schlimmen Bug, und zwar da hat eine Anwendung auf die Idee

Philipp

gekommen, dass man doch das cachen

Philipp

könnte. Und man könnte

Philipp

doch den Code nehmen, und dann kann man sich

Philipp

so einen kurzen, also man nimmt irgendwelche Benutzerdaten,

Philipp

die oftmals abgerufen werden,

Philipp

dann schreibt man dynamisch Python-Code,

Philipp

der das ausführt, und dann kann man

Philipp

das cachen. Und dann war aber das Problem, dass

Philipp

sogar die noch eine Datenbank-Schwachstelle hatten,

Philipp

dass man sehen konnte, was in der Datenbank

Philipp

lag, und da lagen deren Cache-Objekte.

Philipp

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

Philipp

sonst irgendwelche Sachen,

Philipp

die halt, also da kann man halt

Philipp

wenn man halt so Schwachstellen

Philipp

verkettet, kann man das auch

Philipp

auf sehr krumme,

Philipp

sehr fiese Sachen, die man mit

Philipp

einer einzelnen Schwachstelle gar nicht machen könnte.

Philipp

Also das war jetzt nicht der Fehler von dem,

Philipp

dass sie, also es war ein Fehler, dass man

Philipp

den Cache plötzlich sehen kann

Philipp

und es war ein anderer Fehler, dass sie überhaupt

Philipp

IWA verwendet haben, aber erst durch die Kombination

Philipp

ist es halt eigentlich eine Schwachstelle gewesen.

Christian

Auch so ein klassischer Ding ist

Christian

auch Directory Traversal,

Christian

dass halt irgendwie von außen sagen kannst,

Christian

ich will XYZ haben

Christian

und dann wird halt nicht ordentlich geguckt,

Christian

ob du durch Punkt-Punkt-Slash-Kombinationen

Christian

plötzlich dir dann irgendwie ETC-Pass-Videos

Christian

und so ein Kram halt auslesen lassen kannst.

Christian

Und das sind immer auch,

Christian

das ist tatsächlich, glaube ich, am wichtigsten.

Christian

Und deswegen ist dieses,

Christian

das ist wieder Variety matches Variety.

Christian

Deswegen sagen wir,

Christian

wir wollen so schnell so viele Verbesserungen

Christian

in der Security wie möglich

Christian

durch unsere Entwicklungspipeline jagen können,

Christian

weil die eigentlichen Vektoren ist nachher,

Christian

du hast immer eine Vielzahl von potenziellen Schwachstellen,

Christian

die für sich genommen alle gar nicht so schlimm sind.

Christian

Und wenn du aber immer nur auf der Suche nach dem einen großen Ding bist,

Christian

um alles zu reparieren, dann vergisst man schnell,

Christian

dass es halt eher um diese 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, sind Exceptions.

Christian

Exceptions sind für mich die sensibelsten Daten,

Christian

die dein System zur Laufzeit eigentlich von sich gibt.

Christian

Weil, das Problem ist ja folgendes, dein System ist in einem nicht bekannten Zustand, mit Daten, die du nicht kennst und weißt nicht mehr, was es tun soll.

Christian

So, und die Daten können halt alles sein.

Christian

Das können die Kreditkartendaten sein, das können die was auch immer und dann steht da irgendwie Value Error, hast du nicht gesehen?

Christian

Und du kannst den User nicht davon abhalten, Daten ins falsche Feld zu schreiben.

Christian

Dann schreibt er seine Kreditkartendaten halt das erste Mal irgendwie bei seinem Nachnamen aus Versehen rein.

Christian

Und deswegen diese Bewertung von was ist eigentlich sicher und was ist unsicher ist total schwer. Das Paradigma sollte auch eher sein, lieber ein bisschen zu sensibel zu sein und sozusagen dein Schutzniveau einmal grob festzulegen und zu sagen, okay, wir gehen ja mit Kreditkartendaten um, du musst davon ausgehen, dass irgendein doofer User, nein, die User sind nicht doof, es ist ein Usability-Problem.

Christian

Usability-Problem ist, dass wir halt ein Gehirn haben, was bekloppt ist.

Christian

Da kommt dieses ganze Thema Cognitive Processing rein von

Christian

unser Gehirn will Energie sparen und deswegen reagiert es auf irgendeine Form von Challenge

Christian

immer mit der billigstmöglichen Antwort, also Pattern Matching.

Christian

Und das Pattern Matching von unserem Gehirn ist auch nicht Best Match, sondern First Match.

Christian

Das heißt, du hast eine Seite vor dir, hast aus deinem Passwortmanager deine Kreditkartennummer kopiert,

Christian

dein Kind will was von dir, ja bitte, ich muss nur noch, klick, klick, klick

Christian

und dann hast du halt deine Kreditkartennummer

Christian

in das falsche Feld eingetragen.

Christian

Und das ist halt, wie war es bei Microsoft damals,

Christian

alle zwei Millionen Mal,

Christian

ja, das ist bei uns halt nächsten Dienstag.

Christian

Und so was, und deswegen sagen wir auch,

Christian

wenn wir Anwendungen dann mit Schutzniveaus belegen

Christian

und sagen, was macht man hier,

Christian

dann gucken wir eigentlich nur noch nach dem Worst Case

Christian

und sagen so, jetzt müssen wir davon ausgehen,

Christian

dass das ganze Ding mit dem Niveau geschützt werden muss.

Christian

Weiter differenzieren macht überhaupt keinen Sinn mehr,

Christian

weil du kommst dann von Hölzchen zu Stöckchen

Christian

und irgendwer greift

Christian

eh daneben. Und deswegen bin ich mal

Christian

sensibel drum, wenn es darum geht, so Exceptions

Christian

an externe Systeme weiterzuleiten,

Christian

weil im Prinzip

Christian

übergibst du jemandem externes

Christian

alle deine Daten, weil du ja gar nicht

Christian

weißt, was in der Exception drin ist. Wenn du es gewusst

Christian

hättest, hättest du halt schon

Christian

irgendwas geschrieben, damit die nicht auftritt.

Philipp

Aber wie

Philipp

bekommst du dann mit, wenn eine Exception passiert?

Philipp

Also an irgendein System muss das ja weitergeleitet werden, oder?

Christian

Ja, internes System. Also ich meine, 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. 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 es 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 Logdaten IP-Adressen rauspopeln und, der technische Begriff für parsen, und hat halt dann wieder eine Anbindung 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 irgendwann, 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 wir 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.

Jochen

Ja, aber ich meine, 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 Kibakirschbanane an.

Jochen

Ja, es schmeckt nicht so gut wie Kirsche oder Banane, leider.

Jochen

Aber klingt auch lustig.

Jochen

Ja, nee, das ist so irgendwie Elasticsearch, also diese Richtung.

Jochen

Aber da werfen Leute auch Logdaten rein oder halt eben Greylock.

Jochen

Oder manche machen das auch mit Postgres.

Jochen

Aber ich meine jetzt für Python speziell, da gibt es dann irgendwie so Sentry oder Bugsnack oder so,

Jochen

wo die Tracebacks halt gesammelt werden.

Jochen

Kann man sowas eigentlich auch gut selber hosten?

Jochen

weil das habe ich jetzt tatsächlich verwendet,

Jochen

aber ich kenne es auch immer nur, dass man da externe

Jochen

Services verwendet. Kein Problem, Sentry

Philipp

kann man ohne Problem, ist ein Open-Source-Projekt, kann man

Philipp

ganz normal selber hausten.

Philipp

Genau, kommt ja auch selber aus der Python-Ecke,

Christian

ist glaube ich auch Django unten drunter

Christian

oder so, ich bin mir gar nicht mehr sicher, aber

Christian

war es mal, aber stimmt, ist auch, genau,

Christian

Sentry ist ja

Christian

relativ groß geworden tatsächlich, Armin und so

Christian

und die

Christian

kannst du selber hosten tatsächlich an der Stelle,

Christian

das würde ich dann auch immer empfehlen.

Christian

Wichtig, sozusagen

Christian

ein Unterschied von

Christian

der Log Aggregation

Christian

versus Exception Logging.

Christian

Exception Logging hat

Christian

die große Aufgabe, wenn

Christian

du viel vom Gleichen

Christian

entgegenkriegst, weil irgendwie der eine

Christian

bugt gerade 50.000 Mal im letzten Tag auf,

Christian

dann willst du, dass der dir die schon

Christian

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 alles

Christian

raus.

Christian

Ja, interessant.

Christian

Da gibt es viele verschiedene Typen von Angriffen,

Dominik

die man mit verschiedenen Typen

Dominik

von Verteidigungsmaßnahmen beantworten

Dominik

möchte, können muss.

Dominik

Probieren kann man das, ja.

Dominik

Sollen wir uns mal

Dominik

unbeliebt machen? Oder ich mache mich unbeliebt.

Dominik

Wir einen 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 nichts.

Jochen

aber...

Philipp

Vor allem müssen die ganz viel mit Speicher machen

Philipp

und ganz viel nur Level erarbeiten.

Philipp

Genau, das, was man eigentlich nicht haben will, ja.

Philipp

Also, wo ich es noch sehe, wo ich noch mitspiele,

Philipp

ist, wo wir es gerne haben,

Christian

wo es angefragt wird und wir dem nicht

Christian

harsch widersprechen,

Christian

ist, wenn du sozusagen

Christian

tatsächlich sowas hast wie, deine Anwendung

Christian

nimmt Daten per Mail oder Upload

Christian

entgegen und du weißt, die werden dann nachher

Christian

auf eher schlecht gepflegten Rechnern

Christian

wieder weiterverarbeitet.

Christian

Also, wir haben so ein Kram, wo dann irgendwie, keine Ahnung,

Christian

Word-Files reinkommen und die sollen dann von irgendeiner

Christian

dritten Partei auf ihrem Windows-Rechner

Christian

verarbeitet werden, dann habe ich

Christian

halt mal einen Klamm-AV

Christian

da mit drauf sitzen, der halt diese eine Datei

Christian

scannt, aber das ist dann kein Ding,

Christian

was das System scannt, sondern

Christian

es ist bloß ein Programm. Hier scannt die eine

Christian

Datei, du sagst, ja, okay, dann geben wir die

Christian

weiter und wenn nicht, dann sperren wir sie halt zur

Christian

Seite. Das ist eine Form von Viren-Scanner,

Christian

da spiele ich punktuell halt noch mit.

Christian

Das kann man schon mal machen.

Christian

Was ich halt nicht leiden kann, sind diese

Christian

Security-Suites, die dann irgendwie

Christian

einen Rechner irgendwie übernehmen und irgendwie

Christian

mehr Schaden machen als

Christian

ich meine, da braucht man bloß Fefe lesen, da kriegst

Christian

du es halt alle zwei Wochen wieder serviert.

Christian

Schlangenhöhle und so.

Christian

Ja.

Christian

Ein gutes Konzept.

Dominik

Was ich eben noch kurz erwähnt hatte, was

Dominik

ich mir ja noch irgendwann drüber gestolpert bin,

Dominik

was bei Django eine DOS-Attacke

Dominik

möglich war, und zwar bei Regex, irgendwie, die man

Dominik

die benutzt worden ist, um bestimmte Formularfelder

Dominik

auszulesen. Das heißt, man konnte

Dominik

einfach, indem man in Formulare,

Dominik

ich glaube, E-Mail oder so, einen cleveren

Dominik

Regex reingeschrieben hat, irgendwie

Dominik

eine exponentiell wachsende

Dominik

oder Endlosschleife produzieren und dann

Jochen

die Seite... Man kann

Jochen

Regexe bauen, die sehr, sehr

Jochen

langsam werden dann. Genau.

Dominik

Dann hat man einfach ganz viele Requester dran geschickt

Dominik

und dann hat man halt die Seite in die Knie ziehen können.

Dominik

Das haben die irgendwann gefixt. Ich glaube, auch relativ spät,

Dominik

erst bei einer Zweier-Version, wenn ich das richtig bekommen habe.

Dominik

Sehr interessant, solche

Dominik

Sachen, also das denkt man immer, jemand, der

Dominik

keine Ahnung hat, nicht dran, dass in so

Dominik

einfachen Bibliotheken wie

Dominik

Regex da was Tolles hinterstehen kann.

Dominik

Was ist das? Perl Regex oder wie nennt man das?

Jochen

Diese Perl Compatible Regex

Jochen

als PCIe, aber ich

Jochen

weiß nicht, ob das...

Jochen

Die Python Regex Engine ist eine eigene.

Jochen

Ja, okay.

Philipp

Also moderne Regex Engines können schon nicht alle Fälle,

Philipp

aber viele Fälle da

Philipp

besser erkennen und haben dann da auch bessere Garantien.

Philipp

Also nicht erkennen, aber haben Garantien,

Philipp

dass das halt nicht in diesen

Philipp

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

Philipp

Und natürlich kann ich immer ein Regex produzieren, der einfach

Philipp

so lange dauert, weil ich einfach sage, okay,

Philipp

hier kommt irgendwas Beliebiges und das darf beliebig

Philipp

oft vorkommen. Und wenn ich dann einen langen String

Philipp

habe, dann ist es halt total,

Philipp

dann gibt es natürlich

Philipp

exponentiell viele Möglichkeiten,

Philipp

wie ich

Philipp

das Matching nehmen kann. Und wenn ich den String

Philipp

so konstruiere, dass das Matching nie passiert,

Philipp

dann dauert es halt ewig.

Philipp

Also unendlich nicht, aber schon mal länger

Philipp

ist das Universum.

Philipp

So, ich mach hier mal kurz, wir müssen

Christian

die Chapter-Mark hier ziehen.

Christian

Ich muss jetzt raus, ihr könnt mich rausschneiden

Christian

Wir haben eine Sekunde Pause gehabt, das könnt ihr rausschneiden.

Christian

Alles klar.

Christian

Ja, tschüss, vielen Dank, dass du da warst.

Christian

Bis zur Fortsetzung demnächst mal wieder.

Christian

Euch noch viel Spaß. Bis dann. Ciao.

Christian

Tschüss.

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?

Jochen

Ja, also

Dominik

mir fallen noch einige Sachen ein, aber frage ich

Dominik

erst mal euch weiter. Was geht es denn mit den

Dominik

Philipp-Fragen nochmal? Was wolltest du denn noch erzählen?

Dominik

Es gibt

Philipp

also, was vielleicht

Philipp

wichtig ist, dass man eine

Philipp

Funktion nimmt oder eine

Philipp

Standardmöglichkeit nimmt, um sich gegen die

Philipp

Sicherheitsschwachstelle zu verteidigen.

Philipp

Also wir haben eben schon Path Traverses angesprochen.

Philipp

Da könnt ihr mal denken, okay, also bei Path Traverses

Philipp

ist das Problem, dass ich irgendwas in den Pfad

Philipp

einschleuse, typischerweise halt

Philipp

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ß ich, die Passwortdatei oder die Datenbankdatei

Philipp

oder irgendwas anderes.

Philipp

Und eine Möglichkeit, um sich dagegen zu verteidigen,

Philipp

ist natürlich zu sagen,

Philipp

ich nehme immer alle Punkte raus oder so.

Philipp

Oder alle Slashes raus.

Philipp

Und dann kommt man halt auf andere Systeme,

Philipp

zum Beispiel unter Windows,

Philipp

da ist ja ein Doppelpunkt wichtig.

Philipp

Und dann muss man auch an den denken

Philipp

und dann ist der Backslash wichtig.

Philipp

Und es ist halt sehr schwierig,

Philipp

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, also man kann zum Beispiel bei SQL Injection kann man relativ einfach vermeiden,

Philipp

weil das halt eigentlich nur ein einfaches Anführungszeichen ist, 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 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 zum Beispiel, um Path-Traverse zu verhindern, kann man halt os.path.basename oder aus der Pathlib was nehmen,

Philipp

Statt selber zu versuchen, diesen String zu bearbeiten.

Dominik

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

Philipp

Ja, genau.

Philipp

Es sei denn, man weiß, was man tut.

Philipp

An einigen Stellen kann das richtig sein.

Philipp

Und ich glaube, ein anderes häufiges Problem ist auch,

Philipp

dass man sagt, ich versuche, die Eingaben zu früh abzufangen.

Philipp

Also ich sage, okay, ich habe eine ganz komplizierte Anwendung.

Philipp

Und immer, wenn mir jemand was mit einem Anführungszeichen schickt,

Philipp

dann sage ich, geht nicht, ist Fehler.

Philipp

Oder ich schmeiße das Anführungszeichen raus.

Philipp

Und das ist natürlich klapp vielleicht.

Philipp

aber dann muss ich halt überall dran denken und es gibt halt verschiedene Kontexte.

Philipp

Also wenn ich einen Pfad habe, dann ist halt ein Slash oder ein Backslash ein Problem.

Philipp

Wenn ich aber HTML habe, dann ist das kleiner Zeichen oder das doppelte Anführungszeichen ein Problem

Philipp

und so weiter und so fort.

Philipp

Das heißt, es ist wichtig, dass man darauf achtet, dass man das in jedem Kontext richtig macht

Philipp

und es ist schwierig zu sagen, oder es ist ein häufiger Anfängerfehler zu sagen,

Philipp

okay, ich gehe davon aus, dass meine Daten irgendwie korrekt sind.

Philipp

Das ist dann doch immer sehr schwierig, weil man halt ein komplexes System hat,

Philipp

vielleicht sogar mit mehreren Microservices,

Philipp

die die Daten aus verschiedenen Quellen

Philipp

anliefern.

Philipp

Aber wenn man darauf vertraut, dass die Datenbank

Philipp

irgendwie gute Daten enthält, das ist immer

Philipp

sehr, sehr gefährlich.

Dominik

Ja, ist interessant, welche Assertions man da rausgibt

Dominik

oder welche Dinge man daraus macht, wenn das nicht dem

Dominik

erwarteten Standard entspricht oder so.

Dominik

Ein paar Stolperfallen, 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

Jochen

Ja, ansonsten genau

Jochen

ein Thema, wo ich immer denke, das kann doch nicht so schwer

Jochen

sein, aber ich tue mich irgendwie schwer

Jochen

damit, ist halt, wie authentifiziert

Jochen

man sich eigentlich richtig

Jochen

irgendwie zum Beispiel per

Jochen

einer API, per

Jochen

HTTP oder so

Jochen

Web-Authentifizierung ist irgendwie nicht so

Jochen

einfach

Dominik

Es gibt ein paar interessante Artikel

Dominik

dazu, die wir irgendwie ja letztens gelesen hatten.

Dominik

Warum JBT

Jochen

kaputt ist. Ja, JBT sieht nicht gut aus, ja.

Dominik

Und dass ja viele Leute nutzen

Dominik

und sagen, das ist der Standard, den es da gibt.

Dominik

Und ich habe aber auch jetzt auch noch nicht so viel gefunden,

Dominik

was man da anderes machen kann. Es gibt irgendwie

Dominik

Passeto oder Pi-Passeto, aber da gibt es noch nichts wirklich

Dominik

Nutzbares. Das muss man irgendwie auch alles wieder

Dominik

selber machen vielleicht und das

Dominik

ist da vielleicht wieder nicht so eine gute Idee und

Dominik

da ist es gar nicht so einfach, irgendwie sich

Dominik

vernünftig per Token zu authentifizieren.

Jochen

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

Jochen

HTTP-only-Cookies.

Jochen

Ja, vielleicht.

Jochen

Also Sessions dann?

Jochen

Ja, Session Cookies ist halt manchmal ein bisschen schwierig.

Jochen

Aber ja, das ist immer wieder, wo ich mir denke,

Jochen

das müsste doch eigentlich jetzt einfach sein,

Jochen

aber irgendwie ist es das nicht.

Jochen

Tja.

Jochen

Oh, oder hast du mal so von Indie ausgesprochen,

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

Jochen

auf 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,

Jochen

aber... Das ist ja sicherlich immer

Philipp

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

Philipp

Benutzernamen, keinen 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 und Passwörter und ich verwende irgendein

Philipp

Single-Sign-On-System.

Philipp

Du hast ja schon OROS angesprochen oder OpenID Connect,

Philipp

ist ja der alternative Standard,

Philipp

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

Philipp

Und dann habe ich zwar diesen anderen Dienst,

Philipp

der irgendwo vielleicht auch in meinem Netzwerk ist,

Philipp

oder vielleicht sage ich, okay, ich erlaube Login mit Facebook,

Philipp

mit Google, mit Twitter und so weiter, mit GitHub.

Philipp

Dann müssen die sich ja drum kümmern.

Philipp

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,

Philipp

weil der Benutzer muss kein Passwort wählen.

Philipp

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, ne?

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

Weil 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

mich einmal ins Ausland geflogen, als man das noch

Dominik

durfte und habe eine

Dominik

relativ hohe Überweisung angefordert

Dominik

oder durchgeführt. Und auf einmal bekam

Dominik

ich dann so einen Anrufer von meinem 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

Philipp

du, 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 kann

Dominik

und da gibt es ja so Experimente zu.

Dominik

Also zum Beispiel

Dominik

einige Konzerne verschicken ja dann so

Dominik

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 Standard, 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-Security.

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, wobei es dann irgendwann

Dominik

alles 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?

Philipp

Der coole Trick bei TLS ist halt,

Philipp

dass du sagen kannst,

Philipp

also du kannst erstmal sowieso asymmetrisch arbeiten,

Philipp

das heißt, der private Schlüssel verlässt nie die Box.

Philipp

Du hast also einen Client,

Philipp

also einen Service, der einen anderen Dienst was sendet

Philipp

und der hat einen privaten Schlüssel

Philipp

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

Philipp

Und das kannst du noch weiter treiben,

Philipp

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,

Philipp

die das irgendwie signiert.

Philipp

Und das verwendest du ja,

Philipp

wenn du auf eine normale Webseite gehst,

Philipp

eine normale HTTPS-Seite,

Philipp

dann ist die halt oben grün,

Philipp

weil halt dieses Zertifikat von jemandem

Philipp

signiert wurde. Und

Philipp

das kannst du aber auch kleinseitig verwenden,

Philipp

dass du sagst, okay,

Philipp

ich zertifiziere nicht nur, dass derjenige,

Philipp

der die Anfrage entgegennimmt,

Philipp

richtig ist und auch der, der die Anfrage sendet.

Philipp

Das ist ja tatsächlich wieder interessant, weil das

Dominik

das nächste Thema ist, was irgendwie eigentlich zu Security

Dominik

natürlich dazugehört und das wäre Kryptografie oder Verschlüsselung,

Dominik

ohne dass man ja wahrscheinlich nicht auskommt.

Dominik

Und da gab es ja irgendwie Algorithmen,

Dominik

mit denen man bestimmte Dinge

Dominik

verschlüsselt oder hasht oder wie auch immer.

Dominik

und die man dann mehr oder weniger schnell entschlüsseln konnte oder sowas.

Dominik

Oder man konnte sogar so Angriffe fahren wie, ich glaube, Rainbow Table nennt sich das oder sowas,

Dominik

dass man halt Passwort-Hashes einfach in eine Tabelle schmeißt und guckt,

Dominik

wie ist denn das Ergebnis von dem Hash, also was ist denn da der umgekehrte Wert von oder so.

Dominik

Und ja, wenn man solche Sachen halt irgendwie vermeiden möchte,

Dominik

dann müsste man, glaube ich, 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 eigentlich nicht verschlüsseln,

Philipp

Weil dann muss ich ja den Schlüssel irgendwo auf dem Server

Philipp

speichern.

Philipp

Also das Passwort eines Nutzers.

Dominik

Ich meinte ja so SSH-Keys oder sowas.

Dominik

Das meine ich mit Schlüssel.

Dominik

Die dann bestimmt Algorithmus benutzen irgendwie.

Dominik

Okay, ja.

Dominik

Das man halt da, also

Dominik

das müsst ihr vielleicht nochmal erklären. Also wie man halt da

Dominik

von einem, ich sag mal,

Dominik

nicht so guten Algorithmus

Dominik

den Schlüssel berechnen kann aus einem Public Key oder sowas.

Dominik

Bei asymmetrischer Verschlüsselung.

Philipp

Du musst den Schlüssel selber

Philipp

eigentlich nicht berechnen. Du kannst ein Zertifikat

Philipp

berechnen, das ist der Schlüssel nochmal in

Philipp

kurz, aber du könntest eigentlich auch immer den Schlüssel

Philipp

an sich verwenden, den öffentlichen Schlüssel zumindest.

Philipp

Nur weil der öffentliche Schlüssel ist halt

Philipp

bei dieser Kryptografie sehr lang, das muss halt

Philipp

eine sehr lange Zahl sein und die kannst du halt

Philipp

eindampfen auf eine kürzere Zahl, die man

Philipp

aus verschiedenen Gründen dann verwendet, die auch immer gleich ist,

Philipp

egal wie lang der Schlüssel ist und

Philipp

das ist das Hash-Verfahren. Das verwenden wir auch bei

Philipp

Passwörtern und auch an vielen anderen Stellen, kann ich

Philipp

auch verwenden, um zum Beispiel zu überprüfen, wenn ich Software

Philipp

runterlade, dass die in Ordnung ist.

Philipp

Haben wir eben schon mal angesprochen, dass wenn ich das mit Python mache,

Philipp

dann habe ich zum Beispiel bei pip-env, oder bei pip habe ich ein pip-file oder ein pip-file.log

Philipp

und in dem pip-file.log stehen halt die ganzen Hashes drin.

Philipp

Und was ein Hash macht, ist halt genau eine lange Eingabe zu nehmen, egal welche Länge,

Philipp

und sie auf eine Zahl zu reduzieren, die eine relativ kurze Länge hat und die auch immer die gleiche Länge hat.

Philipp

Das sind dann halt nachher so 32 Buchstaben oder sowas.

Philipp

Und das ist halt kryptografische Magie.

Philipp

Und es gibt halt Mathematiker,

Philipp

die haben sich darum gekümmert,

Philipp

dass es nicht möglich ist, das rückwärts zu rechnen.

Philipp

Das heißt, wenn ich einen Hash habe,

Philipp

kann ich nicht das Original berechnen

Philipp

und ich kann gegeben einen Hash,

Philipp

kann ich überhaupt nicht ein Original finden.

Philipp

Das heißt, wenn du mir deinen Hash gibst,

Philipp

dann kann ich eigentlich sicher sein,

Philipp

dass die Originaldatei genau unverändert ist.

Philipp

Und genau dafür kann ich die halt einsetzen.

Dominik

Mhm.

Dominik

Ja.

Dominik

Mhm, mhm.

Dominik

Okay, das Rückrechnen ist dann bei unsicheren

Dominik

Hash-Verfahren dann vielleicht dann doch möglich

Dominik

oder sowas? Oder dauert das lange? Genau.

Jochen

Man kann halt Kollisionen finden

Jochen

dann. Und dann kann man eben

Jochen

beispielsweise 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

Jochen

kann, dann kann man halt quasi beliebige Texte

Jochen

mit einem bestimmten Hash erzeugen. Und das ist natürlich

Jochen

ganz schlecht.

Philipp

Genau, dann habe ich halt deinen Schlüssel und dann kann

Philipp

halt jemand anders einen anderen Schlüssel generieren

Philipp

und die haben plötzlich den gleichen Hash.

Dominik

Dann kann er sich mit seinem eigenen Schlüssel,

Dominik

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

Dominik

authentifizieren.

Dominik

Also es geht um Sicherheit von Kryptografie oder sowas

Jochen

in der Hinsicht noch? Ja, aber ich glaube, ich weiß

Jochen

gar nicht, ob man sich als Endanwender

Jochen

oder so wahnsinnig viel mit

Jochen

beschäftigen muss, weil

Jochen

ich glaube, wenn man da anfängt, sich für zu interessieren

Jochen

und dann irgendwelche Entscheidungen zu treffen,

Jochen

dann liegt man wahrscheinlich eher

Jochen

ist die Wahrscheinlichkeit hoch, dass man falsch liegt.

Jochen

Also genau, dann sollte man quasi diese Wahl

Dominik

auch gar nicht mehr treffen, welche kryptografischen

Dominik

Algorithmen man zum Verschlüsseln, Entschlüsseln

Dominik

benutzt. Ich glaube, das war's.

Philipp

Also wenn du zum Beispiel

Philipp

hasht, dann muss dir der Python-Hashlet

Philipp

sagen, okay, ich möchte diesen Hash haben.

Philipp

Dann sagst du zum Beispiel, ich möchte SHA-1 haben.

Philipp

Oder ich möchte MD5 haben.

Philipp

Und wenn du da die falsche Wahl triffst, dann hast du durchaus

Philipp

ein Problem. Also SHA-1 oder MD5 sollte man

Dominik

nicht nehmen, sondern SHA-256, oder?

Philipp

Genau, SHA-256 oder

Philipp

eine SHA-3-Variante oder was anderes.

Philipp

Aber eigentlich willst du gar nicht, dass der Entwickler sich

Philipp

drum Gedanken machen soll. Der Entwickler soll gar nicht

Philipp

sagen, okay, ich nehme SHA-1, sondern der Entwickler

Philipp

soll eigentlich sagen, okay, ich nehme eine fertige

Philipp

Bibliothek. Und dafür gibt es dann in Python

Philipp

zum Beispiel die neue

Philipp

Passwort-Bibliothek

Philipp

oder es gibt B-Crypt.

Philipp

Und da

Philipp

muss ich mich halt gar nicht drum kümmern. Ich weiß gar nicht,

Philipp

die Passwort-Bibliothek heißt, glaube ich, Secret?

Philipp

Secrets.

Philipp

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

Philipp

Also da wird halt die Wahl für dich

Philipp

getroffen. Und das macht es

Philipp

für den Entwickler natürlich

Philipp

besser, weil der Entwickler keine Entscheidung

Philipp

treffen muss. Wenn du ein System

Philipp

groß zertifizieren musst, dann musst du wahrscheinlich trotzdem irgendwo

Philipp

eine Entscheidung treffen, weil da andere Leute drüber schauen

Philipp

wollen, aber für so die Wald- und Wiesenanwendung,

Philipp

die einfach mal

Philipp

von vielleicht einem kleinen Team entwickelt wird,

Philipp

ist das sicherlich eine bessere Option, wenn die

Philipp

keine kryptographischen Entscheidungen treffen.

Philipp

Also nicht mal die Entscheidung treffen, welche

Philipp

Algorithmen sie verwenden, sondern vielleicht nur noch

Philipp

sagen, ich möchte ein bestimmtes Sicherheitslevel

Philipp

haben. Das ist ja auch immer

Philipp

ein Trade-off, dass ich sage, okay, weil ich kann

Philipp

zum Beispiel mehrfach hintereinander hashen und

Philipp

dann kann man das halt bei dem Passwort

Philipp

dauert es auch länger,

Philipp

das rauszufinden, weil ich halt

Philipp

wenn ich

Philipp

ein Testpasswort habe, muss ich das ganz oft hashen,

Philipp

um das Zielpasswort zu finden.

Philipp

Aber das ist halt auch ein Problem, was

Philipp

auf deiner Seite, weil wenn du

Philipp

das jetzt sehr oft hashst, dann dauert es natürlich

Philipp

für dich länger. Und du möchtest ja

Philipp

nicht, dass dein Service plötzlich eine Minute

Philipp

braucht, wenn sich ein Benutzer einloggt, weil

Philipp

dein Passwort irgendwie eine Million Mal hasht oder sowas.

Jochen

Das ist für uns auch mal so ein

Jochen

schönes Ding bei Tests, wo man

Jochen

halt irgendwie Zeit sparen kann.

Jochen

Und ich meine, die Passwort-Hash-Funktionen

Jochen

sind ja genau die,

Jochen

sie sind ja genauso gestaltet, dass sie möglichst langsam

Jochen

sind irgendwie.

Jochen

Und genau, da will man dann vielleicht

Jochen

nochmal MD5 verwenden oder sowas in der Art,

Jochen

weil das ist halt dann deutlich schneller.

Jochen

Und man legt ja, wenn man jetzt

Jochen

einen Test-Suite durchlaufen lässt, oft irgendwie

Jochen

ganz viele Nutzer an und

Jochen

das kann Dinge deutlich

Jochen

beschleunigen.

Jochen

Ja.

Dominik

Sehr, sehr interessant.

Dominik

Da fallen mir ganz viele Sachen, glaube ich, noch zu ein.

Dominik

Was man da so macht mit

Dominik

Vulnerabilities und Disclosure

Dominik

und all so Themen.

Dominik

Ja, Pics tatsächlich. Und die Frage,

Dominik

wollen wir ein Standard-Lib-Modul

Dominik

vorstellen?

Dominik

Ich finde, der kann sich mit Siegwitz vorstellen.

Dominik

Kennst du dich mit Siegwitz auch?

Philipp

Aus?

Philipp

Nicht im Detail.

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 Pick tatsächlich?

Jochen

Ja, also meiner

Jochen

wäre jetzt

Jochen

tatsächlich

Jochen

YouTube.dl.

Jochen

Wie kommst du

Jochen

da drauf?

Jochen

Ja, ich habe damit in letzter Zeit,

Jochen

im letzten Jahr viel gemacht.

Jochen

Ich habe es früher vielleicht ab und zu mal benutzt, um irgendwie mal

Jochen

Videos runterzuladen, die ich gerne

Jochen

auf der Platte hätte. Also genau

Jochen

dafür ist es ja da, aber

Jochen

im letzten Jahr habe ich das auch viel

Jochen

sozusagen

Jochen

in Projekten verwendet, weil es

Jochen

darum ging, wie man da Videos irgendwie

Jochen

automatisch verarbeiten kann und so.

Jochen

Ja, und

Jochen

es ist ein sehr, sehr schönes Tool.

Jochen

Aber ich glaube, Philipp kann das

Jochen

deutlich besser erklären, was das eigentlich so tut

Jochen

und was so ein bisschen...

Dominik

Es gab auch so einen kleinen politischen Vorfall beim YouTube.

Dominik

Den müssen wir auch noch natürlich

Dominik

erzählen.

Philipp

Der Name von YouTube.de ist stark irreführend.

Philipp

Das hat angefangen als ein Download-Tool nur für YouTube.

Philipp

Und als ich das damals übernommen habe,

Philipp

da wurden, glaube ich, noch Vimeo unterstützt

Philipp

und noch ein, zwei andere Seiten.

Philipp

Aber als ich das abgegeben habe,

Philipp

also mittlerweile entwickle ich auch schon länger nicht mehr daran.

Philipp

Entwicke schon ein bisschen daran,

Philipp

aber bin halt nicht mehr der Chef-Maintainer.

Philipp

Und mittlerweile unterstützt es über 1.000 Dienste.

Philipp

Das heißt, 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 ja immer ein ordentliches

Philipp

Video zurückliefern. Du kannst natürlich

Philipp

auch sagen, ich möchte verschiedene

Philipp

Konfigurationen, also möchte ich das Video

Philipp

sortieren oder möchte ich direkt eine Playlist drunter laden

Philipp

und YouTube.dl ist komplett in Python

Philipp

geschrieben. Das ist vielleicht auch ein bisschen besonders, weil es

Philipp

eine Python-Anwendung ist, die

Philipp

gar keine Dependencies hat.

Philipp

YouTube.dl verlangt nur die Standard-Diplotik

Philipp

Und das auch sehr, sehr, sehr flexibel.

Philipp

Also bis vor kurzem noch konnten wir zwischen Python 2.6, 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, das man auch sowohl programmatisch als auch als Kommandozeitanwendung verwenden kann, um schnell was runterzuladen.

Philipp

Viele grafische oder serverseitige Programme verwenden auch intern YouTube.dl, um halt Videos runterzuladen aus verschiedensten Quellen.

Philipp

Typischerweise, also oft YouTube, aber kann auch was ganz anderes sein.

Philipp

Und der Vorfall, der halt passiert war, ist, also vor dem öffentlichen Vorfall bin ich und ein Hoster angeschrieben worden von einer deutschen Anwaltskanzlei, die Rasch heißt die.

Philipp

Die sind, wenn man nach denen googelt, also ich habe zuerst natürlich nach denen gegoogelt, als ich das Schreiben bekommen habe, sieht man, okay, die schicken normalerweise Abnahmen wegen 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,

Philipp

aber die haben ein sehr langes Papier geschrieben, wo sehr große Drohungen drin standen,

Philipp

was für mich eigentlich jetzt irrelevant ist, weil ich bin ja nicht mehr in ein Projekt involviert.

Philipp

Also ich habe noch gelegentlich Contributions geleistet, aber auch nichts mehr zu YouTube,

Philipp

sondern nur noch zu ganz anderen Seiten.

Philipp

Und dann haben die wohl aber mitbekommen, dass YouTube-DL auf GitHub gehostet ist.

Philipp

Und dann an die amerikanische,

Philipp

ja, so richtig technisch drauf waren sie

Philipp

nicht, aber gut, sind auch recht anwesend,

Philipp

sind keine Programmierer, haben halt nur so ein bisschen

Philipp

was gefunden und haben auch viele Sachen nicht richtig

Philipp

verstanden. Also,

Philipp

das ist halt, ja, kann man

Philipp

ja nicht machen.

Philipp

Und dann sind sie halt

Philipp

zu den Amerikanern gegangen und die

Philipp

RIA, und die

Philipp

hat dann halt GitHub

Philipp

eine Notiz geschickt,

Philipp

eine

Philipp

DMCA-Notiz,

Philipp

dass sie halt

Philipp

die YouTube.de

Philipp

sperren sollen. Und davon haben die meisten Leute erst

Philipp

mitbekommen, dass irgendwas nicht stimmt. Also diese

Philipp

Vorgeschichte, das war schon Wochen davor in Deutschland

Philipp

und auch andere Sachen waren Wochen

Philipp

davor, aber was die Öffentlichkeit mitbekommen hat,

Philipp

war, okay, GitHub ist gesperrt.

Philipp

Und GitHub ist freundlicherweise für

Philipp

das YouTube.de-Projekt, das hostet die Downloads.

Philipp

Das YouTube.de

Philipp

muss relativ häufig aktualisiert werden,

Philipp

also wird so alle zwei, drei Tage aktualisiert.

Philipp

Klar, bei irgendeiner Webseite ändert 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 10 PRs rein.

Philipp

Und dadurch entstehen halt große, hohe Downloadzahlen.

Philipp

Und dann ging halt erstmal gar nichts, weil GitHub das nicht gemacht hat.

Philipp

Das Projekt ist direkt umgeschwenkt.

Philipp

Und ich hatte schon befürchtet, dass es daran endet, dass das Projekt nur noch YouTube-Musik runterladen kann.

Philipp

Also der Stein des Anstoßes waren nicht die normalen YouTube-Downloads, sondern die YouTube-Musik-Videos.

Philipp

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

Philipp

Und was jetzt aber passiert ist, dass glücklicherweise die IFF,

Philipp

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

Philipp

und alles wieder klappt.

Philipp

Ich war da auch gar nicht so viel involviert.

Philipp

Ich bin halt nur von zig Leuten angeschrieben worden,

Philipp

habe einige Interviews gegeben.

Philipp

Und ich bin halt natürlich rechtlich,

Philipp

habe ich mit einem Rechtsanwalt gesprochen.

Philipp

Damals hatte ich da nicht den richtigen Überblick.

Philipp

Ich habe dann auch eine Unterlassungserklärung abgegeben,

Philipp

dass ich nicht mehr daran teilnehme an YouTube.dl.

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 IFF 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

Philipp

seinen eigenen Dienst hosten.

Philipp

Und die sind auch rechtlich

Philipp

angeschrieben worden, auch von den Rechtsanwälten rasch.

Philipp

Und die haben sich

Philipp

auf eigene Kosten, haben die ihre eigene

Philipp

Verteidigung organisiert. Die hosten halt nur die Webseite.

Philipp

Die hosten nicht das Programm selber.

Philipp

Aber auch das fand die Rechtsanwälte

Philipp

verwerflich. Glücklicherweise ist

Philipp

jetzt, glaube ich, alles gut und ich glaube,

Philipp

YouTube.de wird es genutzt.

Philipp

völlig unbestritten, dass das

Philipp

absolut legitim ist. Es haben sich

Philipp

nach der Sperrung auch sehr, sehr viele

Philipp

Museen oder Archivare

Philipp

oder Bibliotheken gemeldet, die gesagt haben,

Philipp

okay, wir verwenden das und wir haben sogar

Philipp

rechtlich das Anrecht darauf,

Philipp

selbst Musikvideos runterzuladen, weil

Philipp

das genau steht und irgendwie muss es

Philipp

halt passieren und YouTube.dl ist genau das Werkzeug,

Philipp

um sowas zu machen. Und ich glaube, der Nutzen

Philipp

von YouTube.dl überwiegt bei weitem

Philipp

das jegliche

Philipp

Probleme, dass man da ein Musikvideo

Philipp

in meiner Weise relativ schlechter Qualität

Philipp

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

Philipp

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.

Jochen

Ja, aber ja, ich glaube auch eher, das ist der, also sag mal so, das hat dem Projekt wahrscheinlich doch eher stark genützt. Das hat jetzt nochmal sehr viel Aufmerksamkeit bekommen und hat der Streisand-Effekt voll zugeschlagen.

Jochen

Ja, auf jeden Fall.

Dominik

Also ich bin tatsächlich froh, dass es mittlerweile soweit 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 sich ja 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, die das sehr flexibel ausgelegt haben, was da im Gesetz steht, 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 ist aber kein normaler Benutzer nicht, weil das ist nicht im Internet Explorer drin oder so. Und das ist halt eine sehr fragwürdige Argumentation.

Dominik

Ja, der Jurist

Dominik

das dann selber ausprobiert und dann festgestellt,

Dominik

nee, er kann das nicht. Ja, genau, genau, exakt.

Philipp

Das darf er nicht. Genau.

Philipp

Und YouTube-DLS funktioniert eigentlich wie ein normaler

Philipp

Browser, ist nicht unterschiedlich,

Philipp

nicht grundsätzlich unterschiedlich wie Chrome, es hat auch

Philipp

einen eigenen JavaScript-Engine in Python geschrieben.

Philipp

Ach, äh, ah, okay,

Jochen

das und tatsächlich, die ist selber,

Jochen

aha, naja, stimmt, wenn es keine externen

Jochen

Abhängigkeiten gibt, oh, das wusste ich nicht, das hätte ich

Jochen

jetzt auch gedacht, dass das vielleicht irgendein

Jochen

Headless-Browser-Engine

Jochen

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

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 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

Philipp

relativ gut. Man kann die Datei ja einfach

Philipp

als ZIP verpacken und dann ist es ausführbar.

Philipp

Und man kann das auch mit

Philipp

YouTube.de

Philipp

CX Freeze, um halt

Philipp

auch eine Excel für Windows zu erzeugen.

Philipp

Und das läuft dann wirklich überall, ohne dass man es installieren

Philipp

muss. Und ich glaube, das ist auch ein Grund

Philipp

für den Erfolg dieser Software,

Philipp

dass man das halt einfach so laufen lassen kann,

Philipp

dass man sich keine Gedanken machen muss, auch wenn das System

Philipp

komplett zerschlossen ist als Python-Entwickler.

Philipp

Das klappt immer. YouTube.de, klar, braucht

Philipp

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 früher

Jochen

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

Jochen

aber ja, es ist wirklich sehr, sehr

Jochen

praktisch, es nimmt einem auch viel ab.

Jochen

Ich benutze das jetzt halt immer so

Jochen

quasi,

Jochen

um halt automatisiert von allen möglichen

Jochen

Seiten Dinge runterzuladen und das ist halt sozusagen

Jochen

die Schnittstelle, die YouTube-DL

Jochen

ist sozusagen meine API zu

Jochen

Seiten, die Videos haben,

Jochen

um das Video da rauszukriegen.

Jochen

Genau, ohne, ja.

Jochen

Ja.

Jochen

Ja.

Jochen

Ja, Pics. Also ich

Dominik

würde dieses Mal gleich Python Date-Util

Dominik

picken, weil irgendwie das ein schöner Rapper ist,

Dominik

über wie man Datumsangaben

Dominik

irgendwie machen kann,

Dominik

in verschiedenen Zeitkalendern mit Deltas.

Dominik

Ich wollte es mal erwähnt haben, das stand irgendwo noch

Dominik

auf meiner Liste, hat jetzt nicht den Topic gar nicht so viel zu tun,

Dominik

mal.

Dominik

Ja, detutilt ist

Jochen

tatsächlich auch sehr nett. Also ich,

Jochen

das detutilt-pass, das passt

Jochen

erstaunlich viel. Also dem kann man

Jochen

irgendwelche Strings geben, die so, also man hat

Jochen

ja oft irgendwie, sieht man dann irgendwo so ein

Jochen

String mit Datums und Zeitangaben

Jochen

drin und dann denkt man sich, oh, wie waren

Jochen

jetzt nochmal die Format-String-Dinger,

Jochen

wie hießen die nochmal alle?

Jochen

Und dann nimmt man detutilt-pass

Jochen

und dann passt

Jochen

das automatisch, aber dann muss man irgendwie noch,

Jochen

ich glaube, das geht aber auch irgendwie, man kriegt

Jochen

auch aus dem Digital Pass dann raus,

Jochen

wie der Format-String eigentlich sein müsste.

Jochen

Und andere Kalender.

Jochen

Genau, weil Digital Pass

Jochen

sollte man nicht über größere

Jochen

Datenmengen aufrufen, weil das

Jochen

wird dann halt sehr langsam, wenn man das Inhaltschleife verwendet.

Jochen

Aber um rauszukriegen, wie man

Jochen

das denn jetzt eigentlich aufpasst und dann halt

Jochen

an den Format-String zu kommen, mit dem man

Jochen

dann letztlich verwendet, für

Jochen

Strip-Time oder so, das ist super.

Jochen

Und dein Pick-Up?

Jochen

Hatte ich doch schon.

Jochen

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 auch 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

Ja, da haben wir das auch noch

Dominik

reinge...

Dominik

Ja, schön, dass ihr alle dabei seid.

Dominik

Danke, Philipp, dass du Zeit gefunden hast für uns.

Dominik

Ja, voll gut.

Dominik

Eine sehr interessante Episode.

Dominik

Ja, auch für mich sehr interessant.

Dominik

Ja, vielen Dank, dass ich dabei sein durfte.

Philipp

Wenn ich noch einmal ganz kurz

Philipp

Werbung machen darf, bei Poxine suchen wir

Philipp

immer Python-Entwickler.

Philipp

Oder was immer, aber aktuell suchen wir

Philipp

auf jeden Fall Python-Entwickler oder auch Leute,

Philipp

die mit Java oder mit JavaScript arbeiten.

Philipp

Speziell mit React.

Philipp

Also wenn ihr ein guter Entwickler seid,

Philipp

vielleicht sogar im Raum Düsseldorf

Philipp

oder auch nur ganz grob in NRW irgendwo,

Philipp

dann meldet euch bei Baboxine.

Philipp

Die Tonybox zu programmieren macht wirklich...

Philipp

Und die Dienste rund um die Tonybox zu programmieren

Philipp

macht sehr viel Spaß.

Philipp

Es ist total toll zu wissen,

Philipp

okay, jede Nacht gehen Tausende oder Millionen Kinder

Philipp

mittlerweile mit der Tonybox ins Schlaf.

Philipp

Und wir machen gute Dienste,

Philipp

die hoffentlich den Eltern das Leben einfach machen

Philipp

und dafür sorgen, dass die Kinder gute

Philipp

Geschichten hören.

Philipp

Das war die erste Werbeanzeige am Preißen-Podcast.

Jochen

Ja, aber ich kann nicht nur...

Jochen

Könnt ihr rausschneiden, falls

Jochen

ich meine... Nein, nein, nein, das finde ich super.

Dominik

Also Turnbox ist eine coole Sache.

Dominik

Ist ein schönes Projekt hier aus der Gegend.

Dominik

Ja, alles klar, dann würde ich sagen...

Dominik

Vielen Dank, Philipp. Und bleibt uns gewogen.

Dominik

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

Dominik

Morgens, mittags, abends, tags, nachts

Dominik

und zum Einschlafen ist auch immer super.

Dominik

Liebe Grüße und bis zum nächsten Mal.

Dominik

Jo. Ja, tschüss.