Sicherheitswarnung: Schon wieder ein unsicheres Joomla-Plugin (Gallery, Yootheme)

Ich weigere mich ja, Webseiten für Kunden mit Joomla zu erstellen, weil ich denke, dass dies zu tun grob fahrlässig sei. Und dafür habe ich meine Gründe. So habe ich mal wieder (11.12.2015) einen Server bereinigt. (Update: Inzwischen sind es drei!) Dieses mal war die Ursache der fulminanten Verseuchung eine Datei

[HTTP_ROOT]/media/widgetkit/widgets/gallery/gallery.php (ab Zeile 318 bzw. 311)

in welcher nach dem Uplaod eines vermeintlichen Bildes nicht genügend geprüft wurde, ob es tatsächlich eine Grafik ist. Geprüft wurde lediglich ob der sendende Host behauptet, dass es eine Grafik sei. Doch das kann ein Angreifer einfach nur behaupten. Die von Yootheme  programmierte Prüfung, die lediglich testet, ob 

$_FILES['files']['type']

den String "image" enthält, ist jedenfalls ganz schön fahrlässig.

Ab Ziele 318 (in einer anderen Version ab Ziele 311) sollte das Skript unbedingt angepasst werden:

public function uploadFiles() {

  $files    = isset($_FILES['files']) ? $_FILES['files'] : array();
  $path     = $this['request']-checkToken($this['request']->get('token', 'string')) 
       && isset($files['name']) 
       && strlen($path) && $targetpath = $this['path']->path('media:'.$path)
  ) {
    for ($i = 0; $i < count($files['name']); $i++) {
      if ( !$files['error'][$i] ) {
        if ( getimagesize($files['tmp_name'][$i]) ) {
           if ( move_uploaded_file($files['tmp_name'][$i], $targetpath.'/'.$files['name'][$i]) ) {
              $uploaded[] = $files['name'][$i];
           }
        } else {
          $uploaded[] = "ERROR: " . $files['name'][$i]. " is not a image! Nice try!";
        }
      }
    }
  }
  echo json_encode($uploaded);
}

Den Hersteller der Software habe ich informiert. Das Prüfen mit getimagesize führt dazu, dass (anders als zuvor) ein Angreifer keine Möglichkeit mehr hat, statt Grafiken Dateien seiner Wahl - insbesondere PHP-Dateien hochzuladen - was auch die Ursache für meinen Auftrag war.

Wieso jetzt ein Angreifer ohne sich anzumelden Dateien hochladen kann ist Gegenstand weiterer Prüfungen. Aber vielleicht hat die Yootheme GmbH auch hierfür inzwischen ein Update.


Weitere Informationen in diesem Bereich: