Opa erzählt vom Krieg

Herzlich willkommen auf mthie spaces.Um gleich die erste Frage zu klären: »mthie« wird wie »empty« ausgesprochen 😉Ich poste hier komplett meine private Meinung und zeige auch ein paar meiner Arbeiten. Ach ja, der Name ist wirklich mein eingetragenes Markenzeichen.

Passwort-Pflege im Nachhinein ist anstrengend

      ca. 5 Minuten Lesezeit  

Ihr kennt das Dauerbrenner-Thema: “Passwörter”. Da gibt es verschieden Arten Anwender und wie sie es mit Passworten so handhaben:

Ein Passwort für alles

Es ist der schlimmste User, den man sich vorstellen kann. Ein Standard-Passwort für alles, sei es das E-Mail-Postfach, Online-Banking (wahlweise dort mit dem Geburtsdatum als Login-Pin) oder in jedem Online-Shop. Hauptsache man kann es schnell tippen, egal ob auf dem Handy oder der Computer-Tastatur. Und jeder im Freundeskreis kennt das Passwort, weil es natürlich auch das geteilte Netflix-Konto-Passwort ist.
An der Stelle sollte eigentlich erst das WLAN-Kennwort statt Netflix-Konto-Passwort stehen, aber dieser User ändert sein vom Provider vorgegebenen Wifi-Schlüssel erst gar nicht.

Heißt aber auch: fällt dieses Passwort von irgendeiner Billo-Website runter, kann sich ein Angreifer bei jeder anderen Website, wo dieser User registriert ist, easy einloggen.

“Warum sollte ich da ein Problem haben?” Fragt gerne mal den Steam-Support (das sind die, die wahrscheinlich einen Großteil eurer Spiele und damit auch Zugänge zu selbigen verwalten). Wie oft ich inzwischen von Menschen gehört habe, dass ihr E-Mail-Accounts gehacked und dadurch andere Accounts übernommen worden sind, obwohl sie nur überall das selbe Passwort verwendet haben. Nein, das war kein Hack, das ist einfach eure eigene Dummheit und durch diese Dummheit konnte man ganz simpel ausnutzen!

Drei verschiedene Passwörter

“Ich will ja sicher sein, deshalb hab ich 3 verschieden Passwörter”. Brüller! Je nach angefragter Sicherheit der Website (“dieses Passwort braucht noch ein Sonderzeichen”), wird das passende Kennwort verwendet. Und beim Login werden dann alle 3 Varianten einfach durchprobiert.

Das “Hacking-Problem” wie beim Ein-Passwort-für-alles-Nutzer wird hier verkleinert, aber die Chance ist trotzdem noch 1 zu 3.

Drei verschiedene Passwörter in einer Excel-Datei

“Ich kann mir nicht merken, welches Passwort ich wo benutzt habe, deshalb hab ich eine Excel-Datei auf dem Desktop liegen, in der alle Passwörter den Webseiten zugeordnet sind.” 🙄
Hierzu muss man eigentlich gar nichts mehr sagen. Hier ist am Ende eigentlich auch egal, wieviele verschiedene Kennwörter es sind, die Excel-Datei ist hier eigentlich noch die größte Unsicherheit.

Die Hacking-Chance ist keineswegs gesunken zum vorherigen User-Typ.

Schema-Passwörter

Dieser User hält sich für besonders schlau, ist es aber nicht. Dieses Schema besteht dann gerne aus dem Namen des ersten Haustiers, dem Namen der Seite und einer Zahl, die man irgendwie sich selbst zuweisen kann. Also sowas wie “WuffiOttoVersand2022”. Das hat ungefähr die Sicherheit wie bei den Ein-Passwort-für-alles-Usern. Hat man das Schema herausgefunden, kommt man easy in alles rein.

Passwort-Manager mit generierten Passwörtern und sicherem Master-Passwort

Das hier ist der natürlich genau das, was jeder User haben sollte: Auf jeder Website ein anderes, von einem Computer generiertes, Passwort mit einer Mindeslänge, Sonderzeichen und wenn möglich: Nicht so einfach eintippbar. Der Benutzer kommt am Besten weiter, wenn er seine Passwörter gar nicht kennt und sie einfach nur aus dem Passwort-Manager kopiert und im passenden Login einfügt. Wenn der Passwort-Manager dann richtig gut ist, löscht er das Passwort nach einer einstellbaren Zeit auch wieder aus der Zwischenablage, damit man es nicht versehentlich woanders einfügt und abschickt, wie z.B. in Chats.

Soweit zum Vorwort. Nein Scherz.

Ich bin eigentlich seit langer Zeit ein Fan von letzterer Variante. Erst mit Keepass (heute eher KeepassXC) als Software, aber die war mir immer zu lokal. Der Sync über Web-Festplatten wie Dropbox oder ähnlichen Tools, damit man die Datenbank auch auf dem Handy hat, war mir immer zu umständlich und teilweise instabil. Geht mir bis heute so.
Danach kam Cloudkeys, ein ursprünglich von Knut und mir 2013 (?) geschriebener Web-Passwort-Manager, der die Daten für damalige Verhältnisse sicher gespeichert hat. Selbst wir hatten keine Möglichkeit, auf die Daten anderer User zuzugreifen oder auf unsere wenn wir das Passwort vergessen hätten.

Allerdings, und das muss man wirklich deutlich zugeben, haben wir zu wenig Zeit darin investiert, das Tool weiterzuentwickeln. Job und so, ihr kennt das. Deshalb hab ich lange Zeit nach einer guten Lösung Ausschau gehalten, die sicher genug ist, aber die die Daten nicht zentral bei einem Anbieter lagert, wie bei LastPass oder 1password. Allerdings rauschte durch meine Mastodon-Timeline immer mal wieder Bitwarden. Eine Lösung, die es zwar auch zentral bei einem Anbieter gibt, aber die man auch selbst hosten kann und die OpenSource ist.

Was soll ich sagen: Find ich gut. Sie hat auch Features wie TOTP, sodass man keine Software wie Google Authenticator für eine Zwei-Faktor-Authentifizierung braucht. Außerdem Browser-Extensions, die den Manager direkt in den Browser integrieren. Die restlichen Features lest ihr bitte selbst nach.

Aufräumen ist angesagt

Wenn man seine Daten von einem Passwort-Manager zum Anderen kopiert, hat man ja vielleicht schon mal etwas Arbeit, aber das hält sich in Grenzen. Viel schlimmer wurde es, als ich die über 15 Jahre gesammelten und gespeicherten Passwörter aus meinem Browser importiert habe. Und ja, hier ist das große Problem: Ich war 15 Jahre lang sehr faul. Der Großteil der Accounts war sinnvoll mit Passwort-Manager und generierten Passworten angelegt. Aber eben nicht alles. Manchmal musste es schnell oder auch am Handy gehen und dann wurde ich zum Drei-Verschiedene- Passwörter-Typen. Ganz schlimm. Und ich schäme mich wirklich dafür.

Natürlich sammeln sich in der Zeit auch viele Logins von Portalen an, die es schon gar nicht mehr gibt. Und für mich war dieser Umzug der Zugangsdaten jetzt eine gute Gelegenheit, alles mal aufzuräumen. Dass Bitwarden mir auch eine Übersicht bietet, wenn ein Passwort mehrfach verwendet wird, hat mir richtig viel Arbeit beschert. Ich glaube, ich habe mich in den letzten Tagen bei mehr als 100 Portalen angemeldet (oder zumindest versucht), um dort die passenden Passworte auf Stand zu bringen und dafür zu sorgen, dass keins der “Standard-Passwörter” mehr überlebt hat.

Daraus folgte dann natürlich auch das große Sterben der Einträge. Von den 1383 aus dem Browser und 412 aus dem alten Passwort-Manager importierten Einträge wurden 430 bereinigte Einträge in der Passwort-Datenbank mit frischen Zugangsdaten. Wo es möglich und noch nicht geschehen war, hab ich natürlich auch direkt mal die 2-Faktor-Authentifizierung aktiviert. Es gab inzwischen deutlich mehr Portale, die es unterstützen, als mir bekannt war, aber Bitwarden hat mir direkt mal davon erzählt.

Außerdem habe ich im Browser auch direkt mal alle gespeicherten und synchronisierten Passwörter gelöscht. Ich hab das Backup ja eh, also kein Verlust und meine Daten werden nicht unverschlüsselt “irgendwo” gespeichert.

Wenn ich mir vorstelle, dass dies eigentlich fast jeder Mensch mal machen sollte, wird mir direkt schlecht. Und ich denke, ich habe schon eine gute Passwort-Haltung mit leichten Lücken betrieben. Wie sieht das erst bei Otto-Normal-User aus?


TikTok-Moderation soll diskriminieren

      ca. eine Minute Lesezeit   Read in English

Habt ihr bereits einige Follower auf TikTok? Vielleicht bist du sogar eine kleine Berühmtheit? Na dann seid ihr wohl weder übergewichtet, arm oder unansehnlich - wie auch immer man das alles definieren möchte.

Auf The Intercept sind interne Richtlinien für Moderatoren von TikTok veröffentlich worden, die wohl belegen, dass die chinesische Plattform absichtlich hübsche, reiche, schlanke - also was man irgendwie so in diversen Köpfen als attraktiv beschreibt - bevorzugt und höher geranked werden, um mehr Menschen anzuziehen und auf der Plattform zu halten.

Nun gut, das spiegelt genau das wieder, was jeder auch schon auf Instagram wahrnimmt.


Hört auf, NodeJS und NPM zu nutzen!

      ca. 4 Minuten Lesezeit   Read in English

Es ist einfach nicht mehr lustig!

Letzte Woche hat das Paket Node-IPC eine Dependency bekommen, die einfach mal nach Erkennung einer russischen IP des Nutzers Dateien von der Festplatte löscht und eine Datei auf dem Desktop anlegt, um gegen den Krieg zu demonstrieren.

Der Entwickler hat wohl nach “einigen” Beschwerden, wohl auch von NGOs, ein paar Pizzen und Besuch von der örtlichen Polizei bekommen. Natürlich hat er nicht in einem Commit die Abhängigkeiten entfernt, sondern einfach ein Force-Push auf den Master auf einen alten Git-Stand gemacht. Nicht, dass in 2 Jahren noch jemand weiß, was für einen Scheiß er gebaut hat.
Die Härte ist aber: Die Version 11 ist noch im NPM-Repo. Wahrscheinlich kriegt er das da nicht raus. Man hat also eine Malware in NPM, aber keinen Code mehr dazu. Freude!

Aber warte, das ist noch nicht alles!

Jetzt kommt ein Github-User namens qpwo um die Ecke und baut einfach mal eine andere Malware für Node, die mal eben alle SSH-Keys des Users veröffentlicht. Warum? Um zu zeigen, was für ein Müll NPM ist und wie “toll” es ist, dass die Funktion um Schadsoftware zu melden einfach wirkungslos bleibt. Sie ist zwar da, aber seit Tagen passiert einfach nichts. Wahrscheinlich kamen da zu viele Tickets zum Thema rein und es war einfacher für Github bzw. Microsoft, also die Eigentümer von NPM, die Augen zuzumachen, statt stärker gegen Malware vorzugehen.

Aber ich muss NodeJS nutzen!
Na, ich hoffe doch, da steht niemand neben dir, der dich dazu zwingt. Aber wenn das Kind jetzt in den Brunnen gefallen ist, lass NodeJS bitte nur noch und ausschließlich in einer sicheren Umgebung wie irgendwas Container-mäßigem laufen. Darin solltest du aber natürlich keine Secrets haben, denn die nächste Malware kommt um die Ecke und schiebt nicht nur SSH-Private-Keys, sondern auch alle ENV-Variablen dazu irgendwo hin - außerhalb deiner Kontrolle.

Mich stört ein bisschen, dass wir inzwischen in Dependency-Höllen angekommen sind. Es ist ja nicht nur NPM, sondern jede moderne Sprache, die Abhängigkeiten von Abhängigkeiten von Abhängigkeiten braucht und vor der ersten Nutzung erstmal das halbe Internet runterlädt. Erst neulich baute eine Kollegin für ein reines HTML/CSS-Projekt zwei Linter ein: ESLint und Stylelint (+ Stylelint Config Standard). Die Dinger haben 462 Abhängigkeiten installiert. 462! Es ist so kaputt!

Im Reality-Check gibt es ja für normale Entwickler keine Möglichkeit mehr, irgendwem zu vertrauen. Welche Firma, außer der wirklich großen, nimmt sich denn die Zeit, die Abhängigkeiten denn wirklich zu reviewen oder zumindest zu überfliegen?
Und jeder der bei github Repositories mit Node-Paketen liegen hat, weiß auch, wie oft ein Pull-Request vom dependabot reinkommen, die einen darauf hinweisen, wieviele Sicherheitslücken man gerade wieder rumliegen hat.

Das Ökosystem ist so kaputt, aber mich wundert nicht mehr, dass Fefe sich nur noch über das Argument tot lacht: “Softwarefehler, kann man nix machen!”

Update: In der Readme des absichtlichen Malware-Packages wird zusätzlich davon abgeraten, Docker zu verwenden, da es zu viele break-out-Schwachstellen gibt, sodass jemand, der dir wirklich Schaden zufügen möchte, das auch schafft.

2. Update: Markus fragte auf Twitter, was man denn jetzt tun könne. Gute Frage! Wie schon geschrieben, müsstet ihr jetzt theoretisch anfangen, alle Abhängigkeiten zu reviewen. Oder selbst bauen, mit den passenden Folgen - also keine Pflege, Sicherheitslücken, usw. Könnt ihr nicht? Tja, das ist jetzt doof.
Am Ende ist die Antwort wie bei euren Hosting-Providern: Vertrauen. Also nicht unbedingt blindes Vertrauen. Sowas kann man als Entwickler auch sehr schnell verlieren. Und wenn ein Paket unzählige Abhängigkeiten hat, geht erstmal davon aus, dass die Entwickler der Library oder des Frameworks keine Ahnung hatten, was sie da tun. Dieser Beitrag dient am Ende nur dazu, die Aufmerksamkeit zu erhöhen für die Probleme, an die man selbst vorher nicht gedacht hat.

3. Update: Ursprünglich hatte ich geschrieben, dass die Malware-melden-Funktion auf NPM entfernt wurde, allerdings reagiert Github/npm einfach mehrere Tage nicht, wenn man Malware über die Funktion meldet.


Wie die Zeit rennt!

      ca. eine Minute Lesezeit   Read in English

Ist es wirklich schon wieder fast 4 Monate her seit dem letzten Blogbeitrag? Und jedes Mal nehm ich mir wieder vor, mehr zu bloggen.

Und ich probiere es jetzt abermals, da es derweil viele Dinge gibt, die mir auf der Seele brennen. Aber das folgt in den nächsten Tagen. 😉


Ich werde alt und verändere mich!

      ca. 3 Minuten Lesezeit  

Erinnert ihr euch noch an damals™, am letzten Schultag? Als sich alles verändern sollte? Ich war gerade mal 16 Jahre alt und bei mir ging es dann zur Deutschen Bahn. In die Ausbildung zum Eisenbahner. Wie bei allen Familienmitgliedern (bis auf ganz wenige Ausnahmen) vor mir.

Danach glücklicherweise wieder in Richtung Programmierung. Da war ich dann 19 Jahre alt. Seitdem, also in den letzten 20 Jahren, hab ich nicht nur hobbymäßig programmiert, sondern auch beruflich. Bis auf wenige Stunden am Tag, in denen der menschliche Körper regelmäßig nach dieser überflüssig wirkenden Pause namens „Schlaf” schreit.

In dieser Zeit habe ich viele positive als auch negative Erfahrungen sammeln dürfen. Oft genug hab ich dabei gelernt, wie es nicht geht. Nicht nur in der Entwicklung, sondern auch in geschäftlichen Dingen. Ich habe gelernt, dass Geld eben nicht einfach auf Bäumen wächst und der Chef die Kohle schon irgendwie ranschafft, auch wenn ich mich „heute mal nicht so fühle”. Alles was ich als Arbeitnehmer oder auch als Arbeitgeber entscheide und umsetze, hat Konsequenzen. Das klingt jetzt natürlich irgendwie normal, aber wieviele Menschen kennt ihr, die diese Grundsätze quasi gar nicht verstanden, geschweige denn verinnerlicht haben? Ich kenne davon gar nicht mal so wenige.
Bei aller Liebe zur Firma darf man natürlich die eigene Work-Life-Balance nicht vergessen und Abschalten ist selbstverständlich auch wichtig, um nach der täglichen Pause oder dem Urlaub auch die wieder nötige Konzentration zu haben. Wir werden ja alle nicht jünger 😉

Ich habe mir dabei als Arbeitgeber angewöhnt: „Es geht immer um die Firma!”. Es geht für mich immer darum, dass die Mitarbeiter auch morgen noch ihr Gehalt bekommen. Mein persönliches Leid kann den anderen egal sein – das große Ganze zählt! Ich habe dies auch immer mit in mein Arbeitnehmerleben mitgenommen. Denn auch die Kollegen (und auch ich) wollen morgen noch ihr Gehalt bekommen. Auch der Chef wäre meist ganz angetan davon, seine Firma behalten zu können.
Das ist nicht jedermanns Sache, das gilt jetzt auch erstmal nur für mich.

Aber so wie es aussieht, sind diese Erfahrungen okay für andere. Denn ab morgen darf ich mich CTO bei Contentflow schimpfen. Für ein großartiges Unternehmen mit einem geilen Team bei gleichzeitigem Startup-Feeling.
Im Gegensatz zur viel zu langen Zeit in der Auftragsentwicklung arbeiten wir heute ohne großen Druck, aber trotzdem mit krasser Geschwindigkeit an einem Produkt, das bzw. dessen Notwendigkeit ausgerechnet dank der Corona-Zeit in Deutschland urplötzlich nicht mehr erklärungsbedürftig war: Video-Livestreaming.

Ich freue mich auf die neue Challenge in meiner beruflichen Laufbahn und auf die weitere geile Zusammenarbeit mit dem fantastischen Team (ich hör ja schon auf zu Schleimen!).