- Affected App
- WoltLab Suite Core
Bei der Prüfung von SVG-Dateien via getMimeType im FileUtil kann es zu einem fehlerhaften Ergebnis kommen. Das liegt dabei an der fehlerhaften Ausgabe des genutzten $finfo->file().
https://github.com/WoltLab/WCF/bl….class.php#L515
Dabei wird eine SVG-Datei, welche nicht mit <?xml version="1.0" encoding="utf-8"?> beginnt, nicht als image/svg+xml eingestuft, sondern als text/html. In komprimierten SVG-Dateien wird diese Zeile jedoch oftmals entfernt, da sie auch laut Spezifikation nicht „required“ ist, sondern nur genutzt werden sollte („should“).
Proof of Concept:
<?php
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file('logo.svg');
$mime2 = $finfo->file('logo_without.svg');
var_dump($mime, $mime2);
Die beiden Dateien sind anbei.
Die Ausgabe ist dabei:
finfo-proof.php:5:string 'image/svg+xml' (length=13)
finfo-proof.php:5:string 'text/html' (length=9)
Die erwartete Ausgabe sollte sein:
finfo-proof.php:5:string 'image/svg+xml' (length=13)
finfo-proof.php:5:string 'image/svg+xml' (length=13)
Das Problem kann sowohl in WoltLab Suite Core 3.0 als auch in WoltLab Suite Core 3.1 reproduziert werden.