Bug #328
offen[Bugsink] DateMalformedStringException: Failed to parse time string (2026-(select 198766*667891 from DUAL)-01) at position 4 (-): Unexpected character
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/170798ff-7301-4430-8af9-5cd0ab29da1f/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
DateMalformedStringException: Failed to parse time string (2026-(select 198766*667891 from DUAL)-01) at position 4 (-): Unexpected character
Automatisch erstellt durch n8n
KI-Analyse:
Analyse des Fehlers:
1. Ursache identifizieren ¶
Der Fehler DateMalformedStringException wird ausgelöst, wenn TYPO3 versucht, einen ungültigen Datumsstring parsiert. Der fehlerhafte String lautet:
"2026-(select 198766*667891 from DUAL)-01".
Dies ist ein klassischer SQL-Injection-Angriff, bei dem über einen Parameter (hier vermutlich ein Datum) schädlicher SQL-Code eingeschleust wird. Der String enthält eine SQL-Subquery (select ... from DUAL), die nicht Teil eines gültigen Datums sein darf. PHP's DateTime-Parser bricht mit der Exception ab, sobald das Zeichen - (Position 4) unerwartet ist.
2. Fix beschreiben (konkret) ¶
-
Input-Validierung: Alle Benutzereingaben (insbesondere Datumsparameter) müssen strikt auf das erwartete Format (z. B.
YYYY-MM-DD) geprüft werden. -
Prepared Statements: Datenbankabfragen müssen immer mit Prepared Statements (z. B. über
TYPO3_DBoder Doctrine DBAL) durchgeführt werden, um Injection zu verhindern. - Fehlerbehandlung: SQL-Fehler sollten nicht an den Client weitergegeben werden. Stattdessen sollte ein generischer Fehler ausgegeben werden.
-
Extension-Prüfung: Die betroffene Extension muss auf sichere Datumsverarbeitung überprüfen (z. B. Verwendung von
DateTime-Objekten statt String-Konkatenation).
3. Betroffene TYPO3 Extension ¶
Der Fehler ist nicht direkt einer Standard-TYPO3-Extension zuzuordnen, sondern resultiert aus einer fehlerhaften benutzerdefinierten Extension oder einem Plugin, das:
- Unsichere Datumsparameter aus der URL oder aus Formularen entgegennimmt.
- Diese ohne Validierung in eine Datenbankabfrage einbindet.
- Keine Prepared Statements verwendet.
Typische Extensions, die solche Muster aufweisen können:
- Individuelle Extensions mit benutzerdefinierten Formularen/Plugins.
- Extensions mit unsicherer Datumsverarbeitung (z. B.
tx_...-Prefixed-Extensions).
4. Confidence (0-100%) ¶
95%
Der Error ist eindeutig auf eine SQL-Injection-Versuchsdatum zurückzuführen. Die Exception wird von PHP's DateTime-Parser ausgelöst, der die ungültige Eingabe erkennt. Die Stacktrace zeigt, dass der Fehler in der TYPO3-Anwendungslogik auftritt (nicht in PHP selbst). Die fehlende Validierung und die Verwendung von SQL-Strings in Datumsparametern sind typische Schwachstellen.
Empfehlung:
Überprüfen Sie alle Extensions auf unsichere Datumsparameter und migrieren Sie auf Prepared Statements. Nutzen Sie TYPO3's Extbase-Validierung oder TYPO3_DB-Abfragen mit prepare()-Methoden.
Nichts anzuzeigen