Bug #313
offen[Bugsink] DateMalformedStringException: Failed to parse time string (2026-01'DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)CHR(98)CHR(98),15)'-01) at position 7 ('): Unexpe…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/4349050d-f9a2-4f63-b2fa-38fbd361a835/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
DateMalformedStringException: Failed to parse time string (2026-01'DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)CHR(98)CHR(98),15)'-01) at position 7 ('): Unexpe…
Automatisch erstellt durch n8n
KI-Analyse:
1. Ursache¶
Es handelt sich um einen SQL-Injection-Angriff via Oracle-DBMS-Pipe-Technik (DBMS_PIPE.RECEIVE_MESSAGE). Der Angreifer sendet einen manipulierten Parameter, der als Datum interpretiert werden soll:
(2026-01'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'-01)
Der Wert wird an einer Stelle in den Request-Parametern entgegengenommen und ohne Validierung/Parametrisierung direkt in einen Datums-Kontext eingespeist. PHP wirft DateMalformedStringException, weil an Position 7 das ' nicht als Datum erkannt wird — der Angriff wird also bevor er die Datenbank erreicht durch die Datums-Parse-Schicht abgefangen.
2. Fix (konkret)¶
-
Alle Datums-Parameter strikt validieren vor der Weiterverarbeitung:
$date = \DateTime::createFromFormat('Y-m-d', $input); if (!$date) { throw new \InvalidArgumentException('Invalid date'); } - Prepared Statements verwenden (Doctrine DBAL), nie String-Konkatenation für SQL.
-
Input-Sanitization im Controller/Request-Handler: Typ-Casting auf
DateTimeImmutable, Regex-Check^\d{4}-\d{2}-\d{2}$. - Ggf. WAF-Regel für
DBMS_PIPE,CHR(,UNION SELECT-Muster konfigurieren.
3. Betroffene Extension¶
Aus dem Stack allein lässt sich die Extension nicht eindeutig benennen — der Stack zeigt nur TYPO3-Core-Middleware. Die betroffene Stelle ist der Custom-Code (Extension), der den unsauberen Request-Parameter als Datum entgegennimmt und in eine Query einbaut. Bitte Stacktrace ohne vendor/typo3-Frames posten (eigene /Classes/-Pfade), dann lässt sich die Extension namentlich identifizieren.
4. Confidence¶
95% — Das Muster DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15) ist ein klassisches Oracle-Blind-SQLi-Payload-Signal. Der DateMalformedStringException ist lediglich die Folge-Seite, weil PHP den String vorher parsen will.
Nichts anzuzeigen