Bug #214
offen[Bugsink] ErrorException: Warning: filesize(): stat failed for /srv/www/www.verl.de/pages/public/uploads/tx_powermail/1jpdhqj4y___waitfor_delay__0_0_15__--
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/f48abba7-22bb-4863-9e54-1fc156a51cc0/event/last/
Typ: NEW issue
Projekt: www-verl-de
Bugsink Alert
ErrorException: Warning: filesize(): stat failed for /srv/www/www.verl.de/pages/public/uploads/tx_powermail/1jpdhqj4y___waitfor_delay__0_0_15__--
Automatisch erstellt durch n8n
KI-Analyse:
1. Ursache identifizieren
Der Warning entsteht bei dem Aufruf von filesize() für den Pfad
/srv/www/www.verl.de/pages/public/uploads/tx_powermail/1jpdhqj4y___waitfor_delay__0_0_15__--
-
filesize()prüft über das Dateisystem, ob die angegebene Datei existiert und gibt deren Größe zurück. - Der übermittelte Dateiname enthält das Muster
___waitfor_delay__0_0_15__--, das typisch für einen SQL‑Injection‑ bzw. Zeit‑Delay‑Versuch ist (z. B.WAITFOR DELAY '0:0:15'). - Beim Versuch, eine Datei mit diesem Namen hochzuladen, schlägt der Upload‑Prozess fehl (keine tatsächliche Datei wird im Filesystem angelegt). Anschließend versucht die Powermail‑Logik, die Größe der (nicht vorhandenen) hochgeladenen Datei zu ermitteln – hier schlägt
filesize()fehl und wirft die Warning “stat failed”.
Kurz gesagt: Die Powermail‑Extension ruft filesize() für eine Datei auf, die entweder nie hochgeladen wurde oder wegen eines fehlgeschlagenen Uploads (häufig durch einen böswilligen Angriffsversuch) nicht im Upload‑Verzeichnis existiert.
2. Fix beschreiben (konkret)
Der sichere Weg ist, vor dem Aufruf von filesize() zu prüfen, ob die Datei tatsächlich existiert und eine reguläre Datei ist. Ist dies nicht der Fall, kann entweder eine Standard‑Größe (z. B. 0) verwendet oder der Vorgang übersprungen werden.
Betroffener Code‑Snippet (typisch in Classes/Finisher/UploadFinisher.php oder ähnlichen Klassen der Powermail‑Extension):
// Original (problematic)
$size = filesize($filePath);
// Fix
if (is_file($filePath)) {
$size = filesize($filePath);
} else {
// Datei existiert nicht – entweder 0 setzen oder Exception werfen, je nach gewünschtem Verhalten
$size = 0; // oder: throw new \RuntimeException('Uploaded file not found: ' . $filePath);
}
Alternativ kann man den @‑Operator nutzen, um die Warning zu unterdrücken, jedoch ist das nicht empfohlen, weil es das eigentliche Problem (fehlende Datei) verschleiert. Der explizite is_file()‑Check ist die sauberste Lösung.
3. Betroffene TYPO3 Extension nennen
Die Warning stammt aus dem Verzeichnis uploads/tx_powermail/ und der Stack‑Trace führt über die allgemeinen TYPO3‑Http‑Middleware‑Schichten zurück zum Kern‑Request‑Handling. Der konkrete Auslöser liegt in der Powermail‑Extension (typischerweise Package name typo3/cms-powermail oder tx_powermail).
4. Confidence (0‑100 %)
Auf Basis des eindeutigen Dateipfads (tx_powermail/*), des typischen Musters im Dateinamen (Injection‑Versuch) und des Umstands, dass filesize() nur auf réellement vorhandene Dateien angewendet werden sollte, beträgt meine Sicherheit:
Confidence: 95 %
(Die restlichen 5 % berücksichtigen das theoretische Szenario, dass ein anderes Drittanbieter‑Modul denselben Upload‑Pfad nutzt – jedoch ist das bei einem TYPO3‑Standard‑Setup äußerst unwahrscheinlich.)
Nichts anzuzeigen