Wer eine TYPO3-Extension installiert, erhält kaum strukturierte Information darüber, was sie tatsächlich tut: Welche Datenbanktabellen legt sie an? Stellt sie ausgehende Netzwerkverbindungen her? Überschreibt sie TYPO3-Klassen per XCLASS? Diese Fragen lassen sich heute nur durch Lektüre des Quellcodes beantworten – was in der Praxis selten geschieht.
Das Konzept-Projekt typo3-capability-manifest schlägt einen anderen Weg vor: Jede Extension deklariert ihre tatsächlichen Fähigkeiten in einer standardisierten YAML-Datei. CLI-Werkzeuge generieren Manifeste, verifizieren Deklarationen gegen den tatsächlichen Code und berechnen einen Risk Score. Inspiriert wurde das Konzept durch das Cloudflare-EmDash-Modell für WordPress , das einen ähnlichen Ansatz für das WordPress-Ökosystem verfolgt.
Inhaltsverzeichnis
Überblick
Funktionen im Detail
Installation
Fazit
Überblick
TYPO3-Extensions können prinzipiell auf nahezu alle Teile eines TYPO3-Systems zugreifen: Sie können Klassen überschreiben (XCLASS) , Hooks und Events registrieren, Netzwerkanfragen stellen und Datenbankschemas erweitern. Das ist gewollt – es ist ein Teil der Extensibilität, die TYPO3 so flexibel macht. Es macht aber auch die Risikoeinschätzung schwierig.
typo3-capability-manifest löst dieses Problem durch Deklaration: Eine Configuration/Capabilities.yaml-Datei in der Extension beschreibt die tatsächlich genutzten Fähigkeiten. Diese Deklaration kann maschinell gegen den tatsächlichen Code abgeglichen werden. Abweichungen – deklariert aber nicht gefunden, oder gefunden aber nicht deklariert – werden als Audit-Befund gemeldet.
Beispiel-Manifeste für die 20 meistgenutzten TER-Extensions liegen dem Projekt bei und dienen als Referenz für die Manifest-Struktur.
Diese Extension unterstützt TYPO3 ^13.4 || ^14.0 und PHP ^8.2. Sie ist damit nicht auf TYPO3 v14 beschränkt. Der Alpha-Status bedeutet: Das Konzept ist ausgearbeitet und die CLI-Befehle funktionieren, aber das Manifest-Format kann sich noch ändern. Produktiver Einsatz ist auf eigene Verantwortung.
Funktionen im Detail
Manifest-Struktur
Eine Configuration/Capabilities.yaml deklariert, was eine Extension tut:
| Capability-Schlüssel | Bedeutung | Risk-Gewicht |
|---|---|---|
| network:outbound:any | Beliebige ausgehende HTTP/TCP-Verbindungen | 5 |
| xclass:override | XCLASS-Überschreibung von TYPO3-Klassen | 4 |
| auth:provider | Eigener Authentication Provider | 3 |
| database:write | Schreibzugriff auf Datenbanktabellen | 2 |
| database:read | Lesezugriff auf Datenbanktabellen | 1 |
| subsystem:frontend | Nutzt TYPO3-Frontend-Rendering | 0 |
Der Risk Score ist die gewichtete Summe aller deklarierten Capabilities. Schwellenwerte: 0–4 Low, 5–9 Medium, 10–14 High, 15+ Critical.
CLI-Befehle
| Befehl | Funktion |
|---|---|
| capability:generate | Analysiert den Extension-Code und generiert einen Manifest-Entwurf |
| capability:verify | Gleicht Deklaration gegen tatsächlichen Code ab; meldet Abweichungen |
| capability:audit | Vollständiger Audit-Report: DECLARED & VERIFIED / DETECTED BUT NOT DECLARED / DECLARED BUT NOT FOUND |
| capability:policy-check | Prüft alle installierten Extensions gegen die Site Capability Policy |
Site Capability Policy
In config/capability-policy.yaml definiert das Projekt-Team, welche Capabilities erlaubt sind und welcher Risk Score akzeptiert wird:
vendor/bin/typo3 capability:policy-check
# -> Ausgabe: welche Extensions die Policy verletzenDie Policy kennt allow- und deny-Listen für einzelne Capabilities sowie einen globalen max_risk_score. Extensions, die den Schwellenwert überschreiten oder verbotene Capabilities deklarieren, werden als Policy-Verstoß gemeldet.
Roadmap
Das Projekt ist im Alpha-Stadium. Geplante Erweiterungen umfassen:
Backend-Modul
Composer-Integration
composer require, wenn eine Extension die Policy-Schwellenwerte überschreitetTER-Integration
Installation
composer config repositories.typo3-capability-manifest vcs https://github.com/dirnbauer/typo3-capability-manifest.git
composer require dirnbauer/typo3-capability-manifest:@devHäufige Fragen
Fazit
typo3-capability-manifest ist ein frühes Konzept-Projekt – aber es benennt ein konkretes Problem: Die mangelnde Transparenz darüber, was installierte TYPO3-Extensions tatsächlich tun. Deklarative Manifeste, maschinenlesbare Risk Scores und policy-basierte Prüfungen könnten die Sicherheitsbewertung von TYPO3-Instanzen messbar vereinfachen, wenn sich das Format als Standard etabliert.
Das Cloudflare-EmDash-Modell für WordPress zeigt, dass ein solcher Ansatz auf Akzeptanz stoßen kann – der Transfer auf TYPO3 liegt auf der Hand.
Das Konzept basiert auf dem Cloudflare-EmDash-Modell . Dank an die TYPO3-Security-Community für frühe Rückmeldungen. Das Projekt steht unter der GPL.