Capability Manifests für TYPO3: deklarieren, was eine Extension wirklich tut

Das Konzept-Projekt typo3-capability-manifest führt deklarative Manifeste für TYPO3-Extensions ein: Jede Extension beschreibt in einer YAML-Datei, welche Subsysteme, Datenbanktabellen, Netzwerkverbindungen und Overrides sie nutzt – prüfbar per CLI.

Auf einen Blick

  • Jede Extension deklariert in Configuration/Capabilities.yaml, welche TYPO3-Subsysteme, Datenbanken, Netzwerkverbindungen und XCLASS-Overrides sie nutzt.
  • CLI-Befehle generieren, verifizieren und prüfen Manifeste – mit einem gewichteten Risk Score (network:outbound:any = 5, xclass:override = 4) von 0–15+, der Low / Medium / High / Critical ergibt.
  • Eine Site Capability Policy legt project-weit fest, welche Capabilities erlaubt sind und welcher maximale Risk Score akzeptiert wird.
  • Das Projekt befindet sich im Alpha-Stadium – es ist eine Konzept-Vorstellung, kein produktionsreifer Standard.

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

Das Konzept und die Idee hinter Capability Manifests für TYPO3.

Funktionen im Detail

Manifest-Struktur, CLI-Befehle, Risk Scoring und Site Policy.

Installation

Composer-Installation und erste Schritte mit den CLI-Befehlen.

Fazit

Einschätzung und Ausblick auf die Roadmap.

Ü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.

TYPO3 v13.4 LTS und v14

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üsselBedeutungRisk-Gewicht
network:outbound:anyBeliebige ausgehende HTTP/TCP-Verbindungen5
xclass:overrideXCLASS-Überschreibung von TYPO3-Klassen4
auth:providerEigener Authentication Provider3
database:writeSchreibzugriff auf Datenbanktabellen2
database:readLesezugriff auf Datenbanktabellen1
subsystem:frontendNutzt TYPO3-Frontend-Rendering0

Der Risk Score ist die gewichtete Summe aller deklarierten Capabilities. Schwellenwerte: 0–4 Low, 5–9 Medium, 10–14 High, 15+ Critical.

CLI-Befehle  

BefehlFunktion
capability:generateAnalysiert den Extension-Code und generiert einen Manifest-Entwurf
capability:verifyGleicht Deklaration gegen tatsächlichen Code ab; meldet Abweichungen
capability:auditVollständiger Audit-Report: DECLARED & VERIFIED / DETECTED BUT NOT DECLARED / DECLARED BUT NOT FOUND
capability:policy-checkPrü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:

Die 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

Visualisierung aller installierten Extension-Manifeste und Policy-Status im TYPO3-Backend

Composer-Integration

Warnungen bei composer require, wenn eine Extension die Policy-Schwellenwerte überschreitet

TER-Integration

Manifest-Daten im TYPO3 Extension Repository sichtbar machen – als Zusatzinformation beim Extension-Download

Installation  

Hä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.

Dank

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.

Lassen Sie uns über Ihr Projekt sprechen

Standorte

  • Mattersburg
    Johann Nepomuk Bergerstraße 7/2/14
    7210 Mattersburg, Austria
  • Wien
    Ungargasse 64-66/3/404
    1030 Wien, Austria

Dieser Inhalt wurde teilweise mithilfe von KI erstellt.