TYPO3 Release 13.4.18

In der Reihe TYPO3 Release-Notizen beleuchten wir regelmäßig die wichtigsten Bug-Fixes/Security-Issues oder wichtigen Änderungen in einem neuen Patchlevel-Release. Diese Releases sind gemäß Roadmap bereits terminiert und erscheinen grob einmal im Monat.
Bugs haben je nach Projekt unterschiedliche Auswirkungen. Was in einem Projekt kritisch ist, kann in einem anderen kaum eine Rolle spielen. Unsere Gewichtung ist daher subjektiv und soll die Relevanz anderer Fixes nicht herabspielen.
Aktueller Release
Das aktuelle Release hat vor allem kritische Sicherheits-Fixes, siehe auch Security Advisories: https://typo3.org/help/security-advisories
Abseits davon gab es in den 52 Änderungen vor allem eine Anpassung im Extbase-Datei-Upload, wo ein neuer verpflichtender MIME-Validator sicherstellt, dass Fehler in MIME-Typ-Zuordnungen korrekt ausgegeben werden (statt eine PHP Exception zu werfen).
Zudem gab es kleinere Backend-GUI Anpassungen, bessere Rechte-Auswertung (vor allem bei pid=0 Datensätzen) und Fluid-Anpassungen zur Vorbereitung auf das nächste Major-Release. Grundsätzlich ist TYPO3 auch mit der aktuellen PHP 8.5-Version kompatibel.
(Die Änderungen in TYPO3 13.4.17 sind in diesem Artikel ebenfalls aufgeführt, welches als kleines Release primär für eine Sicherheitslücke der SVG-Bibliothek eingeschoben wurde.)
Sicherheit
- Sehr wichtig(13.4.17) Einbindung der neuen Version von "enshrined/svg-sanitize", die Sicherheits-Fixes enthält für die Einbindung von Inline-SVG-Grafiken mit JavaScript-Code. Diese konnte entstehen bei Tags in SVG-Dateien mit unterschiedlicher Groß/kleinschreibung von XML-Attributen. Es kommt nur zum Tragen, wenn ein Projekt keine CSP-Regeln für Inline-JavaScript-Verbote definiert und dennoch SVG-Grafiken inline (!) in HTML eingebettet sind. Links auf SVGs als Grafik-Datei sind nicht betroffen.
- WissenswertTYPO3-CORE-SA-2025-017: Open Redirect in TYPO3 CMS: Bei Nutzung der Methode `GeneralUtility::sanitizeLocalUrl` war es möglich dass URLs, die an diese Methode übertragen wurden, nach der Verarbeitung eine Weiterleitung auf bösartige URLs durchführen konnte.
- TYPO3-CORE-SA-2025-018: Denial of Service in TYPO3 Bookmark Toolbar: Durch Admin-Aktionen im TYPO3-Backend könnten Bookmarks für andere User fehlerhaft gespeichert werden und dadurch das System für den Eigentümer desLesezeichens unnutzbar machen, bis diese Bookmarks durch Administratoren wieder gelöscht wurden.
- TYPO3-CORE-SA-2025-019: Insufficient Entropy in Password Generation: Die Erzeugung von Passwörtern mit der TYPO3-Crypto-API kann unter gewissen Regel-Umständen eine geringere Entropie als gewünscht besitzen. Das bedeutet, dass ein neu erstelltes (!) Passwort leichter zu raten sein könnte als vorgesehen.
- TYPO3-CORE-SA-2025-020: Information Disclosure via File Abstraction Layer: Einige Datei-Operationen (Upload, Umbenennung) in der Datei-Liste kann bei gewissen manipulierten Dateinamen dafür sorgen dass Pfad-Informationen des TYPO3-Backends "verraten" werden (Redakteursaccount notwendig).
- Sehr wichtigTYPO3-CORE-SA-2025-021: Broken Access Control in Backend AJAX Routes: Admin-Aktionen im Backend konnten aufgerufen werden, wenn man deren URLs und Parameter kannte. Hierdurch konnten ggf. Daten ausgelesen oder manipuliert werden. Hierfür war dennoch ein TYPO3-Backendzugang notwendig. TYPO3-Core-Module nutzen ein neues Attribut "inheritAccessFromModule", welche auch für eigene Backend-Extensions für korrekte Rechte-Checks nun genutzt werden sollte.
- Sehr wichtigTYPO3-CORE-SA-2025-022: Information Disclosure in Workspaces Module: Bei Nutzung der Workspace-Extension kann das Workspace-Modul über die Sicherheitslücke der defekten Acess Control via AJAX dazu genutzt werden um beliebige Inhalte in den Datenbanktabellen auszulesen. Hierfür war ein Backend-Redakteurszugang notwendig.
- Sehr wichtigTYPO3-CORE-SA-2025-023: Information Disclosure via CSV Download: Bei Nutzung des CSV-Datensatzdownload-Features können die Datenbankspalten (nicht Inhalte) von Tabellen ohne Zugriffsrechte ausgelesen werden. Hierfür war ein Backend-Redakteurszugang notwendig.
Regression-Bugfixes
TCA / Schema API / Record API
Site Settings / Site Sets
EXT:form
- (13.4.17) Das autocomplete-Attribut der honeypot-Felder nutzt nun W3C-konformes Markup
- Die Option "shouldShowPreselectedValueColumn" wurde entfernt, da sie funktional nie implementiert wurde
- Das Attribut "fluidAdditionalAttribues" wird nicht mehr als "null" sondern als leeres Array interpretiert um Fehler zu vermeiden, wenn es in einem Element nicht gesetzt wurde
API (Frontend / Extbase)
- Sehr wichtigWenn im Extbase-Dateiupload der optionale MimeTyp-Validator nicht eingesetzt wurde, konnten ungültige Dateiuploads bei unerlaubten MIME-Typen (Sicherheitspatch, "Mime-Typ-Konsistenz") zu einer Exception führen. Dieser Patch stellt durch den neuen (forcierte) Validator "FileExtensionMimeTypeConsistencyValidator" immer sicher, dass unerlaubte Mime-Typen stets als übliche Extbase-Fehlermeldung dargestellt werden können. Zusätzlich kann der neue "FileExtensionValidator" genutzt werden um beim File-Upload komfortabel gewisse Datei-Endungen (statt nur der MIME-Typen) zu definieren.
- WissenswertDie Berechnung der Cache-Zeit im HTTP-Cache-Header wertet nun die Cache-Dauern der vorhandenen Inhaltsobjekte (statt nur des Seitenobjekts) korrekt aus
- Das Admin-Panel (Debugging-Leiste im Frontend) kann simulierte Frontend-Benutzergruppen nun auch im Falle von Untergruppen korrekt auswerten
Fluid
- (13.4.17) Die Nutzung von "ViewHelperResolverDelegates" zum Überschreiben von Fluid-Namespaces (seit Fluid 4.3) ist nun korrekt in der Service-Auto-Configuration vorgesehen.
- Wissenswert(13.4.17) Einfügung eines Functional Tests zur Demonstration, dass theoretisch der Austausch von Fluid zu anderen Templating-Systemen im Core grundsätzlich möglich ist (dank ViewFactoryInterface, neu mit TYPO3 v13). Dieser Test kann von Entwickler:innen gut genutzt werden, um einen solchen Austausch tatsächlich durchzuführen.
- Als Vorbereitung auf Fluid 5 (in Entwicklung) wird nun sichergestellt, dass eingesetzte Fluid-Namespaces für ViewHelper-Aufrufe auch bei vererbten Templates immer definiert sein müssen. Der TYPO3-Core hat dies in zwei kleineren Partial-Fällen nicht berücksichtigt.
- Pflicht-Argumente bei ViewHelpern sollten keinen "default" definieren, weil sich dies gegenseitig ausschließt. Vorbereitung der TYPO3-Core-ViewHelper um beim Update auf Fluid 5 (in Entwicklung) keine Fehlermeldungen zu erzeugen.
Content Security Policy (CSP)
Backend: UI
- (13.4.17) Eine Info-Box bei der Verwaltung von Backend-Benutzergruppen wird angezeigt, wenn keine Backend-Usergruppen vorhanden sind
- (13.4.17) Der Bestätigungsdialog beim Wechseln von Datensatz-Typen (doktyp) wurde inhaltlich präzisiert
- Im Popup für die Auswahl von Dateien ("File Selector Browser") fehlte die korrekte Überschrift
- Bei der Darstellung des Verlaufsprotokolls (History) von Elementen wird die Zeitzone bei der Uhrzeit korrekt berücksichtigt
- WissenswertDie Änderung der Sortierreihenfolge in der Dateiliste wird nun korrekt igespeichert und wiederhergestellt, so dass die Sortierung wieder korrekt "gemerkt" wird.
- Das Parsing der Zeichentrenner für das "TextTableElement" wurde verbessert um beim erstmaligen Speichern eines solchen Objekts keine fehlerhaften Tabellendaten im GUI auszugeben.
Backend: API
- (13.4.17) Anpassung vom PageRepository für optimierten Codefluss (early returns, weniger Verschachtelung)
- (13.4.17) Einfache Code-Aufräumarbeiten im DataMapProcessor in Bezug auf Relation-Handling
- (13.4.17) Die Anzeige des Clipboards in der Listenansicht wertet nun die TypoScript-Konfiguration `mod.web_list.enableClipBoard=activated` in Verbindung mit `allowClipboard` korrekt aus.
- (13.4.17) Der Exception-Fehlertext von InvalidActionNameException wurde verbessert, wenn eine Extbase-Action als Backend-Modul nicht aufgerufen werden konnte.
- Sicherstellung, dass die Referrer-Weiterleitung in der TYPO3-Backend-Sicherheitsschicht den Parameter "referrer-refresh" korrekt (und nicht mehrfach) anhängen kann
- Einfache Code-Aufräumarbeiten im DatebaseRecordList Objekt
- Korrekte Auswertung von Platzhaltern in der "TypeConverterException"
- Korrektur eines Tippfehlers in der Benennung der internen "cache-timeout" Middleware
- WissenswertBeim Upload von Dateireferenzen in einem neuen Objekt was noch nie gespeichert wurde, konnten diese Referenzen auf PID=0 gespeichert werden, wonach diese nur noch von Administratoren gelöscht werden konnten. Nun werden die Referenzen korrekt der PID des angelegten Objekts (z.b. einer Seite) zugeordnet.
- WissenswertDie Speicherung von FAL-Metadaten-Datensätzen auf der pid=0 Ebene führt im Popup des Änderungsprotokoll-Popups nicht mehr zu falscher Rechte-Auswertung, so dass Redakteure keine Fehlermeldung mehr erhalten beim Anpassen von Datei-Metadaten.
- WissenswertVermeidung eines falschen Seitenbaum-Kontextwechsels beim Aufruf von Objekt-Infos z.B. in der Datei-Listenansicht und dann zurück zur Seitenansicht. Durch die Nutzung einer Datei-ID anstelle der Seiten-ID wurde versucht auf eine nicht existierende bzw. falsche Seite zuzugreifen und erforderte einen neuen Klick auf den Seitenbaum.
- Zwei seit PHP 8.0 als NO-OP definierte Funktionsaufrufe wurden entfernt um Deprecation-Warnungen für PHP 8.5.0 zu vermeiden.
- WissenswertSeitenübersetzungen sind nicht mehr möglich, wenn ein Redakteur keine Unterseiten anlegen darf.
- Das Event "ModifyNewContentElementWizardItemsEvent" erhält nun auch den Request als Kontext, um darauf leichter zuzugreifen
- Weitere MIME-Typ-Aliase (für exe/json/srt-Dateien), um wie gewohnt Dateien im Backend hochladen zu können nach dem Security-Patch für MIME-Typ-Konsistenz.
PHP-Typfehler
Backend: FormEngine
Backend: Flexforms
Backend: EXT:workspaces
Strukturelles
- (13.4.17) Code-Cleanup: PHPStan-Fehlermeldungen zu "nullsafe.neverNull" behoben um bessere Code-Qualität zu erreichen
- (13.4.17) Typ-Inferenz von EventDispatcher->dispatch() wird so deklariert dass z.B. PHPStorm für Entwickler dessen Return-Typen korrekt auswerten kann für Auto-Completion.
- WissenswertFür PHP 8.5 Kompatibilität werden für die Nutzung der "SplObjectStorage" Methoden nicht mehr die alten Namen (contains / attach / detach) genutzt, sondern die nun bevorzugten Namen (offsetExists / offsetSet / offsetUnset)
- Diverse PHPUnit Testmethoden werden für künftige Kompatibilität nicht mehr statisch aufgerufen sondern via `$this->...`.
Dependencies
- WissenswertUpdate Fluid 4.4.3: NULL-Werte für component defaults sind nun möglich
- Update der phpunit Abhängigkeiten für PHP 8.5.0-Support