Zurück

TypoVigil

Über das Projekt

Wer mehrere TYPO3-Installationen betreut, muss für jede einzeln wissen, ob sie noch aktuell ist und ob eine der eingesetzten Erweiterungen eine bekannte Sicherheitslücke hat. Das bedeutete bisher: in jedes Backend einloggen, Versionen vergleichen, Sicherheitsmeldungen nachschlagen. TypoVigil dreht das um. Jede überwachte Installation meldet von sich aus, was bei ihr installiert ist, und eine zentrale Stelle gleicht das gegen die offiziellen Quellen ab. Das Projekt besteht aus zwei TYPO3-Extensions: einem schlanken Agenten für die überwachten Installationen und dem Hub, der die Auswertung übernimmt.

Herausforderung

  • Der Update- und Sicherheitsstand mehrerer TYPO3-Installationen soll an einer Stelle sichtbar sein, ohne sich in jedes Backend einzeln einzuloggen.
  • Die überwachten Installationen dürfen dafür keinen Zugang von außen öffnen — auch Seiten hinter einer Firewall müssen teilnehmen können.
  • Der Zugriffstoken darf nicht im Klartext übertragbar sein und nicht dauerhaft im Hub liegen.
  • Die Einrichtung auf einer überwachten Seite soll ohne Suche in der Erweiterungskonfiguration möglich sein.
  • Eine Installation, deren Agent stillschweigend ausfällt, darf nicht fälschlich als gesund erscheinen.
  • Kunden sollen den Status ihrer eigenen Projekte einsehen können, ohne Zugang zum TYPO3-Backend.
  • Erkennt der Hub eine Sicherheitslücke, soll die betroffene Installation nicht ungesichert bleiben, bis jemand manuell an ein Backup denkt.
  • Ob ein gefundenes Update unbedenklich ist oder Breaking Changes mit sich bringt, ließ sich bisher nur durch eigene Recherche im Changelog klären.
  • Eine solche Risikoeinschätzung soll ausschließlich der Agentur zur Verfügung stehen, niemals dem betroffenen Kunden.

To-Dos

  • Agent-Extension, die Core-Version und alle aktiven Erweiterungen mit ihren von Composer aufgelösten Versionen erfasst und per HTTPS an den Hub meldet.
  • Hub-Extension mit Backend-Modul: Projekte und Kunden verwalten, Zugriffstoken erzeugen, Status je Installation anzeigen.
  • Abgleich gegen get.typo3.org, Packagist und die Sicherheitsmeldungen, mit Zwischenspeicher, damit die Quellen nicht für jede Installation erneut befragt werden.
  • Ein-Klick-Einrichtung: Der Hub erzeugt einen Setup-Link, der Hub-Adresse und Token auf der überwachten Seite automatisch einträgt.
  • Backend-Modul im Agenten für Konfiguration, Verbindungsstatus und einen manuellen Testversand.
  • Tägliche Meldung per Planer-Aufgabe, zusätzlich sofort bei jeder Änderung am Erweiterungsbestand.
  • Frontend mit Kundenlogin, das jedem Kunden nur die eigenen Projekte zeigt.
  • Anbindung an die API der Hosting-Plattform, über die Backups von Datenbank und Dateiverzeichnis ausgelöst und geprüft werden können.
  • Automatisches Sofort-Backup, sobald ein Fund als kritisch eingestuft wird — vor jedem weiteren Schritt, nicht erst auf Zuruf.
  • Anbindung an einen KI-Dienst, der bei einem kritischen Fund den Changelog der betroffenen Version zusammenfasst und das Risiko eines Updates einschätzt.
  • Anzeige dieser Risikoeinschätzung ausschließlich für die Agentur-Rolle im Kundenportal, mit einem Freigabe-Schritt vor der eigentlichen Aktualisierung.

Lösung

Der Agent meldet ausschließlich nach außen und öffnet keinen eigenen Endpunkt — die überwachte Installation muss von außen nicht erreichbar sein. Gemeldet werden nur Core-Version und Paketliste, keine Inhalte und keine Zugangsdaten. Die Versionsnummern stammen aus der Composer-Auflösung, weil die Angaben in ext_emconf.php häufig davon abweichen. Übertragen wird per Bearer-Token über HTTPS; über einfaches http verweigert der Agent den Versand. Im Hub liegt vom Token nur der Hash, angezeigt wird er genau einmal beim Anlegen des Projekts.

Der Hub gleicht die gemeldeten Pakete gegen get.typo3.org, Packagist und die Sicherheitsmeldungen ab und zeigt je Installation, was aktuell ist, was veraltet ist und welches Update eine bekannte Lücke schließt. Bleibt eine Meldung über achtundvierzig Stunden aus, wird die Installation als stumm markiert — ein ausgefallener Agent fällt damit auf, statt als gesunde Seite durchzugehen. Die Einrichtung läuft über einen Setup-Link aus dem Hub, der Adresse und Token auf der Zielseite selbst einträgt; alternativ gibt es dafür ein eigenes Backend-Modul, das zugleich den Verbindungsstatus zeigt und einen Testversand erlaubt. Im Frontend sehen Kunden nach dem Login den Stand ihrer eigenen Projekte, ohne Zugang zum TYPO3-Backend.

Findet der stündliche Abgleich einen kritischen Fund, sichert der Hub die betroffene Installation automatisch ab: ein Sofort-Backup des Dateiverzeichnisses über die API der Hosting-Plattform, dazu eine Prüfung, ob das letzte planmäßige Datenbank-Backup aktuell genug ist — Datenbanken lassen sich dort nur über einen Zeitplan sichern, nicht auf Zuruf, weshalb der Hub die Aktualität statt eines Sofort-Backups verlangt. Parallel dazu erstellt eine KI-gestützte Risikoanalyse einen kurzen Bericht: Sie fasst die Sicherheitsmeldung und den Changelog zwischen installierter und neuer Version zusammen und schätzt Breaking Changes, Testaufwand und Dringlichkeit ein. Dieser Bericht erscheint ausschließlich im Kundenportal und dort nur für die Agentur-Rolle — dem Kunden bleibt er verborgen. Erst nach einer bewussten Freigabe durch die Agentur gilt ein Fund als abschließend geprüft; das eigentliche Einspielen des Updates bleibt bewusst ein manueller, separater Schritt.