TYPO3 Core: Stored XSS in der Systemerweiterung Indexed Search

Redakteure mit Recht zum Anlegen oder Ändern von Seiteninhalten können HTML- und Skript-Markup in Seitentitel einbetten, das die im TYPO3-Core ausgelieferte Systemerweiterung Indexed Search ungefiltert in die Suchergebnisse unauthentifizierter Frontend-Besucher rendert.

Advisory-ID: TP-2026-011
Produkt: TYPO3 CMS (weit verbreitetes Open-Source-Enterprise-CMS; betroffen ist die fest im Core ausgelieferte Systemerweiterung Indexed Search, kein Drittanbieter-Addon)
Schwachstellentyp: Stored Cross-Site-Scripting (CWE-79)
CVE: CVE-2026-47348
CVSS 4.0: 5.1 (Mittel) · CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:N/SI:L/SA:N
Betroffene Versionen: 13.0.0 - 13.4.30, 14.0.0 - 14.3.2
Behoben in: 13.4.31 LTS, 14.3.3 LTS
Hersteller-Advisory: TYPO3-CORE-SA-2026-010
Gemeldet: 21. April 2026

Zusammenfassung

TYPO3 CMS ist ein weit verbreitetes Open-Source-Enterprise-Content-Management-System. Indexed Search (ext:indexed_search) ist eine fest im TYPO3-Core ausgelieferte Systemerweiterung (sysext) und kein Drittanbieter-Addon; sie stellt eine Volltextsuche für Frontend-Besucher bereit und gibt zu jedem Treffer den Titel der gefundenen Seite aus. Dieser Seitentitel wird über den f:format.raw-ViewHelper gerendert, der die in Fluid standardmäßig aktive HTML-Kodierung der Ausgabe abschaltet. Ein Backend-Redakteur mit Recht zum Anlegen oder Ändern von Seiteninhalten kann daher beliebiges HTML- und Skript-Markup im Seitentitel hinterlegen, das beim Erscheinen der Seite in einer Suchanfrage unverändert im Browser des Besuchers ausgeführt wird. Im Ergebnis führt ein privilegierter Redakteur ein persistentes Cross-Site-Scripting gegen unauthentifizierte Frontend-Besucher aus. turingpoint hat den Ablauf verifiziert und verantwortungsvoll an den Hersteller gemeldet.

Ursache

Indexed Search baut die Trefferzeilen der Frontend-Suche aus den indexierten Seitendatensätzen auf und gibt das title-Feld der Seite in das Ergebnis-Template von EXT:indexed_search aus. Der Titel wird dabei über den f:format.raw-ViewHelper gerendert, der die von Fluid standardmäßig angewandte htmlspecialchars-Kodierung der Ausgabe gezielt deaktiviert. Der Seitentitel stammt aus dem title-Feld des Seitendatensatzes, das jeder Backend-Benutzer mit Schreibrecht auf die Seite oder ihre Inhalte auf beliebigen Text einschließlich HTML- und Skript-Markup setzen kann. Da der Wert weder beim Speichern noch beim Rendern kodiert wird, erreicht hinterlegtes Markup unverändert das DOM des Besuchers, sobald die indexierte Seite als Suchtreffer erscheint. Das standardmäßig ausgelieferte Frontend-Plugin von Indexed Search stellt diesen Pfad unauthentifizierten Besuchern zur Verfügung, sodass auf Opferseite keine Anmeldung nötig ist und lediglich eine Suche genügt, die die präparierte Seite trifft.

Proof of Concept

Voraussetzung ist ein Backend-Konto mit Recht zum Anlegen oder Ändern von Seiteninhalten sowie ein im Frontend eingebundenes Indexed-Search-Plugin:

# 1) Als Redakteur den Seitentitel mit Skript-Markup belegen:
Seitentitel:  <img src=x onerror=alert(document.domain)>

# 2) Die Seite durch den Indexed-Search-Indexer erfassen lassen
#    (Seitenaufruf bzw. Crawler-Lauf)

# 3) Als unauthentifizierter Besucher im Suchformular nach einem Begriff
#    suchen, der die praeparierte Seite als Treffer liefert.
#    Die Trefferzeile gibt den Titel via f:format.raw aus.

Da Indexed Search den Seitentitel ohne Ausgabe-Kodierung über f:format.raw in die Trefferliste schreibt, wird der onerror-Handler im Browser jedes Besuchers ausgeführt, der die Suchergebnisse aufruft.

Auswirkung

  • Ausführung beliebigen JavaScripts im Browser unauthentifizierter Frontend-Besucher, die eine Suche ausführen, die die präparierte Seite trifft.
  • Diebstahl von Session-Cookies und CSRF-Tokens sowie Aktionen im Namen angemeldeter Nutzer, die die Suchergebnisse aufrufen.
  • Phishing und Inhaltsmanipulation innerhalb der vertrauenswürdigen TYPO3-Domain.
  • Persistente Wirkung: Das Markup bleibt im indexierten Seitentitel gespeichert und trifft jeden Aufruf der Suchergebnisse erneut.

Referenzen

Steckt so etwas in Ihrer Software?

Diese Schwachstelle hat unser Team im Rahmen seiner Arbeit gefunden. Lassen Sie Ihre Anwendungen von denselben Spezialisten prüfen, mit einem Penetrationstest von turingpoint.