 Anfangen? Ja, genau. Moin moin auch von mir. Ich bin Wintermute, das ist Spitty. Genau, wir werden heute ein bisschen über Docker Hub und Bug Bounty Reden. Ich gehe mal weiter. Dafür machen wir erst mal eine kleine Einführung in den großartigen Docker-Bildprozess. Und zwar gibt es mehrere Arten, wie man nämlich Credentials in Container reinbekommen kann, also in die Images. Und das zur Laufzeit, da gibt es nämlich einmal den Gashof. Und zwar kann man hier ganz gut sehen, das gibt nämlich diese Layer. Wir sehen hier, dass jeder diese Zeile ist ein Layer in Docker und Docker nimmt halt um daraus das fertige Image zu bauen und die Layer werden halt zur Bildzeit ausgeführt und Docker speichert diese dann, damit man das Image später genau wieder reproduzierbar wieder bauen kann. Das sieht dann ungefähr so aus in Docker Hub. Da sehen wir jeden einzelnen Layer und rechts noch ein kleines Häkchen für keinen CVE gefunden, da noch eine Hash haben und wie groß das ganze Ding im Endeffekt war. Das Ganze wird auch genauso in Docker Hub abgespeichert für jeden zugreifbar, das heißt, er kann jeder das einsehen. Genau, jetzt erst, genau. Und wie kommen denn eigentlich dann die Crenches da rein? Es gibt ja mehrere Arten. Einige Leute machen es über einen Weilenvariablen, schlechte Idee. Dann gibt es andere Leute, die nutzen BuildArts, genau, das noch ein Secure Ertogen ist auch keine gute Idee. Oder halt der klassische HardCoded String geht immer, wird auch immer wieder so gemacht. Genau, die ganzen Sachen landen dann später halt in den Layern, die wir eben gesehen haben. Es gibt tatsächlich auch eine richtige Methode, man kann halt sogenannte Strict Mounds machen. Genau, dann wird nämlich so gesehen eine Datei gemountet und die ist dann auch nur zur Bildzeit zugreifbar und landet halt nicht später in euren fertigen Image. Man könnte auch natürlich auch zur Laufzeit sich einfach die Quedential zuhören, die man braucht, wenn man das nicht gerade zur Bildzeit braucht, was dann halt noch besser wäre, weil dann könnt ihr wahrscheinlich noch besseres Quedentialmanagement einbauen. Das war ein kleiner Ausblick, weil das ist nicht unsere Hauptaufgabe in diesen Talk, sondern falls ihr darüber wer wissen wollt, da gibt es noch ein gutes Projekt von OWAS, das Wrong Secrets Project. Das geht halt über alle möglichen Arten nochmal drüber, also von wie kriege ich das in Binary Rhymes, wie mache ich das in Kubernetes richtig, kann ich nur empfehlen. Da wird das alles viel besser erklärt und auch viel umfallreicher erklärt und das ist auch direkt eine Art Schulung, das könnt ihr überall mitnehmen. Genau, was sind überhaupt Github, Person Access Tokens, das ist quasi das, was wir dann später gescannt haben. Einmal kurz für euch erklärt, bieten quasi eine Alternative an, für seinen Passwort bei Github, das heißt statt den Passwort irgendwo anzugeben, kann man dieses Pad angeben und dann wirkt das wie euer Passwort. Man kann da quasi ein Ablaufdatum ranpacken, das heißt, wenn euer Passwort nicht ändern wollt, aber das Token nur für eine gewisse Zeit braucht, könnt ihr sagen, hey, 30 Tagen soll das invalidiert werden automatisch, dann wird es in 30 Tagen automatisch invalidiert und wofür werden Github-Pads quasi überhaupt verwendet, in den meisten Fällen halt für Automatisierung, so wie bei Docker-Bills zum Beispiel, dass man die da verwenden kann. Genau, was für Pads gibt es denn überhaupt bei Github? Es gibt einmal die alten Token, Github nennt sie gerne Classic Tokens. Was wir gesehen haben ist tatsächlich, dass sie meistens relativ hohe Rechte haben, weil man damit auch gar nicht so viel einschränken kann und dass die am meisten so verwendet werden, dass sie keinen Ablaufdatum haben. Github ist da immerhin so nett und warnt mit einem gelben Dreieck und sagt, hey, dieses Token hat kein Exploration Date, aber das scheint viele Leute einfach zu ignorieren und benutzen das trotzdem so. Die Classic Tokens bieten tatsächlich eine Art Weise, wie man die rechte Granula verteilen kann. Diese Granulität geht aber gar nicht so tief rein, sondern man kann nur sagen, hey, du hast auf alle meiner Repos Zugriff, aber du hast nicht nur lesend auf die Repos Zugriff oder nur schreibend genauso auf die Workflows oder Organizations, kann man nicht sagen, hey, du hast noch folgende Organisationen von mir Zugriff, sondern man geht quasi dann direkt auf alles Zugriff. Genau, es gibt auch was Neues. Github dachte, das müssen wir besser machen und neu ist immer besser. Das stimmt tatsächlich auch in dem Fall. Die haben Fine Grain Tokens eingeführt, dass genau das quasi besser gemacht worden, was bei den Classic Tokens nicht geht. Man hat eine relativ hohe Granulität. Das heißt, man kann einschränken auf Repos, wenn ich zum Beispiel 1.000 Repos habe, kann ich sagen, hey, dieser Token ist nur auf zwei Repos gültig und dann kann man auch noch sagen, du darfst nur den Code zum Beispiel lesen oder du kannst nur auf die Issues lesen zu greifen oder darfst Issues auch bearbeiten. Das haben sie deutlich besser gemacht und was da auch geht tatsächlich ist für Organizations und Enterprises zu sagen, dieses Token revoken wir von unserer Organisation. Das heißt, wenn Sie merken, irgendwann im Prozess, hey, das Ding ist abhanden gekommen oder es wurde kompromittiert, da kann man sagen, ich sperre nur dieses eine Token und dann ist es nicht mehr gültig. Das geht bei den Classic Tokens tatsächlich nicht. Da kann man nur sagen, wir akzeptieren generell keine Tokens. Genau, das haben wir jetzt überhaupt gemacht, also quasi der Sinn unseres Talks. Genau, ich habe quasi einen Scanner gebaut und dachte mir, hey, ich brauche irgendwie ein Projekt für die Freizeit und dachte, ich scann einfach mal Docker Hub und scann da mal alle Layer und guck mal, was da alles drin steht und dachte, einmal nach Secret suchen, das kann Spaß bringen und gucken, was da rauskommt. Genau, wie das geschehen ist, Docker Hub bietet quasi eine API an, da kann man sagen, bitte zeig mir mal ein paar Repos, die haben leider keine, wo man alle Repositories von denen aufzeigen kann, dass man quasi alle Images einmal durchsuchen kann, sondern man kann denen sagen, ich habe hier folgende String, gib mir mal alle Images, die da zu passen und dann wirft da einen schönen Paginated das raus und dann kann man sehen, was da alles gibt. Das heißt, ich habe ein kleines Tool geschrieben, was mir random Strings generiert, das gegen die API schmeißt, sagt, gib mir mal alle Images, die du findest, hab dann von denen jeweils die Text gezogen, das heißt und dann auch mal die Layer und da drin kann man dann nach den Secret suchen und das haben wir ja quasi gemacht, ich hab ein kleines Kranner Skript, den kann man im Rule geben, bei uns waren das schöne Regexe, das heißt, wenn man da Github Pads sucht, haben die ein schönes Format, Github hat das irgendwann mal geändert, dass sie mit einem GHP anfangen, dann kommt ein Anderscore und dann kommt eine alphanomere bis zu 36 Länge hinten dran, das heißt, man kann da sehr schön danach suchen, wir haben tatsächlich auch noch anderen Secrets gesucht, aber in dem Talk geht es erst mal primär um Github Pads. Genau, und was ich euch empfehlen kann ist, am Anfang hätte ich nicht gedacht, dass da so viele Secrets drin sind und ihr habt relativ schnell gemerkt, da kann man nicht alleine irgendwie random habhaft werden, deswegen holt euch Leute dazu, denen er vertraut, um das gemeinsam abzuarbeiten, denn das bringt auch mehr Spaß. Genau, noch ein bisschen zum Tooling, was wir benutzt haben, wir haben quasi beim Scan, haben wir, wenn wir Secrets gefunden haben, haben wir sie in den Datenbank abgelegt, haben da zum paar Meter Daten mit abgelegt. Anfangs waren es bei allen gescannten Images auch die Layer. Ich sag euch, Docker Hub hat relativ viele Images liegen, selbst wenn man nur die Layer speichert und gar nicht den Content der Images, sind das mehrere hundert Gigabyte, meine Platte ist irgendwann vollgelaufen, ein Linux-System irgendwie versuchen aufzuräumen, nachdem die Platte vollgelaufen ist, ist kein Spaß. Wir haben noch einen Trippad gehabt, wo wir uns irgendwie organisiert haben, wo wir gesagt haben, folgende Unternehmen haben wir schon angeschrieben, die haben sich zurückgemeldet, die haben sich nicht zurückgemeldet, hat sehr geholfen und schreibt auch eigenes Tooling, um euch zu helfen, das zu validieren, was ihr da überhaupt gescannt habt. Bei uns war das der Fall, wir haben ja quasi nach Tokens gescannt und deswegen haben wir uns auch in die Broken Token genannt, um später zu den Unternehmen irgendwie zu kommunizieren und wir wollten halt als eine Person kommunizieren und nicht, dass wir eine Gruppe sind, deswegen haben wir uns quasi ein eigenes Postfach dazu gemacht. Genau jetzt einmal zu ein paar Statistiken, ein paar Daten. Genau, was natürlich Interessantes, was kommt aber eigentlich alles raus, wenn man sich jetzt diese ganzen Secrets anschaut? Da haben wir einmal aufgeschlüsselt, wir sehen einmal hier die Anzahl aller Repos, das heißt wir haben knapp 60.000 Repos gehabt, auf die wir am Ende Zugriff hatten, also wir sprechen hier auf Repos von Organisationen und einmal aufgeschlüsselt auf die Rechte, die wir haben, also wir können hier sehen, die wenigsten haben darauf acht gegeben, wie viele Permissions die ihren Tokens geben, wir haben tatsächlich über, also ein Drittel knapp, wo wir halt admin Rechte hatten, beziehungsweise maintain Rechte und in der Fall konnten wir halt alles machen dann in dem Moment. Wir hätten die Organisation für uns selber weiterführen können. Polrechte sind halt auch noch sehr, sind eigentlich schon genug, damit das halt eigentlich Security Finding gilt bei der Firma, weil die haben das ja nicht umsonst privat gestellt, das Rebo, wer weiß, ob die da noch andere Hard-Codecutentials drin haben oder vielleicht wollen sie verbergen, dass sie halt alte Libraries benutzen, das wird ja auch leider häufig gemacht bei großen Firmen. Genau deswegen reicht eigentlich schon der Polrequest als Permission aus, um als Security Finding durchzugehen, aber man sieht ja, wir hätten wir auch selber Code pushen können oder halt sogar Rebos löschen können. Genau, zu den Orgas können wir sagen, das waren insgesamt 859 Stück, die mögen anscheinend alle Open Source, weil die haben sich alle zu den Schienen ihre Tokens veröffentlichen. Genau, ich hoffe mal, dass wir die Zahl nochmal wieder runterbekommen. Genau, von diesen 859 haben wir 757 angeschrieben, das lag einfach in der Natur, dass es halt oft schwierig ist, herauszufinden, was für eine Firma ob dahinter steckt, da komme ich später nochmal drauf zurück und weil der Prozess halt relativ langjährig ist, also so Firmen anzuschreiben mit, ey, ich habe hier ein Security Finding, wollte ich das angucken, meistens hört man nichts zurück. Genau, Rückmeldung gab es insgesamt acht, also acht interessieren sich tatsächlich viel ihre Gitter-Prepos. Genau, den Rest interessiert das anscheinend nicht, beziehungsweise noch einige, wo einfach ein Bounce kam, also die haben einfach ihre E-Mail-Adressen falsch angegeben, beziehungsweise man findet halt nichts und also beziehungsweise von den 57, die haben wir E-Mail-Adressen gefunden, die haben wir angeschrieben, aber nur die acht haben sie dann zurückgemeldet. Genau, dann einmal, wie sind wir vorgegangen, wenn wir halt uns entschieden haben, ey, also wir sind halt die Tokens durchgegangen, die Findings, die wir hatten und haben uns entschieden, okay, lass uns versuchen, ein Disclosure hier durchzuführen. Genau, was ist überhaupt ein Disclosure-Prozess? Wir unterscheiden da drei Arten, einmal den Responsible Disclosure, was wir quasi gemacht haben, ist, wir haben erst im Hersteller Bescheid gegeben, versucht quasi, dass Sie Ihre Lücken schließen können und erzählen danach erst der Welt davon. Die Alternative dazu ist ein Full Disclosure, das heißt, man hat jetzt erst der Welt davon und eventuell bekommt der Hersteller dann davon mit und kann das Problem fixen. Und was quasi das Schlechteste davon ist, einfach niemanden zu erzählen, weil, wenn man es niemandem erzählt, kann es quasi auch nicht besser gemacht werden. Genau, jetzt kommen wir immer dazu, wie wir Ergebnisse quasi validiert haben. Hab ja vorhin schon gesagt, baut euch Tooling. Wir haben relativ viele Secrets gescannt und Automatisierung ist ein Freund, weil bei jedem Token nachzugucken, ist der überhaupt noch valide, funktioniert er überhaupt noch, was für Rechte hatten der, ist gar nicht so einfach. Das heißt, erste Schritt war gucken, ist der Token, den ich da überhaupt extrahiert habe mit meinem Reggax, ist der überhaupt quasi noch gültig? Da bietet GitHub API's zu, kann man anfragen, die Antworten zurück, ja, der Token ist gültig. Und das zweite quasi ist, was für Rechte habe ich denn da? Da haben wir uns auch ein kleines Tool gebaut, schön visuell, man gibt dann Token oben rein und dann kann man sehen, was sind denn so die Organizations, was sind denn, kann man noch filtern, nach den Permissions da rein und sieht dann quasi die Repositories, die dann dazu passen. Kann man sagen, ja, gibt mir doch mal zu folgender Org bitte was und kann dann noch mal einschränken, die Permissions, zum Beispiel zeigt man nur Repos, die admin oder push haben und dann kann man relativ schnell sehen, was für ein Impact das im Unternehmen hätte. Ist vor allem interessant, weil wenn man Repositories sieht oder Organisationen sieht, die nur Public Repos haben und man da nur Poolrechte darauf hat, ist es meistens gewollt. Da haben wir ein paar von gesehen, wo man dachte, oh, es könnte interessant sein, ist ein großes Unternehmen, guckt noch mal genauer hin und sieht, ah, es sind nur Poolrechte in dieser Org, möglich mit diesem Token. Das heißt, die haben es ordentlich gemacht. In den meisten Fällen, was wir gesehen haben, ist es halt nicht so, als wenn er hat eben ein bisschen über die Statistiken geredet und genau, das heißt, visuell ist immer für mich zumindest gut. Ich weiß nicht, wie es bei euch ausschaut. Genau, wie war der Prozess weiter? Genau, da gehen wir nicht dazu, wie wir versucht haben, diese Firmen überhaupt zu finden. Also das Erste, was wir gemacht haben, deswegen hatten wir auch dieses Visual Tool, da haben wir mich direkt in den Link zu der Orga um Haus zu finden. Erst mal ist das überhaupt eine Firma, oder weil das eine Orga ist, muss das keine Firma sein. Das war halt auch bei ziemlich vielen so der Fall. Das waren halt oft einfach Open Source Orgas. Da haben wir auch tatsächlich, ich glaube, ja ein paar angeschrieben gehabt. Aber auf GitHub findet man trotzdem halt Meterinformationen, oft ist ein Link hinterlegt. Also hier, das ist unsere Firma oder halt auch eine E-Mail Adresse ist hinterlegt. Die muss nicht immer richtig sein, nur so als Tipp. Es kann auch einfach sein, dass die Firma aufgekauft wurde und jetzt in einer größeren Firma einfach lebt, aber sie haben ihre Informationen nicht geupdatet. Deswegen könnte man sich auch noch mal die E-Mails von Commit an anschauen. Das Problem ist halt, wenn die Firma kein Prozess hat, dass nur Angestellte in der Orga auch drin sein dürfen, also mit ihrer Firmen-E-Mail, dann findet man in den häufigsten Fallen eigentlich gmail.com und gmail.com-Adressen anzuschreiben. Da weiß man nie, wo man dann in den Landet kann sein, dass es diesen Account nicht mehr gibt oder den jemand schon anderes hat. Das andere, was man machen kann, ist natürlich das Internet zu durchsuchen. Ja, okay, du hast halt ein Orga-Namen, dann einfach mal eine Suchbox geschmissen und gucken, was kommt dann in der Rauß. Ja, oft kommt halt einfach Quatsch raus. Oft kommt auch andere Sachen raus, zum Beispiel Konkurrenten oder Ähnliches, weil die heißen alle auch gefühlt dann immer gleich, gerade bei so einigen Bereichen, gerade bei auch Kryptogramm, die heißen alles mit Krypto am Anfang dann oder irgendwas mit X irgendwo. Genau, deswegen sind wir dann auch nachher noch mal systematisch durchgegangen. Wir haben angefangen, halt so typische E-Mail-Adressen anzuschreibende, Infos, Tales, Atmen. Irgendjemand wird ja schon dahinter sitzen. Genau, das Gute war, es gab auch tatsächlich ein paar Firmen, die das vorbildlich gemacht haben. Es gibt welche, die hatten Backbound-T-Programm, wo wir das einspielen konnten. Auch wenn das Out-of-Scope normalerweise ist, haben sie es angenommen. Zwei Firmen hatten sogar eine Security-TXT, ein sehr großes Lob da. Da konnten wir halt direkt sehen, was ist denn überhaupt deren Disclosure-Prozess? Hat mich aber gewundert, dass es echt noch so selten ist. Genau, da gab es noch einige, die hatten halt irgendwo versteckt im Untermenü ihr Backbound-T-Programm, was in irgendeinem so ein Iframe war, was in einem abgestürzt ist. Danke dafür. Das hat mir gar nicht geholfen, aber die habe ich dann halt über das Backbound-T-Portal im Video gefunden. Genau, da will ich nochmal drauf eingehen. Gerade die Security-TXT, das waren halt immer so ein Ding, die Firmen haben wir noch wirklich zurückgeschrieben, wenn sie das hatten, weil wenn sich halt eine Firma um Security kümmert und eine Security-TXT hat, dann hat sie wahrscheinlich schon fertigen Prozesse dahinter. Deswegen auch hier nochmal, falls ihr irgendwo arbeitet, versucht das doch mal bitte reinzubekommen. Das hilft Leuten wie wir uns enorm. Man muss auch nicht viel machen. Das reicht eigentlich. Kontaktadresse und bis wann ist denn diese Security-TXT gültig? So, dann warum ist das X-Buyers wichtig? Ja, dann weißt du, dass der Prozess auch eingehalten wird bei denen. Die haben halt so ein ständigen Prozess, dass sie auch wirklich gucken, dass das funktioniert bei denen. Genau, dann die Erfahrungen, die wir gemacht haben mit den Firmen, die wir versucht haben, oder auch die Open Source Organisation, die wir versucht haben, anzuschreiben. Genau, was wir vorhin schon gesehen haben, die meisten antworten einfach nicht. Warum auch immer? Die E-Mail versinkt oder bounced einfach. Keiner hat sich jeder umgekümmern, dass man irgendwie einen öffentlichkeitswirksamen E-Mail-Adresse irgendwo hinterlegt hat. Das ist halt einfach so. Wenn die Firmen aber geantwortet haben, dann war es immer positiv. Also es hat keine Firma uns irgendwie gedroht oder mit Klagen gedroht oder irgendwas. Sondern die waren immer positiv, haben sich bedankt. Waren auch recht schnell dabei, das dann auch zu fixen tatsächlich. Aber in Entwicklung war es dann halt doch ein bisschen zu viel. Also haben wir dann auch den Kontakt mit GitHub aufgesucht, ob die uns dann nicht helfen können. Spoiler nicht. Sie haben uns nicht geholfen. Andere Token sind halt einfacher, natürlich sparen zu lassen, dadurch, dass sie nicht so... Ja, dadurch, dass es einfacher ist, herauszufinden, wer dafür verantwortlich ist. Bei AWS gibt es zum Beispiel eine gute Theorie. Die Theorie haben wir versucht zu überprüfen, funktioniert nicht und zwar einfach, die Tokens in ein Publik repo zu schmeißen. Und AWS kümmert sich schon darum. Wir haben das tatsächlich versucht, nach einer Stunde, nach zwei Stunden, nach drei Stunden ist nichts passiert. Dann haben wir versucht, AWS dann zu schreiben, ohne viel Glück. Mal gucken, was wir da als Nächstes machen. Genau, das andere Problem ist, dann versuchen sie, den Token zu löschen irgendwie. Das Problem ist, aber die haben irgendwie Infrabots und die pushen das alle fünf Minuten. Also ist der Token dann wieder da. Auch ganz lustig. Und wir haben tatsächlich häufig aus Branchen gesehen, was ich mir damit erklären kann, dass die wahrscheinlich oft jüngere Leute einstellen, oder Leute mit wenig Erfahrung in Security. Also bei uns waren das halt die Crypto-Exchanges, Biotech, AI und Unis, die halt sehr häufig darunter waren, dass die halt ihre Tokens irgendwie mitveröffentlicht hatten. Und noch etwas Schönes, was man sieht, wenn man sich halt die Userinnen ansieht. Freelancer und Beraterinnen, die hopsen ja von Firma zu Firma und die invalidieren halt ihre Tokens dann nicht. Das heißt, die machen halt, dass die Security-Probleme größer dadurch, dadurch, dass sie halt immer mehr Zugriff gewähren, dann. Genau, kommen wir dann zu den Fuckups. Genau. Das war's, was ich vorhin schon erwähnt habe. Achtet auf eure Festplatte. Docker Hub ist sehr groß. Habt ein bisschen Metriken, habt ein bisschen Alarming drauf. Wenn etwas schiefläuft, das euch irgendwie irgendwas anpingt und sagt, hey, da funktioniert irgendwas nicht. Du sollst vielleicht gucken, was du da so für Unfunk getrieben hast. Genau. Überlegt euch vorher eine Tabellenstruktur, wenn ihr Daten irgendwie in den Daten mal ablegen wollt. MVPs gehen immer in Produktion. Im Nachhinein hätten wir uns gedacht, ein paar andere Metadaten werden vielleicht noch hilfreich oder andere Status-Meldungen werden vielleicht noch hilfreich, die uns beim Abarbeiten helfen, um uns zu organisieren. Wie gesagt, der erste Schlag ist meistens nicht der beste. Und APIs mit Pagination ernst nehmen. Wir haben das erste Mal, als wir gescannt haben, um geguckt zu haben, wie viele Repos waren denn da überhaupt von Betroffen. Und das war halt dann relativ gering. Und wir dachten uns, hey, wie kommt das zustande? GitHub hat Pagination. Das heißt, er ruft alle Pages ab. Ah ja, und vergesst eure Stärklerung nicht zu machen, wenn man gerade Bockbonti macht. Denkt auch daran, irgendwie Rücklagen zu bilden. Genau. Was können Firmen eigentlich besser machen? Genau, ich habe das eben schon ein bisschen erwähnt. Security XT. Also sehr wichtiges Konzept. Auch wenn es sehr einfach ist, es hilft einfach enorm. Selbst wenn ihr das halt zu einer fremden Firma ausgelagert, also wir hatten noch viele, die das dann zu einer anderen Security Firma ausgelagert haben. Es ist genauso gut, wenn ihr halt nicht das Know-how in euren Firmen habt oder Orgas, also auch wenn es eine Open Source Orga ist, vielleicht kriegt ihr dazu, dass eine andere Security Firma sich das anschaut. Hauptsache, jemand sitzt dahinter und antwortet auch. Das ist das Wichtigste dabei. Wenn die Person so ein bisschen damit überfordert ist, dann kann sie das halt wie gesagt in einer Firma auslagern, aber es reicht auch erst mal, wenn einfach jemand antwortet und versucht, das irgendwie zu verarbeiten. Ganz egal wie. Hauptsache, niemand merkt, dass da nichts passiert und geht dann halt zu dem Full Disclosure über, dass wir halt das Schlimmste dann für diese jeweilige Firma, was natürlich gut für die Wäldern ist, weil dann wird es halt sicherer. Aber wer weiß halt, was die Daten dahinter stecken. Genau, das habe ich ja gerade erwähnt. Wenn das Recht Partnerin reicht. Also muss halt nicht unbedingt jemand mit nach Hause sein. Wenn es geht, dann ja. Wenn nicht, reicht halt einfach irgendjemand in dem Moment. Das Schulen der Mitarbeitung ist ganz wichtig. Alles, was wir gesehen haben, das waren einfach Leute, die nicht wussten, dass halt Sachen im Layer auch mit auf dem Docker Hub liegen. Das ist einfach das. Und es hat ihnen einfach niemand gesagt. Und genau, da sollten halt einfach die Leute besser unterrichtet werden. Das Offboarding aus den GitHub Orgas. Das hatte ich ja von erwähnt. Die Leute, die halt von Firma zu Firma springen, die nehmen den Token auch nicht von alleine invalidieren. Also schmeißt die Leute aus euren Orgas. Ansonsten kann die nächste Person, die die einstellt, euch eine Sicherheitslücke in eure Firma mit reinbringen, nur weil sie halt ihre Tokens nicht expired oder invalidieren lässt. Genau, Pads müssen ablaufen. Das könnt ihr organweit einstellen. Das ist ganz wichtig. Oder halt, wie ich vorhin schnell erwähnt habe, nimmt die neuen. Das Gleiche gilt natürlich nicht nur für Pads, sondern auch für andere Token von anderen Firmen, wie bei AWS zum Beispiel. Ihr könnt halt dafür sorgen, dass die Dinger ablaufen. Genau, dann haben wir noch ein paar Tipps für euch. Sucht euch ein Team. Macht es nicht alleine. Es bringt mehr Spaß, wenn man das mit Personen zusammenmacht, die man irgendwie ein bisschen Spaß haben kann, Firmen anschreiben kann, ein paar Gags austauschen kann, wie sie quasi geantwortet haben oder auch nicht geantwortet haben. Genau, wir haben uns quasi schon... Also ja, genau. Wir haben halt immer darauf geachtet, dass wenn wir Firmen das erste Mal anschreiben, dass wir halt immer denselben Text verwenden. Einfach nur, weil wir den einmal vorzusammengeschrieben haben, damit Firmen sich nicht angegriffen fühlen von unserem Text. Damit sie halt nicht negativ darauf reagieren. Wir haben halt darauf geachtet, Sprache muss klar sein, nicht zu viel Informationen preisgeben, weil, wie gesagt, es ist schwierig zu erkennen, ob wirklich die Firma auch dahinter steckt, an die man das melden will. Man weiß auch nie, auf welchen Wegen diese E-Mail dann in dieser Firma oder dieser Orga den Weg geht. Also, weil wir sprechen ja hier von Informationen, die halt schon eigentlich eher einen kleinen Kreis zu verfügen gestellt werden sollten. Das heißt, wenn diese E-Mail sich mal weitergeleitet wird und ihr habt da direkt als erstes den Token drin, dann ist das Token nochmal ein paar Mal mehr dupliciert worden und steckt in irgendwelchen Posteingängen fest. Dann wird es halt noch schwieriger dann für das Security-Team im Hintergrund. Wir haben auch hier immer ein kleines Foto eingefügt gehabt, wo wir halt dieses Tool, was wir euch vorhin gezeigt haben, so einen kleinen Ausschnitt gezeigt haben. Hier heißt übrigens das Rebos, die Rebos, von denen wir sprechen, und die Organisation. Und das sind ungefähr die Zugrechte, die wir haben. Nur, damit Sie wissen, um was es geht. Wir haben zwar reingeschrieben, es geht um GitHub und Co., aber so ein Foto sagt dann doch meistens mehr aus. Genau, und wir haben halt auch versucht, auf unseren Texten nochmal hinzuweisen, weil diese Texte haben wir halt nur geschrieben, es gab kein Backbound-Programm, was halt meistens daraus resultiert, dass es ein Security-TXT gab. Haben wir nochmal reingeschrieben, bitte sorgt dafür, dass es ein Security-TXT, da wissen wir, wo wir hinschreiben können. Weil diese E-Mail ging meistens raus an eine Info-Add oder Datenschutz-Add oder Privacy-Add oder irgendwas. Und die Person wusste wahrscheinlich nichts damit anzufangen. Deswegen haben wir auch unten auch immer noch dazugeschrieben. Übrigens wäre es cool, wenn du nicht dafür verantwortlich bist, leidet doch diese E-Mail an die verantwortliche Person weiter und mit der erzähle uns, wie du zukünftig mit uns kommunizieren willst. Weil einige haben uns dann tatsächlich auch zu ihrem Backbound die Programm eingeladen hinterher. Weil sie dann doch einen Programm hatten. Oder die haben uns dann halt, einmal hatte ich das, da wurde ich halt von fünf Firmen weitergeleitet, weil die Firma fünfmal aufgekauft wurde und sich in der Zeit fünfmal die Domain geändert hat. Wo ich am Ende irgendwo bei einer riesigen großen Firma gelandet bin und die hatten auch mal einen Prozess dafür und so, oh ja, hier Backbound die, da laden wir dich ein. Deswegen, wie gesagt, wichtig, dass da nicht in dieser E-Mail alle Infos drinstehen, weil wer weiß, wo das Ding seine Runden macht. Genau, dazu, ja, ja. Genau, benutzt ein VPN-Server ist immer sehr gut, damit da nicht unbedingt eure IPs mit assoziiert werden. Sie ja auch darfst hacken, du musst sich nur nicht erwischen lassen. Und es hilft auch später beim Validieren der IPs, was wir tatsächlich gesehen haben, ist, dass wenn wir angeschrieben worden von Firmen, die dann diesen Token irgendwann invalidiert haben, die wussten natürlich selber nicht, die waren teilweise Monate, Jahre irgendwie auf Docker hab gelegen. Und was man tatsächlich machen kann, ist GitHub anschreiben und sagen, hey, gib mir doch mal ein paar Zahlen, Daten, Fakten dazu. Wer hat wann diesen Token benutzt? Für was wurde er verwendet? Von welchen IPs wurde der verwendet? Und das haben wir tatsächlich auch bei dreien der Firmen, denen wir das gemeldet haben, durchgespielt. Die haben zurückgeschrieben, haben gesagt, hey, folgende IP-Ranges haben wir, haben irgendwie das letzte Octet weggeschnitten. Die Wortnen gehören dir irgendwie zu euch. Kennst du die? Und dann waren das tatsächlich wieder VfB-Anbieter von uns oder die Domestic IP, die man eindeutig zu Wortnen konnte oder einen Server, von dem wir automatisch gescannt haben. Und es hat den Firmen auch geholfen, quasi um im Nachhinein überhaupt sagen zu können, ja, dieser Token wurde nicht anderweitig missbräutlich verwendet, sondern ist tatsächlich nur da gelegen und niemand hat ihn vorher sich angeguckt. Genau, und dokumentiert eure Zugriffe hat uns auch sehr geholfen, dass wir relativ viel dokumentiert hatten, zwar nicht alles, aber zumindest wann war zumindest der erste Request von uns, weil das automatisiert war und das quasi in der Datenbank mit abgelegt wurde, konnten wir dann sagen, hey, ab diesem Datum waren wir das quasi, sag uns doch mal, alle Request, die nach diesem Datum gekommen sind, dann können wir die IPs dazu zuordnen. Alles davor werden wir nicht gewesen sein. Das heißt, dokumentiert das, am besten alle eure Request. Das haben wir nicht gemacht, das ist ein Learning für uns, aber zumindest hat man den ersten dokumentiert. Genau, uns seit beide Kommunikationen immer offen und höflich und haltet, wenn ihr schon den richtigen Kontakt habt, keine Informationen zurück. Die Firmen sind immer sehr dankbar. Je mehr man denen Informationen liefert, desto besser lässt sich auch mit denen zusammenarbeiten. Teilweise waren das Wochen monatelange Prozesse mit denen, wo man immerhin einen Haping-Pong spielen musste, weil die, wie gesagt, einige hatten den Prozess intern, andere nicht und je mehr man den helfen konnte, haben sie quasi auch zurück geantwortet. Genau. Genau, ein anderes künftes Learning ist, fängt nicht eine Woche vor an, das hier zu machen. Wir haben nämlich das dann tatsächlich in den letzten Wochen noch mal hingesetzt und haben gemerkt, oh, auf einmal sind 300 neue Sachen drin, gelandet in der Datenbank und haben dann angefangen, gut, jetzt müssen wir erstmal die Daten nochmal saubern. Das hat tatsächlich einen ganzen Tag gedauert, ich glaube 16 Stunden oder so, saßen wir da und haben die nochmal auseinandergezogen, die Daten. Genau. Lass dich überreden. Ich glaube, da sollte eigentlich nicht stehen. Aber egal, das ist auch eine gute Idee. Lass euch überreden, einen Vortrag zu halten. Das gab es heute auch schon genug Talks. Ich habe das nicht durchgestrichen. Ach so, das hast du durchgestrichen, sehr gut. Warum nicht? Gerade wenn ihr ein interessantes Thema habt, ich meine, das war jetzt auch halt so ein Ding, was wir halt mal so am Wochenende gemacht haben und haben gemerkt, okay, das können vielleicht andere Leute interessieren. Genau. Das war halt nur Docker Hub. Es gibt noch 10.000 andere Registries, die nicht durchgescannt haben. Es gibt ja auch nicht nur Docker Hub. Wir sind ja nicht die ersten, die auf die Idee gekommen sind, sondern Leute haben ja schon Pip durchgescannt oder auch Maven oder you name it, irgendein Archiv, wo Leute halt ihre fertig gepackten Sachen hochladen, die aus Code generiert sind. Da kann ich mit euch auf jeden Fall wetten, da wird auf jeden Fall was liegen. Wie gesagt, Bons tuteln ja auch immer noch neue Sachen ein. Und jeden Tag was Neues rein. Ja. Kommen wir auch schon zum Schlusswort. Genau. Was wir uns halt eigentlich wünschen würden, ist halt, dass Firmen da mehr in die Verantwortung tatsächlich gezogen werden müssen. Docker Hub muss hier besser werden. Ich frage mich, warum Docker Hub nicht selber eigentlich Secret Scanning betreibt auf ihren Layern. Ich meine, GitHub macht das auch. Warum machen die das denn nicht? Keine Ahnung. Wir machen das. Sehr schön und gut, dass da ein grüner Haken für CVE Scan ist, aber das heißt ja immer noch nicht, dass das Ding einwandfrei ist. Vor allem, weil bis vor kurzem war es auch nur ein, du hast kein Lock for Jay, zwei Haken. Firmen, wir müssen ihre Entwickler an besser schulen. Wie gesagt, diese ganzen Fehler passieren eigentlich nur, weil die das nicht wissen. Das ist ja nicht so, dass sie es mit Absicht machen. Außer natürlich, sie wollen ihre Firma irgendwas heimzahlen. Wir müssen noch die Leute über credentialen Management besser schulen. Auch schon am besten, also früh wie möglich. Auch weil das halt einfach auch nicht in den Unis gelehrt wird oder auch in der Ausbildung nicht. Und genau, schreibt keine Blocks mit falschen Credentials Handling. Leute copy-passen einfach. Und ich habe auch aus Reingecker heute Morgen einfach mal ChatGbt gefragt, wie soll ich eigentlich Credentials in Docker händeln. Und dann meint ChatGbt ja, macht doch voll easy. Genau. Dann auch von uns halt Backbond die Handling macht halt sehr viel Spaß, kann ich nur empfehlen. Das bin ich ja genauso. Fängt halt klein an, sucht euch irgendwas Nischiges, dann werdet ihr auf jeden Fall was finden. Das geht auch relativ schnell. Firmen, die auch Backbond-Tipp-Programme haben, sind halt immer sehr freundlich. Genau. Also ich glaube nicht, dass da der Liquid liegen bleibt. Ich glaube, das war es, ne? Genau, das war es. Gibt es Fragen? Ich habe mal kurz die Frage, wie wir hier sind mit Docker Hub Rate Limits umgegangen. Das sind gute Anekdote. Ich glaube, die haben theoretischen Limit von 180 Rigfest oder so die Minute. Wenn man Account hat, sind die ein bisschen höher. Ja, wir haben einfach uns an die Limits gehalten, tatsächlich. Wir haben uns in der Minute genau nur diese Anfragen gemacht und da halt nur so und so viele Rigfest gegen Haut. Wobei ich weiß nicht genau, wie Docker Hub ihre Rate Limits bemisst. Wir hatten immer wieder Probleme, dass wir doch in die Limits reingelaufen sind, obwohl wir quasi in unserem Code definiert haben, hey, haltet euch an die Limits. Wir haben uns einfach tatsächlich dran gehalten. Und das sogar bei zwei verschiedenen Implementationen. Also ich glaube, wir haben es am Ende auf 100 darunter schrauben müssen, damit es so geklappt hat. Eine andere Idee wäre natürlich gewesen, die 170 oder 180 einfach höher drehen können oder mehrere Accounts. Aber soweit sind wir nicht gegangen, weil für uns war das so in Ordnung und es kam auch so schon genug, dass wir nicht mehr gebraucht hätten. Genau, wir haben, glaube ich, irgendwie 4 Millionen Images gescannt und dazu jeweils noch die Text. Und das mit den Limits hat vollkommen ausgereicht. Ja. Weitere Fragen. Hi, ich dachte, ich gehe mal ins Fragen-Mikro. Hier sind Fragen-Mikro für alle weiteren, die Sie in den Kommentaren gefragt haben. Habt ihr bei den Firmen, die ihr angeschrieben habt, noch mal überprüft, ob die das nicht still und heimlich so ein bisschen unter den Teppich gekehrt gelöst haben? Und wenn ja, wie viele waren das so? Also die, die zurückgeschrieben haben und gesagt haben, sie haben es gefixt, da haben wir tatsächlich geguckt, ob sie es auch gefixt haben. Bei den Firmen, die nicht zurückgeschrieben haben, da habe ich bis jetzt nicht gesehen, als einer von denen das tatsächlich gefixt hätte. Also bei mir in den Statistiken, auch auf viele von denen, die seit eine Woche oder so sagen, ja, wir haben es gesehen, wir kümmern uns drum. Da ist es immer noch drin. Okay, krass, danke. Es gab eine Firma, die tatsächlich das still und heimlich gefixt gehabt hat, sich aber im Nachhinein, wie die Wochen später erst gemeldet und gesagt, apropos, wollen wir noch mal kurz drüber reden, was tatsächlich passiert ist. Mehr Fragen? Keine. Super. Danke euch.