KI-Bots überfluten GitHub-Repositories. 5 Schritte zum Schutz vor ihrer Ankunft.

10 min read

Es gibt eine GitHub-Benachrichtigung, die Sie hassen werden.

Ein neues Issue, gut geschrieben. Es zitiert präzise Zeilennummern in Ihrem Code, beschreibt eine Sicherheitslücke mit überzeugender Fachterminologie, strukturiert die Argumentation in 3 klaren Punkten. Die Art von Bericht, die beim ersten Lesen seriös wirkt.

Komplett von einer LLM erstellt. Eingereicht von jemandem, der auf Bug Bounty aus ist oder ein paar PRs für sein GitHub-Profil vor dem nächsten Vorstellungsgespräch sammelt.

Daniel Stenberg pflegt curl seit 1998. Installiert auf Milliarden von Geräten, auch auf Ihrem. Im Januar 2026 stellte er sein HackerOne Bug Bounty ein, nachdem er 7 gefälschte Sicherheitsberichte in 16 Stunden erhalten hatte. 20 Einreichungen in 21 Tagen, keine identifizierte eine echte Schwachstelle. Er schätzt jeden Bericht auf 150$ ehrenamtliche Arbeitszeit für die Bearbeitung. Er nannte es "Terror-Reporting" und beendete das Programm.

Die Asymmetrie im Kern: Eine Einreichung kostet ein paar Cent in AI-Tokens. Die Bearbeitung kostet 150$ Arbeitszeit. Diese Asymmetrie kümmert sich nicht um die Größe Ihres Projekts. Sie kümmert sich nur um eins: ob Ihre Issues offen sind.

Cover-Illustration – Eine geteilte Büro-Szene mit zwei Entwicklern an benachbarten Schreibtischen, die GitHub-Issue-Benachrichtigungen bearbeiten
Cover-Illustration – Eine geteilte Büro-Szene mit zwei Entwicklern an benachbarten Schreibtischen, die GitHub-Issue-Benachrichtigungen bearbeiten

Das Issue, das echt aussah

Wie diese Berichte in der Praxis aussehen, ist erwähnenswert, denn der erste, den Sie erhalten, wird Sie wahrscheinlich etwa 30 Sekunden lang täuschen. Diese 30 Sekunden sind die ganze Mechanik.

Das Muster ist konsistent in Maintainer-Threads der letzten Monate. Das Issue kommt mit sauberer Struktur: Es nennt eine spezifische Version Ihrer Bibliothek, referenziert Dateipfade, die in Ihrem Repo existieren, und beschreibt einen Angriffsvektor mit dem richtigen Vokabular. Etwa "unsachgemäße Eingabevalidierung im Handler könnte einem Angreifer ermöglichen zu umgehen..." gefolgt von 3 plausibel klingenden Schritten. Manchmal ein Proof-of-Concept-Snippet. Perfekte Grammatik, professioneller Ton.

Dann schauen Sie sich den Code an.

Die Schwachstelle existiert nicht. Die Zeilennummern führen zu nichts Relevantem. Der Angriffsvektor funktioniert nur, wenn Ihre Bibliothek etwas tut, was sie nicht tut. Das Ganze ist eine Halluzination mit der Formatierung eines legitimen Sicherheitsberichts, eingereicht von jemandem, der einen Scanner auf Ihr Repo gerichtet, ein paar Cent API-Tokens ausgegeben und 3 Minuten gewartet hat.

Sie können diese nicht einfach ignorieren. Jeder ignorierte Sicherheitsbericht, der sich als echt herausstellt, ist eine Katastrophe. Also bearbeiten Sie alle. Es ist im Grunde ein DEFCON-1-Alarm auf Ihrem Minecraft-Server: Das Risiko ist null, aber die Reaktion bleibt trotzdem obligatorisch. (Ich weiß. Zutiefst unfair.)

Stenberg beschrieb die Erfahrung als "Terror-Reporting". Das Wort ist exakt. Nicht weil die Berichte gefährlich sind. Sondern weil jeder einzelne sofortige Aufmerksamkeit verlangt, die sich als völlig verschwendet herausstellt.

1 Maintainer. 18 Monate. 150$ pro Bericht.

TITLE "The curl Bug Bounty Collapse" + subtitle "18 months from signal to noise". Metaphor: engineer blueprint timeline left to right with annotated inflection points at key dates. Style: technical blueprint on dark navy background, white annotation lines, measurement brackets, hand-drawn grid, technical marker feel. Palette: navy #0A1628, cyan #00D4FF, white #FFFFFF, amber #FFB347, charcoal #2A3548. Content: Left zone (2024) "1 report/week, 1 in 6 real". Center zone (Late 2025) "1 in 30 real, volume x5". Right zone (Jan 2026) "7 in 16 hours, 20 in 21 days, 0 real". Far right (Jun 2026) "1 every 18h, duplicates". Each zone annotated "$150 triage cost per report". Highlight: Jan 2026 zone stamped diagonal "PROGRAM CLOSED" in amber with border. Footer: copyright rentierdigital.xyz. NOT flat corporate vector, NOT minimalist tech startup aesthetic, NOT stock infographic.
Zeitlinie des Niedergangs des curl Bug Bounty Programms

Vor 2025 erhielt Stenberg etwa 1 Sicherheitsbericht pro Woche. Etwa 1 von 6 war echt. Er hatte einen dokumentierten Bearbeitungsprozess, ein Team von 7 Freiwilligen und die Art von Reputation, die seriöse Forscher anzog.

Dann änderten sich die Verhältnisse.

Ende 2025: 1 von 20 bis 30 Berichten war echt. Das Volumen hatte sich verfünffacht. Januar 2026: 7 Einreichungen in 16 Stunden. 20 in 21 Tagen, keine identifizierte eine echte Schwachstelle. Stenberg stellte das HackerOne-Programm ein und aktualisierte curls security.txt, um die Konsequenzen böswilliger Einreichungen explizit und öffentlich zu machen.

Er schätzte die Kosten: 150$ pro Bericht an ehrenamtlicher Bearbeitungszeit. Bei 20 Berichten in 21 Tagen sind das 3.000$ an ehrenamtlichen Stunden mit 0 Sicherheitswert als Gegenwert.

Ich verfolge Stenbergs FOSDEM-Talks seit ein paar Jahren. curl las sich immer wie das platonische Ideal nachhaltiger Open Source: ein einzelner Maintainer, jahrzehntelange Verpflichtung, ein Projekt, das auf Milliarden von Geräten läuft. Das Slopageddon-Kapitel fühlt sich wie ein besonders grausamer Plot Twist für jemanden an, der die Infrastruktur des Internets von Hand gebaut hat.

Eine Einschränkung ist erwähnenswert, weil Stenberg sie macht: Einige AI-unterstützte Forschung ist legitim. Joshua Rogers fand etwa 50 echte Schwachstellen in curl mit ZeroPath, indem er das Tool mit seiner eigenen Expertise kombinierte, um Signal von Rauschen zu filtern. Stenberg beschrieb ihn als "eine kluge Person, die ein mächtiges Tool verwendet". In 6 Jahren der Verfolgung AI-generierter Sicherheitseinreichungen wurden 0 Schwachstellen von AI allein gefunden, ohne einen Menschen in der Schleife.

Stenberg öffnete das Bounty im März 2026 wieder. Nicht weil die Flut aufhörte, sondern weil die Qualität sich so weit verbessert hatte, dass einige Berichte nun technisch kohärent waren, nur massiv dupliziert. Mehrere Forscher richteten unabhängig denselben Scanner auf dasselbe Repo, bekamen dieselbe Ausgabe und reichten denselben Nicht-Fund ein. "Es war buchstäblich wie 2 Leute, die Nadeln im selben Heuhaufen finden", sagte er. "Und das ist nie passiert." Stand Juni 2026: 1 Bericht alle 18 Stunden.

Was curl passiert ist, passiert überall

2 unterschiedliche Populationen erzeugen dieses Rauschen, und sie haben verschiedene Anreize. Den Unterschied zu verstehen ist wichtig, weil die Lösung für eine die andere nicht adressiert.

Bounty-Jäger sind die automatisierte Scanner-Crowd. Sie zielen auf Projekte mit aktiven monetären Belohnungen ab. curl war ein Hauptziel speziell wegen des HackerOne-Bounty. Entfernen Sie den finanziellen Anreiz und Sie verschwinden größtenteils aus ihrer Warteschlange. Jazzband, ein Python-Kollektiv, stellte komplett ein, nachdem es von dieser Gruppe überwältigt wurde. Der Solo-Builder ohne monetäres Bounty hat einen strukturellen Vorteil: Bounty-Jäger ziehen meist weiter.

Resume-Padder kümmern sich nicht um das Bounty. Ein GitHub-Profil mit 50 Beiträgen, eingereichten PRs und geöffneten Issues, auch wenn alle abgelehnt wurden, liest sich für einen Recruiter besser als ein leeres Profil. AI senkte die Kosten für die Generierung eines plausibel aussehenden PR auf etwa 0. Also zielt diese Population auf jedes Projekt mit offenen Issues und indexierbarer Sichtbarkeit ab. 200 Sterne oder 2 Millionen, der Unterschied in der Attraktivität ist kleiner, als die meisten Builder annehmen.

Ich schrieb über die Kosten des Closed-Source-Gehens 2026, als Cal.com diese Entscheidung traf. Dieser Artikel ist die andere Seite: offen zu bleiben bedeutet nicht, passiv zu bleiben.

Remi Verschelde, der Godot pflegt, beschrieb Triage-Arbeit als "zermürbend und demoralisierend". Mitchell Hashimoto, der Vagrant und Terraform baute und jetzt Ghostty pflegt, schrieb im Januar: "Es ist eine verdammte Kriegszone hier draußen, Mann. Maintainer-Moral auf einem Allzeittief." Er verbot unattribuierte AI-Beiträge komplett. tldraw schließt automatisch alle externen PRs. GitHub baut aktiv Notfall-Moderationskontrollen für Pull Requests. Wenn eine Plattform Notfallkontrollen ausliefert, ist das ein Signal, keine Nischenbeschwerden.

1 von 10 AI-generierten PRs erfüllt den Qualitätsstandard, der erforderlich ist, um ihn zu öffnen, laut einer GitHub-Community-Diskussion vom Juni 2026. Die anderen 9 landen in jemandes Triage-Warteschlange.

Kate Holterhoff nannte es "AI Slopageddon" Anfang 2025. Das Portmanteau verbreitete sich sofort. Wenn ein Label so schnell übernommen wird, war die zugrundeliegende Erfahrung bereits weit verbreitet und brauchte nur einen Namen.

Sie haben ein Side Project ausgeliefert. Sie sind gerade Maintainer geworden

Hier ist der Teil, der ohne Dokumentation kommt.

Als Sie Ihr Projekt pushten, Issues aktivierten (die Standardeinstellung, die meisten Leute lassen sie an) und anfingen, Sterne zu sammeln, stimmten Sie auch etwas ohne Onboarding-Dokumentation zu: Maintainership. Damit kommt eine Verantwortung, die niemand formal zuweist, eine, die trotzdem Ihre echte Zeit verbraucht: die Bearbeitung dessen, was im Issues-Tab landet.

Stenberg hatte 6 Jahre, um seine Moderationsinfrastruktur aufzubauen. Er hatte 7 ehrenamtliche Bearbeiter, eine dokumentierte Triage-Richtlinie mit festgelegten Konsequenzen für böswillige Einreichungen, eine öffentliche Reputation, die als Abschreckung funktioniert, und eine security.txt-Datei, die böswillige Akteure explizit vor dem warnt, was mit ihnen passiert. Er baute all das bewusst über Jahre auf, als Reaktion auf ein Vor-AI-Volumen von Rauschen, das bereits signifikant und wachsend war. Und das ist für curl, ein Projekt, das auf Milliarden von Geräten weltweit läuft. Der Umfang des Ziels, die Größe der Infrastruktur und die Jahre bewusster Konstruktion stehen in einem Verhältnis zueinander, das sich nicht auf ein Side Project überträgt, das an einem Donnerstagnachmittag gepusht wurde.

Sie haben eine README.

Die Lücke zwischen diesen 2 Situationen ist erwähnenswert, ohne zu katastrophisieren. Schnelles Ausliefern mit AI bringt eine Demo zum Laufen, einen funktionierenden Prototyp, etwas, das GitHub-Sterne verdient. Das ist die erste Schleife, die Vibe Coding, For Real für Builder abdeckt, die an die Demo-zu-Produktion-Wand gestoßen sind. Aber schnelles Ausliefern liefert nicht die Moderationsschicht mit. Die Moderationsschicht ist der DLC, der nicht mitgeliefert wurde, und sie wird obligatorisch, sobald das Projekt sichtbar ist.

Ich denke, die Sichtbarkeitsschwelle ist wichtiger als die Sterne-Anzahl, tatsächlich. Ein Projekt mit 150 Sternen und offenen Issues ist von denselben automatisierten Scannern indexierbar wie eines mit 15.000. Vielleicht liege ich falsch, aber die praktische Implikation scheint trotzdem dieselbe zu sein: Sobald Sie auffindbar sind, sind Sie ein potenzielles Ziel.

Die Supply-Chain-Angriffsfläche und die AI-Slop-Angriffsfläche teilen dieselbe Logik: Beide sind passiv, beide wachsen mit der Sichtbarkeit, und die Kosten landen vollständig bei Ihnen. Ich stieß direkt auf erstere und dokumentierte es in meiner LiteLLM Supply Chain Analyse. Beide Angriffe brauchen keine Schwachstelle in Ihrem Code. Sie brauchen nur, dass Sie keine Richtlinie haben.

Die Kosten für Beiträge sind gerade auf null gefallen. Die Kosten für Moderation nicht.

5 Dinge, die Sie tun sollten, bevor die Bots Sie finden

Nichts davon ist kompliziert. Alles ist einfacher einzurichten, bevor das Rauschen beginnt, als danach.

1. Betreiben Sie kein monetäres Bug Bounty, es sei denn, Sie können es tatsächlich verteidigen

Ein monetäres Bounty ist das primäre Zielsignal für die Bounty-Jäger-Population. HackerOne, Bugcrowd, jedes strukturierte Belohnungsprogramm: eines zu haben ist etwa gleichbedeutend mit "Pay-per-Report akzeptiert" im Open-Source-Verzeichnis zu posten. Ohne eines priorisieren automatisierte Scanner meist andere Ziele. Das ist kein Argument gegen Bug Bounties als Konzept. Es ist ein Argument dagegen, eines als "sieht seriös aus"-Checkbox hinzuzufügen, ohne die Triage-Infrastruktur, um es zu unterstützen. Stenberg hatte 6 Jahre Infrastruktur, bevor die Flut kam. Ein Bounty ohne diese Infrastruktur zu betreiben bedeutet, dafür zu bezahlen, ins Visier genommen zu werden.

2. Schreiben Sie eine CONTRIBUTING.md mit einer expliziten AI-Regel und festgelegten Konsequenzen

Die Regel muss sagen, was passiert, nicht nur was erwartet wird. Etwa: "AI-generierte Issues oder PRs, die ohne verifizierte Reproduktionsschritte eingereicht werden, werden sofort geschlossen. Wiederholte Verstöße führen zu einer Blockierung." Die Konsequenzen müssen da sein, weil die Regel nicht existiert, um zu überzeugen, sie existiert, um Schließungen öffentlich vertretbar zu machen. Wenn Sie eine Einreichung schließen und jemand zurückdrängt, zeigen Sie auf die Regel. Ohne sie wird jede Schließung zu einer Ermessensentscheidung, die Sie von Grund auf neu verhandeln müssen.

3. Fügen Sie ein Issue-Template mit einem obligatorischen Menschenverifikationsfeld hinzu

Das ist die technische Schicht für das, was die CONTRIBUTING.md in der Richtlinie abdeckt. Ein Pflichtfeld, das "Schritte, die Sie persönlich auf Ihrem Rechner reproduziert haben, in Reihenfolge:" lautet, schafft Reibung, die automatisierte Einreichungen im Allgemeinen nicht kohärent ausfüllen können. Das Template schafft eine Papierspur, die böswillige Einreichungen leichter identifizierbar und sauber schließbar macht.

4. Setzen Sie einen Stale Bot bei 14 Tagen ein

Jedes Issue ohne Aktivität für 14 Tage wird automatisch mit einer Standardnachricht geschlossen. Denken Sie daran wie an das git gc des Issue-Managements: Es läuft leise und gewinnt Platz zurück, von dem Sie nicht wussten, dass Sie ihn zugewiesen hatten. Der passive Rückstand, der sich auch bei aktiver Triage ansammelt, verschwindet ohne manuelle Intervention. Ohne einen Stale Bot füllt sich der Issues-Tab mit ungelösten Berichten, die jedes Mal kognitiven Overhead schaffen, wenn Sie das Repo anschauen.

5. Deaktivieren Sie Issues komplett, wenn Sie nicht im aktiven Wartungsmodus sind

Diese Option wird übersprungen, weil offene Issues wie ein Reifesignal wirken. Aber ein Projekt, bei dem Issues 6 Monate lang offen und unbearbeitet waren, sendet ein schlechteres Signal als ein Projekt, das gerade pausiert. Und aus Zielperspektive bedeutet deaktivierte Issues nicht indexierbar durch die automatisierten Scanner, die nach Beitragsziele suchen. Wenn Sie zwischen Feature-Zyklen sind, wenn Sie etwas ausgeliefert haben und weitergezogen sind, ist das Ausschalten des Issues-Tabs eine gültige Wahl. Das Repo bleibt öffentlich, forkbar, nützlich. Es wird nur still.

Dasselbe Tool. 2 Richtungen

Dasselbe AI-Tooling generiert die Sicherheitsberichte für Bounty-Jäger und die PRs für Resume-Padder. Dieselbe zugrundeliegende Fähigkeit, verschiedene Anreize, verschiedene Verteidigung.

Bounty-Jäger selektieren sich meist selbst aus, wenn es keine finanzielle Belohnung gibt. Der Solo-Builder ohne monetäres Bounty ist strukturell ein weniger attraktives Ziel für diese Population. Das ist etwa die einzige strukturell gute Nachricht hier.

Resume-Padder reagieren nicht auf das Fehlen eines Bounty. Die Anstrengungskosten sind 0. Der Nutzen für ihr Profil ist real. Die Kosten landen vollständig beim Maintainer. AI-generierte PRs für Resume-Padding "sehen gut aus. Tests bestehen. Der Code könnte sogar funktionieren", wie Continue Blog im Januar 2026 schrieb. "Das Problem ist, dass niemand zu Hause ist." Das ist die Population, die die obigen Maßnahmen filtern sollen, weil es keinen strukturellen Anreiz gibt, der sie stoppt, wie das Entfernen eines Bounty die Jäger stoppt.


AI komprimierte die Build-Zeit. Es komprimierte nicht die Wartungszeit. Die Reibung, die schlechte Beiträge filterte, die Anstrengung, eine Codebasis zu verstehen, einen Bug zu reproduzieren, etwas Kohärentes zu schreiben, verschwand auf der Einreichungsseite. Nicht auf der Triage-Seite. Stenberg verbrachte 6 Jahre damit, seine Verteidigung mit 7 ehrenamtlichen Bearbeitern aufzubauen.

Er bekommt immer noch 1 Bericht alle 18 Stunden. C'est la vie 🤷‍♂️

Quellen

Dieser Beitrag kann Affiliate-Links enthalten. Wenn Sie darauf klicken, verdiene ich möglicherweise eine kleine Provision (kostet Sie nichts und hilft mir dabei, weiterhin täglich qualitativ hochwertige Artikel für Ihr Lesevergnügen zu liefern.)