mein minecraft-mod hat telemetrie an einen webhook ohne grenzen geschickt

cybersecurity · Oct 4, 2026 · 2 min read

ich habe einen minecraft-mod in java geschrieben. ein kleines komfort-ding, die art von projekt, die man an einem wochenende anfängt, weil man einen etwas besseren nachtsicht-schalter will. und irgendwo in der mitte davon kam ich auf die idee, es wäre interessant zu wissen, wie viele leute ihn tatsächlich benutzen.

also habe ich telemetrie hinzugefügt. anonym, aggregiert, harmlos. der mod schickte ab und zu eine kleine json-nutzlast an einen webhook.

das habe ich nicht hinzugefügt:

  • ein rate-limit auf der empfängerseite
  • einen einwilligungsschalter, den irgendjemand abschalten könnte
  • irgendeine art von authentifizierung
  • und jede überlegung darüber, dass eine url in einem client eine url ist, die jeder lesen kann

was tatsächlich passiert ist

der quellcode des mods ist öffentlich, also war der endpoint öffentlich. nach tagen empfing der kanal keine telemetrie mehr, sondern dieselbe zeile tausendfach: ein echter nutzer, dann ein skript, dann ein skript mit einer schleife, dann zwei skripte mit einer schleife.

die nutzlast war wertlos, das volumen nicht. und der fehlerfall war der peinliche: ich konnte meine eigenen nutzer nicht mehr von dem missbrauch unterscheiden, weil ich etwas gebaut hatte, in dem diese beiden dinge sich von der empfängerseite aus identisch anfuhlen.

warum „die daten sind harmlos" keine verteidigung war

das ist der teil, zu dem ich immer zurückkehre. die nutzlast enthielt nichts. ein skript ist das egal. die einzige eigenschaft, die meinen endpoint gefährlich machte, war, dass er alles von jedem annahm, so schnell das netzwerk liefern konnte.

zu sagen „es ist nur telemetrie" ist kein sicherheitsargument. es ist eine beschreibung dessen, was den angreifer nicht interessiert.

die lösung

ich habe den mod nicht geflickt und gehofft, dass niemand nochmal hinschaut. ich habe einen filter vor den endpoint gesetzt, an der kante, in cloudflare, damit die anfragen abgewiesen werden, bevor sie irgendetwas erreichen, das mir gehört. die kante ist der einzige ort, der verkehr ablehnen kann, den er nicht ohne meine einladung hereingelassen hat.

es ist eine regel, und es ist die kleinste und beste sicherheitsarbeit, die ich je gemacht habe.

was ich daraus mitgenommen habe

  • ein endpoint ist in dem moment öffentlich, in dem du ihn auslieferst, egal für wen du ihn gemeint hast
  • grenzen gehören an die kante, nicht in den client, der darum gebeten hat
  • wenn du einen nutzer nicht von einem angriff unterscheiden kannst, hast du keine telemetrie, sondern einen brandschlauch
  • etwas zu löschen ist eine gültige sicherheitsmaßnahme, und es hätte meine erste option sein müssen statt meiner letzten

der mod ist immer noch da. die telemetrie nicht.