5 Punkte von GN⁺ 2025-08-05 | 3 Kommentare | Auf WhatsApp teilen
  • 3. August 2025 auf der DrawAFish!-Website kam es über etwa sechs Stunden zu einem großen Sicherheitsvorfall.
  • Ausgelaufenes Administrator-Passwort, API ohne Authentifizierung und JWT-Schwachstelle wurden kombiniert offen gelassen und im Angriff ausgenutzt.
  • In der Folge wurden alle Benutzernamen in beleidigende Ausdrücke geändert, obszöne Bilder wurden freigeschaltet und gleichzeitig wurden sichere, bestehende Bilder gelöscht.
  • Durch manuelle Wiederherstellung, Korrektur der Authentifizierungslogik und Kontrolle der Backups wurde der Vorfall behoben.
  • Die Kernlektion ist, dass schnelle Entwicklung ("Vibe-Coding") und fehlende Tests bzw. Code-Reviews schwere Sicherheitsauswirkungen haben können.

Überblick über DrawAFish.com und Zusammenfassung des Vorfalls vom 3. August 2025

  • DrawAFish.com ist eine Website, auf der Nutzer eigene Fische zeichnen und diese gemeinsam mit anderen Nutzern im Aquarium schwimmen lassen können.
  • Am 1. August 2025 erreichte sie Rang 1 auf Hacker News und bekam dadurch große Aufmerksamkeit. Der Entwickler setzte auf „Vibe-Coding“, also das schnelle Umsetzen von Funktionen mit Tools wie Copilot.
  • Doch in den frühen Morgenstunden des 3. August 2025 kam es zu einem schweren Sicherheitsvorfall.
  • Rund sechs Stunden lang wurden Benutzernamen in der Mehrzahl in unpassende Ausdrücke geändert, obszöne Bilder genehmigt und insgesamt ein chaotischer Zustand ausgelöst.
  • Letztlich nahm der Administrator eine manuelle Wiederherstellung vor.

Detaillierte Analyse der Schwachstellen

1. Ausgeleaktes sechsstelliges Administrator-Passwort aus der Vergangenheit

  • Der Entwickler nutzte zu Beginn seine eigene ID und ein sechsstelliges Passwort aus seiner Kindheit für das Administratorkonto.
  • Dieses Passwort war bereits durch Datenlecks früherer Sites wie Neopets im Internet öffentlich geworden.
  • Der Entwickler stellte anschließend auf Google Auth um, entfernte das alte Passwort jedoch nicht, sodass die Angriffsfläche für Angreifer erhalten blieb.
  • Ein Angreifer nutzte die geleakten Daten, um sich als Administrator zu authentifizieren, und führte anschließend absichtliche Aktionen wie die Freischaltung beleidigender Bilder und das Löschen regulärer Bilder aus.

2. Benutzernamenänderungs-API ohne Authentifizierung

  • Bei der Entwicklung des Profil-Backends wurde die API zur Änderung des Benutzernamens ohne Authentifizierungsprüfung implementiert, um schnell voranzukommen.
  • Tatsächlich konnte praktisch jeder beliebig Benutzernamen ändern.

3. Unzureichende JWT-Validierung

  • Bei der JWT-Token-basierten Authentifizierung war es möglich, Administrationsaufgaben ohne Abgleich von Token und userId/eMail auszuführen.
  • Das bedeutete, dass ein Angreifer mit einem über Administratoranmeldeinformationen ausgestellten Token jede beliebige Anfrage mit Administratorrechten ausführen konnte.
  • Interessanterweise nutzte ein Hacker-News-Nutzer diese Schwachstelle, um vor den Eindringlingen unangemessene Inhalte zu löschen und so zur Notfallreaktion beizutragen.

Wiederherstellung

  • Der Entwickler erkannte gegen 7:45 Uhr morgens die Schwere des Vorfalls und begann sofort mit der Reaktion vom Desktop.
  • Da Firebase-Backups nicht eingerichtet waren, konnte er sich nicht auf Backups stützen und passte den Code zügig an, um Authentifizierungschecks zu erzwingen.
  • Er entwickelte ein Skript, das alle Moderationslogs durchging, um bösartige Aktionen zu stornieren (dies wurde ebenfalls im Vibe-Coding-Stil geschrieben).
  • In der Notfallphase wurde auch der Zugriff eines Dritten mit Administratorkonten (Hacker-News-Nutzer) blockiert. Anschließend kontaktierte man diesen und nahm zusätzliches Feedback zum Security-Refactoring der Codebasis entgegen, bevor weitere Patches eingespielt wurden.

Entwicklungskultur und Lehren

  • Der Entwickler erlebte, dass „Vibe-Coding“, also eine Kultur aus schnellem Prototyping und minimaler Review-Arbeit, zwar Spaß und hohe Produktivität bietet, in der Praxis jedoch zu gravierenden Sicherheitslücken führen kann.
  • LLM (Copilot) ist bei der schnellen Codeerzeugung extrem nützlich, aber die Verantwortung für Codequalität und Sicherheit bleibt beim Entwickler selbst.
  • Der Vorfall zeigt, dass das Weglassen grundlegender Sicherheitsprozesse wie Tests, Authentifizierungslogik und Code-Review selbst in kleinen Projekten zu extremer Anfälligkeit für externe Angriffe führen kann.

Fazit und Erkenntnisse

  • Der Fall DrawAFish.com zeigt die Bedeutung von grundlegenden Sicherheitsmaßnahmen, die in realen Betriebsumgebungen oft übersehen werden.
  • Auch bei der Nutzung von Open Source-Tools und schnellen Entwicklungswerkzeugen müssen zwingend Tests, Authentifizierung, Code-Review, Passwortverwaltung als Grundanforderungen überprüft werden.
  • Unerwartete Aufmerksamkeit in größerem Umfang (z. B. ein Top-Ranking bei Hacker News) kann die Angriffsfläche und das Risiko abrupt deutlich vergrößern.
  • Durch die transparente Dokumentation des Postmortems werden künftig realistische Sicherheitslektionen für ähnliche Startups oder Solo-Entwickler vermittelt.

3 Kommentare

 
crawler 2025-08-06

Der Buchstabe „S“ in „vibe-coded“ steht für „Security“.

 
wkbae 2025-08-06

Interessanterweise nutzte ein Hacker-News-Nutzer diese Schwachstelle, um vor dem Eindringling unzulässige Daten zu löschen und so zur Notfallreaktion beizutragen.

 
GN⁺ 2025-08-05
Hacker News-Kommentare
  • Ich arbeite auch gern sehr schnell; es macht Spaß, nicht erst ein Code Review zu machen und einfach direkt zu pushen. Nachdem ich dieses Postmortem gesehen habe, verstehe ich aber, warum mein Side-Projekt oft abbricht: Am Ende landet man immer bei der langweiligen echten Arbeit und bleibt an genau dieser Stelle stehen.
  • Ich frage mich, ob es Firebase war – ob sie weiterhin den kostenlosen Tarif genutzt haben oder ob jemand absichtlich angegriffen hat und sie dann morgens mit einer fünfstelligen Rechnung konfrontiert wurden.
  • Ich bin einer der „Glücklichen“, der den Slurfish-Vorfall selbst erlebt hat. Da ich im Bereich Security arbeite, musste ich beim offensichtlichen Muster schmunzeln, und ich wusste, dass auf HN bald jemand auftauchen würde, der genug Zeit hat, hier richtig zu helfen. Schön fand ich auch, dass dieses vibe-coded Projekt mit einer detailliert dokumentierten Postmortem öffentlich gemacht wurde; in meiner Incident-Response-Arbeit sehe ich in der Produktion immer häufiger solchen „vibe-driven“ Code, aber in einem so kleinen Projekt so sauber dokumentiert zu sein ist beeindruckend.
    • Viele sagen, das Problem sei nur, dass es „vibe coding“ war, doch mindestens zwei Punkte – einen Test-Admin-Account zurückzulassen und ein Token zu prüfen, aber keine Cross-Validierung durchzuführen – passieren auch ganz normal, selbst ohne KI oder vibe coding.
    • Ein Screenshot des Swastika-ähnlichen Fischs (‚Swastikafisch‘) wäre schön gewesen; schade, dass ich ihn tatsächlich nicht sehen konnte.
  • Dieses Postmortem ist für mich besonders interessant, weil es sich um eine vibe-codierte App handelt. Vielleicht wurde es von der „Fisch bauen“-Ausstellung im Lego House inspiriert; ich war vor Kurzem dort und es war richtig süchtig machend zu sehen, wie mein gebauter Fisch mit anderen Fischen zusammen geschwommen ist. Lego House Build-a-Fish YouTube-Video
    • Diese Ausstellung kannte ich nicht: Die bemalten Fische im Aquarium von St Louis wirken wie echte Fische, und sie wurden angeblich um 2016 herum durch Googles Quickdraw inspiriert.
  • Überraschend ist es wirklich, dass jemand eine Sicherheitslücke ausnutzen wollte, um einen echten Angriff zu verhindern.
    • So etwas ist schon öfter passiert; manche Würmer/Exploits haben sogar selbst die Lücke gepatcht, um sie zu stoppen.
    • Vor ein paar Jahren habe ich einen Artikel gelesen, in dem das FBI auf ähnliche Weise vorgegangen ist, um den EternalBlue-Exploit zu blockieren (der Exploit-Name könnte nicht exakt stimmen).
    • Menschen sind wirklich erstaunliche Wesen.
  • Im vibe-coded steht das „S“ für Security.
    • Das „S“ könnte für Snake... oder vielleicht Dragon stehen.
  • Ein echter Experte ist jemand, der völlig neue Ideen erfindet, sie selbst baut und dabei viel lernt, und sich trotzdem professionell zu den eigenen Fehlern bekennt. Wenn er weder 100.000 Dollar verloren hat, noch sein Netzwerk kaputtgemacht wurde und nicht den Job verloren hat, wird er sich in einem Jahr sicher lachend daran erinnern.
  • Auf der Seite war gerade ein Swastika-Fisch hochgeladen; jemand hat ihn in eine Fischform gepackt, um den Filter zu umgehen. Link zum betreffenden Bild, inzwischen gelöscht.
    • Es gab auch einen Fisch mit der Aufschrift „Balls“. Hier zu sehen, ich denke, das ist nicht so schlimm, wie man denken könnte.
    • Dieser Fisch hat den „Berührungspunkt“ von Buddha.
  • Aktuell kann ohne Authentifizierung jeder Fisch (maximal 20 mal/min/IP) per POST an die folgende Adresse voten: Vote API {"fishId":"xxxx","vote":"up"}
    • Das war tatsächlich so gedacht: Manche Fische mag man ein bisschen, manche echt sehr viel, daher sollte man Likes/Dislikes nach Belieben vergeben können.
  • Ich finde es toll, dass zu einer vibe-codierten Website eine Postmortem geschrieben wurde; viele Leute nehmen Technik viel zu ernst, und so einen leichten, lustigen Blick darauf zu haben ist erfrischend – aus Sicht eines kleinen Side-Projekts ist das ungemein interessant und bedeutsam.