TYPO3 Extension Security: Was wir von Cloudflares EmDash lernen

Cloudflare hat mit EmDash ein CMS vorgestellt, das Plugin-Sicherheit durch Capability Manifests revolutioniert. Wir übertragen dieses Konzept auf TYPO3 — als Open-Source-Tool für Extension-Audits.

Auf einen Blick

  • Cloudflare hat EmDash veröffentlicht — ein Open-Source-CMS mit Capability Manifests, die Plugin-Berechtigungen physisch durchsetzen.
  • PHP kann keine v8-Isolates — aber Deklaration + Static Analysis liefern einen Großteil des Sicherheitsgewinns für TYPO3.
  • Unser Open-Source-Tool typo3-capability-manifest bringt Extension-Audits, Risikobewertung und Policy-Enforcement nach TYPO3.
  • Enthält Beispiel-Manifests für die 14 meistgenutzten TER-Extensions mit konkreten Risikobewertungen.

Cloudflare hat mit EmDash ein ambitioniertes Projekt vorgestellt: Ein komplett neues CMS, geschrieben in TypeScript, gebaut auf Astro, mit einem radikal anderen Ansatz für Plugin-Sicherheit. Das Timing — 1. April — sorgte für berechtigte Skepsis, aber das Produkt ist real: Der Code liegt auf GitHub, die Architektur ist durchdacht, und Branchengrößen wie Joost de Valk (Gründer von Yoast SEO) haben sich ernsthaft damit auseinandergesetzt.

Für TYPO3-Agenturen ist EmDash kein direkter Konkurrent. Aber die Ideen dahinter verdienen Aufmerksamkeit — insbesondere das Capability-Manifest-Konzept.


Inhaltsverzeichnis  

EmDash: Das neue CMS

Was Cloudflare gebaut hat und warum es relevant ist

Das Plugin-Problem

96 % aller WordPress-Lücken stammen aus Plugins

Übertragung auf TYPO3

Drei Konzepte, die sofort anwendbar sind

Capabilities.yaml

Das Manifest-Format für TYPO3-Extensions

Risikobewertung

Scoring-System für Extension-Capabilities

Site Policy

Enterprise-Governance für Extensions

EmDash vs. TYPO3

Runtime-Isolierung vs. Static Analysis

Installation

Composer, CLI-Befehle, GitHub-Repo


EmDash: Das neue CMS von Cloudflare  

Am 1. April 2026 hat Cloudflare EmDash veröffentlicht — ein Open-Source-CMS, das sich als "spiritueller Nachfolger von WordPress" positioniert. Der vollständige Quellcode liegt auf GitHub, das Projekt läuft auf Cloudflares eigener Infrastruktur (D1, R2, Workers) oder auf jedem Node.js-Server mit SQLite.

Die Kern-Innovation: Jedes Plugin deklariert in einem Capability Manifest, welche Berechtigungen es benötigt. Nicht deklarierte Fähigkeiten sind physisch unmöglich — durchgesetzt durch v8-Isolates (Cloudflare Dynamic Workers).

Was ist ein Capability Manifest?

Ein Capability Manifest ist eine strukturierte Deklaration aller Subsysteme, auf die ein Plugin zugreifen darf. Vergleichbar mit App-Berechtigungen auf dem Smartphone: Eine Taschenrechner-App, die Kamerazugriff verlangt, wäre sofort verdächtig. Das gleiche Prinzip auf CMS-Plugins angewandt — aber mit technischer Durchsetzung statt nur Transparenz.

Joost de Valk, Gründer von Yoast SEO und eine der einflussreichsten Stimmen im WordPress-Ökosystem, bezeichnete EmDash als das Interessanteste, was dem Content-Management seit Jahren passiert ist. Die Tech-Presse reagierte gemischt: Technisch beeindruckt, aber skeptisch gegenüber den Marktchancen gegen WordPress mit über 43 % Marktanteil und 60.000 Plugins.

Dieses Plugin kann ausschließlich Inhalte lesen und E-Mails senden. Kein Dateizugriff, keine Datenbankmanipulation, kein ausgehender Netzwerkverkehr — technisch unmöglich, nicht nur per Konvention.


Das WordPress-Problem (und warum TYPO3 nicht immun ist)  

96 % aller WordPress-Sicherheitslücken stammen aus Plugins. Der Grund ist architektonisch: Ein WordPress-Plugin läuft im selben PHP-Prozess wie WordPress selbst und hat vollen Zugriff auf Datenbank, Dateisystem und Netzwerk. Ein kompromittiertes Plugin bedeutet ein kompromittiertes System.

EmDash löst das radikal: Jedes Plugin läuft in einem eigenen v8-Isolate. Es kann nur die Capabilities nutzen, die es deklariert hat.

TYPO3 ist nicht immun

TYPO3 hat ein differenzierteres Berechtigungsmodell als WordPress — Backend-Benutzergruppen mit granularen Rechten, ACLs auf Seiten- und Content-Ebene, ein PSR-15-Middleware-Stack für Request-Filterung. Aber auf Extension-Ebene existiert dasselbe Grundproblem: Jede Extension läuft im selben PHP-Prozess und kann prinzipiell auf alles zugreifen. Eine Extension mit einer einzigen Schwachstelle gefährdet die gesamte Installation.

Die Frage ist nicht, welches CMS das sicherere Grundsystem hat. Die Frage ist: Wissen Administrator:innen, was ihre Extensions tatsächlich tun? Welche Tabellen liest EXT:news? Macht EXT:solr ausgehende Netzwerkverbindungen? Überschreibt EXT:gridelements Core-Klassen via XCLASS?


Was wir von EmDash übernehmen  

PHP hat keine v8-Isolates. Wir können Extensions nicht physisch voneinander isolieren — zumindest nicht ohne fundamentale Architektur-Änderungen. Aber wir können einen Großteil des Sicherheitsgewinns durch Deklaration und Audit erreichen:

Kerngedanke

Man braucht keine Runtime-Isolierung, um den Großteil des Nutzens zu erzielen. Allein zu wissen, was eine Extension tut — und das verifizieren zu können — ist transformativ für Enterprise-TYPO3-Governance.

Konkret übertragen wir drei EmDash-Konzepte auf TYPO3:

  1. Capability Manifests — Jede Extension deklariert in einer Capabilities.yaml, welche Subsysteme sie nutzt
  2. Static Analysis — Ein Audit-Tool verifiziert die Deklaration gegen den tatsächlichen Code
  3. Site Policies — Administrator:innen definieren, welche Capabilities erlaubt sind

Das Manifest-Format: Capabilities.yaml  

Jede TYPO3-Extension erhält eine neue Datei unter Configuration/Capabilities.yaml:

Administrator:innen sehen sofort: Diese Extension greift auf eigene Tabellen und einige Core-Tabellen zu, macht keine ausgehenden Netzwerkverbindungen und überschreibt kein XCLASS. Risiko: niedrig.


Risikobewertung  

Das Audit-Tool berechnet einen Risk Score basierend auf den deklarierten (und erkannten) Capabilities:

CapabilityGewichtBegründung
database:read (eigene Tabellen)0Normaler Betrieb
database:read (Core-Tabellen)1Liest Systemdaten
database:write (Core-Tabellen)3Modifiziert Systemdaten
network:outbound (spezifischer Host)2Externe Abhängigkeit
network:outbound (uneingeschränkt)5Datenexfiltrations-Risiko
xclass:override4Überschreibt Core-Verhalten
auth:provider4Kontrolliert Authentifizierung
site:middleware3Fängt alle Requests ab
eval()/exec() erkannt5Code-Ausführungsrisiko

Risikostufen: 0–4 Low, 5–9 Medium, 10–14 High, 15+ Critical.


Das CLI-Tool  

Unser Open-Source-Paket webconsulting/typo3-capability-manifest bietet drei Befehle:

Der Generator analysiert den PHP-Code mit nikic/php-parser, scannt Services.yaml, ext_localconf.php, TCA/Overrides/, RequestMiddlewares.php und ext_tables.sql und erzeugt ein vollständiges Manifest.


Site Capability Policy  

Für Enterprise-Umgebungen können Administrator:innen definieren, welche Capabilities erlaubt sind:

CI/CD-Integration

Ein typo3 capability:policy-check im Build-Prozess verhindert, dass Extensions mit unerlaubten Capabilities deployt werden. Das Policy-File wird versioniert, der Check läuft automatisch — Extension-Governance ohne manuellen Aufwand.


Vergleich: EmDash vs. TYPO3 Capability Manifests  

FeatureEmDash (Cloudflare)TYPO3 Capability Manifests
EnforcementRuntime (v8 Isolate)Deklarativ + Static Analysis
Kann ein Plugin schummeln?Nein — physisch unmöglichJa — aber erkennbar
Install-Time TransparenzJaJa
Runtime-MonitoringJaPhase 4 (geplant)
Ecosystem-Adoption nötigNeues EcosystemBestehendes Ecosystem
Wert ohne EnforcementN/AHoch — Sichtbarkeit + Governance
SpracheTypeScriptPHP + YAML

Was die Static Analysis erkennt  

Das Tool nutzt nikic/php-parser für AST-basierte Analyse und Pattern-Matching für Konfigurationsdateien:


Beispiel-Manifests: Top TER-Extensions  

Das Repository enthält Stub-Manifests für die meistgenutzten TER-Extensions. Hier ein Überblick der Risikobewertungen:

ExtensionRisikoWesentliche Capabilities
newsLowKein Netzwerk, kein XCLASS
powermailMediumMail, File-Write, Scheduler
maskMediumDynamische TCA, File-Write
solrMediumNetzwerk (Solr), Middleware
gridelementsMediumXCLASS-Overrides
containerLowTCA-Override only
vhsLowRead-only ViewHelpers
ke_searchLowKein Netzwerk, lokaler Index
yoast_seoMediumMiddleware, TCA-Override
realurlHighXCLASS, Middleware (Legacy)
content_defenderLowRead-only TCA
tt_addressLowEinfache Adressdaten
static_info_tablesLowRead-only Referenzdaten
sr_feuser_registerMediumSchreibt fe_users, sendet Mails

Mögliche Roadmap  

Phase 1: CLI-Tool + Manifest-Format

Open-Source-Release des Audit-Tools. Manifest-Schema, Static Analysis Engine, drei CLI-Befehle. Beispiel-Manifests für Top-Extensions.

Phase 2: Backend-Modul + Composer-Plugin

Visuelles Dashboard im TYPO3-Backend (Admin Tools). Composer-Plugin mit Install-Time-Warnungen. Site Capability Policy Engine.

Phase 3: Community-Adoption + TER

Proposal an TYPO3 Core Team. TER-Integration (Capability-Badges). CI-Templates für GitHub Actions und GitLab CI.

Phase 4: Runtime-Monitoring

PSR-15 Middleware für Capability-Logging in Produktion. Dashboard: deklariert vs. tatsächlich genutzt über Zeit.

Installation und Nutzung  

Für TYPO3-Entwickler:innen

typo3-capability-manifest auf GitHub

Das komplette CLI-Tool mit Static Analysis Engine, Manifest-Schema, Beispiel-Manifests und Unit-Tests. MIT-lizenziert, ready to use.

Repository öffnen

Fazit  

EmDash zeigt, wie CMS-Plugin-Sicherheit im Jahr 2026 aussehen sollte: deklarativ, transparent, auditierbar. Ob EmDash WordPress ablösen wird, bleibt abzuwarten — das Ecosystem-Problem ist real. Aber die Architektur-Ideen dahinter sind sofort anwendbar.

Für TYPO3 bedeutet das: Wir müssen nicht auf Runtime-Isolierung warten. Capability Manifests mit Static Analysis und Policy Enforcement geben uns heute schon die Transparenz und Governance, die Enterprise-Kund:innen brauchen.

Die wichtigsten Erkenntnisse:

  • Extension-Sicherheit ist kein WordPress-exklusives Problem — TYPO3 profitiert vom gleichen Ansatz
  • Deklaration + Audit liefert einen Großteil des Nutzens von Runtime-Isolierung
  • Das Tool ist ab sofort nutzbar — composer require webconsulting/typo3-capability-manifest
  • Jede TYPO3-Agentur kann ihre Extensions heute auditieren

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.