Wie Hunderte Unternehmen wie X, Vercel, Cursor und Discord über einen Supply-Chain-Angriff kompromittiert werden konnten
(gist.github.com/hackermondev)- Ein 16-jähriger Schüler veröffentlichte eine Zusammenfassung darüber, wie sich über eine Schwachstelle in der Mintlify-Plattform Cross-Site-Scripting (XSS) auf den Dokumentationsseiten großer Unternehmen wie X, Vercel, Cursor und Discord ausführen ließ. Über diese Schwachstelle erhielt er 11.000 US-Dollar Bug-Bounty-Prämie
- Der interne Pfad
/_mintlify/static/[subdomain]/[...route]von Mintlify war so aufgebaut, dass externe Dateien ohne Domain-Validierung geladen werden konnten - Angreifer konnten JavaScript in SVG-Dateien einbetten und dadurch bösartige Skripte auf Domains großer Dienste wie Discord ausführen
- Die Schwachstelle betraf nahezu alle Kunden von Mintlify; bereits ein einziger Klick auf einen Link konnte zur Kontoübernahme führen
- Der Vorfall gilt als Beispiel dafür, wie eine einzelne Schwachstelle in der Supply Chain zu Schäden in großem Maßstab führen kann
Entdeckung bei Discord
- Im November 2025 begann die Untersuchung der Schwachstelle, nachdem Discord auf die KI-basierte Dokumentationsplattform Mintlify umgestellt hatte
- Unmittelbar nach der Migration von der bisherigen Custom-Plattform zu Mintlify analysierte der Forscher die Struktur des neuen Dokumentationssystems
- Die Dokumentations-Domain von Discord (
discord.mintlify.app) legte den internen Pfad von Mintlify (/_mintlify/*) unverändert offen- Dieser Pfad musste für zentrale Funktionen wie Authentifizierung zwingend erreichbar sein
Aufbau der Mintlify-Plattform
- Mintlify ist ein Dienst, der Markdown-basierte Dokumentationserstellung unterstützt und diese automatisch in Web-Dokumentation umwandelt
- Alle Dokumentationsseiten laufen unter der Subdomain
*.mintlify.appoder unter Custom-Domains - Intern werden Endpunkte wie
/_mintlify/api/user,/_mintlify/markdown/und/_mintlify/static/verwendet
Ablauf der Schwachstellenanalyse
- Es wurde festgestellt, dass der Endpunkt
/_mintlify/_markdown/_sites/[subdomain]/[...route]Dateien anderer Dokumentationen ohne Domain-Validierung zurückgibt- Allerdings lieferte dieser Pfad nur nicht gerenderten Markdown-Text zurück, sodass keine Codeausführung möglich war
- Anschließend wurde durch Analyse des Mintlify-CLI-Pakets zusätzlich der Endpunkt
/_mintlify/static/[subdomain]/[...route]entdeckt- Dieser Pfad liefert statische Dateien aus und verwendet eine Whitelist für Dateierweiterungen
- HTML- und JS-Dateien waren blockiert, SVG-Dateien jedoch erlaubt
Praktische Ausnutzung
- Angreifer luden eine SVG-Datei mit eingebettetem JavaScript in ihre eigene Mintlify-Dokumentation hoch
- Wurde die Datei auf der Discord-Domain aufgerufen (
https://discord.com/_mintlify/_static/.../lmao.svg), wurde das Skript ausgeführt - Damit war XSS nicht nur bei Discord, sondern auf den Dokumentations-Domains aller Unternehmen möglich, die Mintlify einsetzen
Zusammenarbeit und Meldung
- Der Forscher arbeitete mit anderen Sicherheitsforschern zusammen, um die Schwachstelle zu verifizieren
- Discord deaktivierte unmittelbar nach der Meldung die gesamte Entwicklerdokumentation für zwei Stunden und kehrte anschließend zur bisherigen Plattform zurück
- Die Maßnahmen sind auf der Discord-Statusseite dokumentiert
- Nachdem Mintlify über Discord von der Schwachstelle erfahren hatte, richtete das Unternehmen einen Slack-Kanal zwischen dem Engineering-Team und den Forschern ein und begann sofort mit der Behebung
Auswirkungsbereich
- Die meisten Mintlify-Kunden, darunter X (Twitter), Vercel, Cursor und Discord, waren betroffen
- Auf den offiziellen Domains der jeweiligen Unternehmen bestand die Möglichkeit einer Kontoübernahme über einen einzelnen bösartigen Link
- Eine einzelne Schwachstelle in der Supply Chain kann eine Kettenreaktion von Sicherheitsrisiken für Hunderte Unternehmen auslösen
Belohnung und Fazit
- Das Forscherteam erhielt insgesamt rund 11.000 US-Dollar an Bug-Bounty-Prämien
- Discord zahlte 4.000 US-Dollar, Mintlify zusätzlich weitere Prämien für einzelne Schwachstellen
- Der Fall bleibt ein prägnantes Beispiel für die Bedeutung von Supply-Chain-Sicherheit und die enorme Reichweite einer einzelnen Plattform-Schwachstelle
1 Kommentare
Hacker-News-Kommentare
Dieser Exploit ist wirklich ein erschreckendes Beispiel
Schon ein einziger Klick auf einen Link, etwa https://discord.com/_mintlify/static/evil/exploit.svg, führt dazu, dass JavaScript auf der Discord-Domain ausgeführt wird
Dadurch können Session-Cookies oder Tokens gestohlen und Accounts vollständig übernommen werden; außerdem lassen sich Entwickler-Apps oder Webhooks manipulieren, Server per API löschen oder mit hinterlegten Zahlungsdaten Nitro kaufen – der Schaden ist erheblich
Wenn man dieses Ausmaß bedenkt, wirkt eine Bug-Bounty von 4.000 $ wie eine viel zu geringe Belohnung
Wenn Session-Cookies immer als HTTP-only gesetzt werden, ist man gegen solche Angriffe deutlich besser geschützt
Es ist erstaunlich, wie viele Frontend-Entwickler solche grundlegenden Sicherheitskonzepte nicht kennen
Auf dem Schwarzmarkt hätte das vermutlich einen deutlich höheren Wert gehabt
Ich halte es schon an sich für einen Sicherheitsfehler, dass man Skripte in SVG-Dateien einbetten kann
Es ist zwar cool, interaktive Demos oder Spiele in einer einzigen SVG umzusetzen, aber genau das macht sie auch zu einem Nährboden für Schwachstellen
Deshalb verbieten viele Plattformen SVG-Uploads oder blockieren die Vorschau
Auch bei Discord werden hochgeladene SVGs als Code angezeigt, und auf Facebook Messenger oder WeChat lassen sie sich ebenfalls nicht teilen
Es ist schade, dass trotz Vorteilen wie kleiner Dateigröße und Auflösungsunabhängigkeit weiterhin Rasterbildformate verbreiteter sind
Rails Active Storage sanitiziert SVGs standardmäßig nicht, also ist Vorsicht geboten
Siehe dazu die OWASP-Dokumentation
<script>-Tags einfach ignorieren würdenAber selbst das könnte nicht ausreichend sein
Bei Rasterformaten gibt es dieses Problem fast nie
Dieser Vorfall scheint eine Momentaufnahme des heutigen AI-Startup-Ökosystems zu sein
Ein mit VC-Geld gewachsenes AI-Dokumentations-Startup gewinnt große Kunden ohne Sicherheitsprüfung, und am Ende sind Millionen Menschen Risiken ausgesetzt
Mintlify hat vor Kurzem noch mit einem Blogpost über seine komplexe Caching-Architektur geprahlt, scheint aber in Wirklichkeit nicht einmal grundlegende Sicherheit zu verstehen
In so einer Situation bekommt derjenige, der die Schwachstelle findet, gerade einmal 5.000 $
Ich denke, das zeigt, wie fragil die heutige AI-gestützte Entwicklungskultur ist
Komplexe Abhängigkeitsketten und die mehrfache Third-Party-DLL-Hölle sind die eigentliche Ursache
Hätte Discord die API-Dokumentation nicht direkt unter discord.com ausgeliefert, wäre dieses Problem nicht entstanden
Reicht dafür nicht einfach ein CDN?
Es ist ein Bug, mit dem Kundenkonten vollständig übernommen werden können, und trotzdem ist die Belohnung viel zu niedrig
In der heutigen Zeit gibt es eigentlich keinen Grund mehr, XSS zuzulassen
Selbst bei Anubis wurden dieses Jahr zwei reflektierte XSS-Schwachstellen gefunden
Third-Party-Abhängigkeiten müssen unbedingt geprüft werden
Siehe dazu diese Security Advisories hier und hier
Außer bei großen sozialen Netzwerken ist es schwer, daraus direkten finanziellen Gewinn zu ziehen
Ich frage mich, ob man den 16-jährigen Hacker, der diese Schwachstelle gefunden hat, nicht fest oder in Teilzeit anstellen und kontinuierlich Sicherheitsprüfungen durchführen lassen sollte
Schon 50.000 $ pro Jahr könnten die Sicherheit eines Unternehmens massiv verbessern
Bug-Bounties sind effizienter, weil sie ergebnisbasiert vergüten
Wenn die Belohnung allerdings zu niedrig ist, steigt die Versuchung, die Erkenntnisse an Dritte zu verkaufen
XSS, IAM, Shell-Exploits und so weiter – jeder hat sein eigenes Fachgebiet, daher ist es schwer, dass eine einzelne Person alles abdeckt
Es ist beeindruckend, dass ein 16-Jähriger so etwas entdeckt hat
Aber es wirkt ungewohnt, XSS als Supply-Chain-Angriff zu bezeichnen
Wenn bei einer Zwischenstufe wie Mintlify etwas schiefläuft, haben Endnutzer keinerlei Verteidigungsmöglichkeit
Der Schadcode wird innerhalb einer vertrauenswürdigen Kette ausgeliefert, daher kann man es gewissermaßen als XSS auf Supply-Chain-Ebene sehen
Im Bericht des Mitarbeiters ist auch eine noch schwerwiegendere RCE-Schwachstelle enthalten
Details dazu stehen in diesem Blog
Solche Fälle zeigen:
1️⃣ Content Security Policy (CSP) muss unbedingt gesetzt werden
2️⃣ Auf NodeJS-Servern sollte die Option
--disallow-code-generation-from-stringsstandardmäßig verwendet werdenAnbieter wie Vercel sollten warnen, wenn keine CSP verwendet wird
Weitere nützliche NodeJS-Sicherheits-Flags sind in diesem Artikel zusammengefasst
Einen Third-Party-Service über die Hauptdomain mit Benutzer-Authentifizierung zu proxyn ist die denkbar schlechteste Entscheidung
Mintlify hätte auf eine separate Subdomain wie dev-docs.discord.com ausgelagert werden müssen
Selbst wenn Kunden das wollen, ist das aus Sicherheitsgründen viel zu riskant
Allerdings gibt es wegen SEO eine große Nachfrage danach, Dokumentation auf der Hauptdomain zu hosten
Aus Sicht von Mintlify dürfte dieser Vorfall extrem belastend sein
Man sollte für Third-Party-Dienste eine eigene Subdomain verwenden und die Auth-Cookies der Haupt-App auf host-only beschränken
Wenn möglich, ist sogar eine komplett andere Domain (z. B. discorddocs.com) noch sicherer
Im Vergleich zum Sicherheitsrisiko ist das aber eine viel zu gefährliche Entscheidung
Ich werde SVG-Dateien jetzt nie wieder öffnen
Dass ein 16-Jähriger so etwas gefunden hat, ist wirklich legendär