Probleme mit Leerzeichen in Apache Rewrite Regeln

Wir haben heute früh ein Update der Webserver-Software Apache auf die aktuelle Version 2.4.56 eingespielt. Seit diesem Update gibt es nun vereinzelt Probleme beim Aufruf von URLs mit Leerzeichen.

Fehlermeldung

Falls Sie eine URL mit einem Leerzeichen aufrufen, erhalten Sie unter Umständen seit heute früh die folgende Fehlermeldung:

Forbidden

You don’t have permission to access this resource.

In den Error Logs findet sich dann folgender Fehler:

Rewritten query string contains control characters or spaces

Besonders häufig betroffen sind die Content Management Systeme Drupal und MODX, die problematische Rewrite-Regeln in der automatisch generierten .htaccess-Konfigurationsdatei verwenden.

Fehlerursache

Die Ursache für den Fehler ist ein fehlendes Escaping von Sonderzeichen in den Rewrite Regeln einer .htaccess-Konfigurationsdatei. Das Escaping von Sonderzeichen in Rewrite Strings war bis Apache Version 2.4.55 optional, seit Version 2.4.56 ist es aus Sicherheitsgründen (CVE-2023-25690) verpflichtend.

Sie können das Escaping über die Flags B (bei Umleitung auf Query Strings) bzw. BNP (bei Umleitung auf Pfade) aktivieren. Weitere Informationen finden Sie in der Apache-Dokumentation.

Beispiel

Die folgende Rewrite Regel des MODX Content Management Systems erzeugt bei Leerzeichen in der URL eine Fehlermeldung:

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Um die Fehlermeldung zu beheben, muss die Regel wie folgt geändert werden:

RewriteRule ^(.*)$ index.php?q=$1 [B,L,QSA]

Abschaltung des unverschlüsselten FTP-Zugriffs

Zum 01.06.2023 werden wir den unverschlüsselten FTP-Zugriff auf unsere Webserver deaktivieren. Der Zugang ist dann nur noch per SFTP, SSH und WebFTP möglich.

Die Änderung betrifft alle Nutzer:innen, die in ihrem FTP-Client (z.B. FileZilla, Cyberduck, FireFTP, ForkLift, Transmit oder WS_FTP) bisher den unverschlüsselten Verbindungsaufbau mit Port 21 eingerichtet haben. Bei dieser Verbindungsmethode werden sowohl die Zugangsdaten zum Webserver, als auch die Dateien selbst (inkl. Zugangsdaten zu Datenbanken, API-Keys etc.) unverschlüsselt übertragen. Dies ist ein unnötiges Sicherheitsrisiko.

Um auf das sichere SFTP-Verfahren zu wechseln, müssen Sie lediglich in den Verbindungseinstellungen das Proktokoll von “FTP” auf “SFTP” (oder “SSH File Transfer Protocol”) ändern. In manchen FTP-Clients müssen Sie zusätzlich den Port von 21 auf Port 22 ändern oder als Hostnamen anstelle von ftp://<domainname> künftig sftp://<domainname> verwenden.

Umstellung des Protokolls auf SFTP in FileZilla

Beim ersten Verbindungsaufbau per SFTP fragt der FTP-Client in der Regel danach, ob Sie dem Server vertrauen und speichert eine eindeutige Signatur des Servers auf dem PC.

Auch virtuelle Benutzer können sich künftig nur noch per SFTP mit dem Server verbinden; wie bisher ist hier Port 2222 im FTP-Client einzustellen.