KIberschutz: pipeshub behebt alle 13 Lücken
Wir meldeten pipeshub dreizehn Lücken. Mit Version 0.10.0 sind alle behoben und ausgeliefert. Was Betreiber jetzt tun sollten.
Transparenz vorweg: KIberschutz ist unser eigenes Projekt. Wir prüfen mit KI-Unterstützung Open-Source-Software auf Sicherheitslücken und melden die Funde verantwortungsvoll an die Maintainer. Veröffentlicht wird normalerweise erst, wenn der Fix bei den Nutzern angekommen ist. Bei pipeshub sind wir davon am 27. September abgewichen, zum ersten Mal.
Am 25. Juli haben wir dem Projekt dreizehn Lücken gemeldet. Als wir den Fall veröffentlicht haben, waren sechs davon nicht behoben, drei kritisch. Einen Tag später hat sich das Team gemeldet und innerhalb von drei Tagen alle sechs Lücken im Code geschlossen. Seit dem 12. Oktober sind alle dreizehn behoben und ausgeliefert, die letzten drei mit Version 0.10.0, darunter die letzte kritische. Wer pipeshub betreibt, sollte auf v0.10.0 aktualisieren und die Hinweise weiter unten beachten. Eine Anleitung zum Angreifen steht hier nicht drin, dafür das, was ihr selbst tun könnt.
Um welche Software es geht
pipeshub beschreibt sich als Open-Source-Plattform für "Workplace AI". Sie verbindet sich mit Slack, Google Drive, GitHub, Microsoft 365, Notion und über fünfzig weiteren Systemen, macht deren Inhalte durchsuchbar und beantwortet Fragen dazu mit Quellenangaben. Dieselben Inhalte stehen auch eigenen Agenten und MCP-Clients zur Verfügung. Apache-2.0, rund 3.800 Sterne auf GitHub, selbst hostbar per Docker Compose oder Helm.
Genau das macht die Lücken ernst. Eine solche Plattform hält Zugangsdaten zu den wichtigsten Firmensystemen und einen Index über deren Inhalte. Wer sie übernimmt, sitzt an der Schnittstelle zu all diesen Systemen.
Was wir gemeldet haben und was daraus wurde
Gemeldet haben wir über das private Meldeverfahren von GitHub, so wie es die SECURITY.md des Projekts vorsieht. Dort verspricht das Team eine Eingangsbestätigung in 48 Stunden, eine Einschätzung in fünf Werktagen, Updates alle sieben Tage und die Behebung kritischer Lücken in 30 Tagen. Nichts davon ist eingetreten. Fünf Wochen lang kam keine Antwort.
Am 26. August haben wir nachgefragt. Zwei Tage später war der erste Fix im Code, am 1. September kam die Antwort: Man entschuldige sich, die Meldungen seien angekommen, die kritischen würden priorisiert. Und: "We expect to have fixes for all reported issues ready by September 10."
Version 0.8.0 vom 14. September behob fünf Funde, eins der zugehörigen Advisories hat das Team selbst veröffentlicht, mit Nennung von uns als Melder (GHSA-47gf-3x62-7jfm). Am 19. September haben wir uns dafür bedankt und für jeden der übrigen acht Funde einen fertigen Fix-Vorschlag im privaten Advisory-Fork hinterlegt. Darauf kam zunächst keine Antwort. Zwei der acht hat das Team in der Woche darauf selbst behoben, ausgeliefert mit Version 0.9.0 am 28. September.
Am selben Tag hat sich das Team in den Advisories gemeldet. Es hat die Meldungen nach und nach geschlossen, jeweils mit dem Hinweis, dass der Fix im Hauptzweig liegt oder schon ausgeliefert ist, und uns in einem Fall eingeladen, selbst nachzutesten. Noch am Nachmittag erschien Version 0.9.1 mit Fixes für drei weitere Funde, darunter zwei der kritischen. Am 29. und 30. September folgten drei weitere Fixes im Hauptzweig, darunter der für die letzte kritische Lücke. Bis sie bei den Nutzern ankamen, dauerte es noch zwölf Tage: Das Team hatte das nächste Release für die Woche bis zum 4. Oktober angekündigt, erschienen ist es am 12. Oktober als Version 0.10.0. Wir haben alle drei Fixes am Code dieses Releases nachgeprüft. Auf Docker Hub zeigt auch latest seit dem 12. Oktober auf den neuen Stand.
| Stand am 12.10.2026 | Funde | Schwere |
|---|---|---|
| Behoben und in v0.8.0 ausgeliefert | 5 | 2 hoch, 3 mittel |
| Behoben und in v0.9.0 ausgeliefert | 2 | 2 hoch |
| Behoben und in v0.9.1 ausgeliefert | 3 | 2 kritisch, 1 mittel |
| Behoben und in v0.10.0 ausgeliefert | 3 | 1 kritisch, 2 hoch |
Die fünf mit v0.8.0 behobenen betreffen die Erzeugung von Signaturschlüsseln und Einmalcodes mit einem nicht kryptografischen Zufallsgenerator, signierte Download-Links ohne Rechteprüfung, eine Verwechslung von Token-Arten und widerrufene Tokens, die weiter galten. Die zwei mit v0.9.0 behobenen: Normale Nutzer konnten die API-Schlüssel der eingebundenen Websuche-Dienste im Klartext abrufen, und ein interner Dienstaufruf ließ sich über einen manipulierten Pfad umlenken.
Die sechs Lücken aus unserer Veröffentlichung
Zu diesen Funden nennen wir weiter nur die Art der Lücke und die betroffene Komponente. Codestellen und Schritte zum Nachstellen lassen wir weg, auch jetzt noch: Das letzte Release ist frisch, und nicht jede Installation ist am ersten Tag aktualisiert. Wer die Software betreibt, soll einschätzen können, was auf dem Spiel steht, ohne dass wir eine Anleitung mitliefern.
| Schwere | Bereich | Was möglich war | Stand 12.10. |
|---|---|---|---|
| kritisch | Code-Ausführung des Agenten | Ohne ausdrückliche Konfiguration lief vom Agenten erzeugter Code ohne Container-Isolation im Anwendungscontainer. Jeder angemeldete Nutzer konnte so Code auf dem Server ausführen und an dessen Zugangsdaten kommen. | behoben in v0.10.0 |
| kritisch | Datei-Upload der Konnektoren | Ein angemeldeter Nutzer konnte Dateien an Stellen außerhalb des vorgesehenen Verzeichnisses schreiben. Je nach Installation reichte das, um Code auf dem Server auszuführen. | behoben in v0.9.1 |
| kritisch | OAuth-Anbieter | Mit einem beliebigen ausgestellten OAuth-Token ließen sich weitere Rechte bis hin zur Organisations-Administration verschaffen. | behoben in v0.9.1 |
| hoch | OAuth-Anbieter | Refresh-Tokens waren nicht an die App gebunden, für die sie ausgestellt wurden. Ein abgeflossenes Token ließ sich über eine andere App einlösen. | behoben in v0.10.0 |
| hoch | Web- und RSS-Konnektor | Serverseitige Abrufe waren nicht auf öffentliche Adressen beschränkt. Nutzer konnten interne Dienste und Cloud-Metadaten abfragen und bekamen die Antwort zu sehen. | behoben in v0.10.0 |
| mittel | OAuth-Anbieter | Der PKCE-Schutz gegen abgefangene Autorisierungscodes ließ sich umgehen. | behoben in v0.9.1 |
Die Lücke bei der Code-Ausführung setzte ein Konto in der Instanz voraus, ebenso die im Web-Konnektor. Für die Lücke bei den Refresh-Tokens brauchte ein Angreifer ein abgeflossenes Token. Ohne jeden Zugang von außen kam man nach unserem Stand an keine der drei heran. Bei einer Plattform, an der die halbe Belegschaft angemeldet ist, ist "ein Konto" allerdings keine hohe Hürde.
Was ihr tun solltet
- Aktualisiert auf v0.10.0. Das schließt alle dreizehn Funde. Wer noch auf v0.9.1 oder älter läuft, hat die kritische Lücke bei der Code-Ausführung und die beiden hohen im OAuth-Anbieter und im Web-Konnektor weiter offen.
- Setzt
SANDBOX_MODE=dockerausdrücklich, egal wie ihr installiert habt. Bis v0.9.1 fiel jede Installation ohne die Variable still auf die unsichere Variante zurück. Ab v0.10.0 ist die Code-Ausführung ohne gültigen Wert abgeschaltet, und die Variante ohne Isolation (local) startet nur noch, wenn zusätzlichSANDBOX_ALLOW_LOCAL=truegesetzt ist. Prüft nach dem Update in der laufenden Umgebung, welcher Wert tatsächlich gilt, und setztSANDBOX_ALLOW_LOCALnicht auf einem Server, an dem mehrere Menschen angemeldet sind. - Begrenzt den ausgehenden Netzverkehr der Konnektor-Dienste, solange ihr nicht aktualisiert habt. Interne Netze und die Metadaten-Adresse eurer Cloud (169.254.169.254) sollten von dort nicht erreichbar sein. Das schadet auch nach dem Fix nicht.
- Räumt beim OAuth-Anbieter auf. Prüft, welche OAuth-Apps registriert sind und welche Tokens ausgestellt wurden, und widerruft, was ihr nicht zuordnen könnt. Wenn ihr den OAuth-Zugang für eigene Agenten oder MCP-Clients nicht braucht, gebt keine Tokens aus.
- Vergebt Konten nur an Menschen, denen ihr auch einen Shell-Zugang auf den Server geben würdet, solange ihr weder aktualisiert noch die Container-Isolation sicher gesetzt habt. Klingt drastisch, läuft aber genau darauf hinaus.
- Rotiert die API-Schlüssel eurer Websuche-Anbieter, falls ihr eine eingebunden habt. Die waren bis v0.9.0 für jeden Nutzer im Klartext abrufbar.
Warum wir am 27. September veröffentlicht haben
Unsere Regel ist, dass wir einen Fall erst beschreiben, wenn der Fix beim Nutzer angekommen ist. Davon weichen wir nur ab, wenn ein Projekt über Wochen nicht kooperiert. So sah es am 27. September aus, und die Entscheidung haben wir uns nicht leicht gemacht.
Seit der Meldung waren neun Wochen vergangen. Die SECURITY.md des Projekts nennt 30 Tage für kritische Lücken, das Team hatte selbst den 10. September zugesagt. Beide Termine waren verstrichen, ohne dass jemand einen neuen genannt hätte. Eine Zeile mit einem realistischen Zeitplan hätte gereicht, und wir hätten gewartet.
Fairerweise: Die SECURITY.md sieht eine Veröffentlichung "typically within 90 days" nach der Meldung vor, nach dem Fix. Wir waren bei Tag 64 und damit früher. Wir hielten das für vertretbar, weil die Lücken unabhängig von unserer Meldung existieren und wer gezielt danach sucht, sie finden kann. Wer pipeshub betrieb, hatte dagegen keinen Hinweis, dass etwas im Argen liegt.
Ob unsere Veröffentlichung den Ausschlag gegeben hat, wissen wir nicht. Wichtiger ist, dass in drei Tagen alle sechs Lücken im Code zugegangen sind. Das Veröffentlichen der Advisories bei GitHub bleibt Sache des Teams, das tun wir nicht selbst.
Wie es weitergeht
Mit v0.10.0 ist der Fall für uns abgeschlossen: Alle dreizehn gemeldeten Lücken sind behoben und ausgeliefert, 79 Tage nach der Meldung. Auf unserer Statusseite steht er unter dem Klarnamen mit allen Funden. Offen ist noch die Veröffentlichung der übrigen zwölf Advisories bei GitHub. Das Team hat uns am 11. Oktober zugesagt, sie für die behobenen Funde zu veröffentlichen. Bis dahin bleibt dieser Text die einzige öffentliche Beschreibung.
- 12.10.2026: v0.10.0 vom 12.10.2026 liefert die letzten drei Fixes aus, wir haben sie am Code des Releases nachgeprüft. Damit sind alle dreizehn Funde behoben und ausgeliefert. Empfehlung auf v0.10.0 umgestellt, Hinweis zu
SANDBOX_MODEan das neue Verhalten angepasst, Ausblick durch den Abschluss ersetzt. - 11.10.2026: Korrektur: Die kritische Lücke bei der Code-Ausführung ist seit dem 30.09.2026 im Hauptzweig behoben, der Text führte sie bisher als offen. Damit sind alle dreizehn Funde im Code behoben, drei Fixes warten weiter auf ein Release. Hinweis auf die Vorabversionen von 0.9.2 ergänzt, die alle drei enthalten. Der Titel lautete bisher "KIberschutz: pipeshub behebt 12 von 13 Lücken".
- 30.09.2026: Stand nach v0.9.1 und zwei weiteren Fixes im Hauptzweig aktualisiert: zehn Funde ausgeliefert, zwei im Code behoben, einer offen. Die Reaktion des Teams vom 28.09. ergänzt, Empfehlung auf v0.9.1 umgestellt. Der Titel lautete bisher "KIberschutz: pipeshub lässt sechs Lücken offen".
- 28.09.2026: Stand auf v0.9.0 vom 28.09.2026 aktualisiert: Die zwei im Hauptzweig behobenen Funde sind damit ausgeliefert, die Empfehlung lautet jetzt auf v0.9.0. Die sechs offenen sind auch in v0.9.0 nicht behoben.
Quellen9
- pipeshub auf GitHubgithub.com
- pipeshub: SECURITY.mdgithub.com
- Release v0.8.0 (14.09.2026)github.com
- Release v0.9.0 (28.09.2026)github.com
- Release v0.9.1 (28.09.2026)github.com
- Release v0.10.0 (12.10.2026)github.com
- Docker Hub: Tags von pipeshubai/pipeshub-ai (abgerufen 12.10.2026)hub.docker.com
- GHSA-47gf-3x62-7jfm: Token-Verwechslung in den Python-Dienstengithub.com
- KIberschutz: Status aller Fällekiberblick.de