Ungeschütztes Git-Verzeichnis

Unbefugte haben möglicherweise Zugriff auf Ihr Git-Verzeichnis. Wie kann ich mein Git-Verzeichnis schützen?

Bitte beachten Sie: Die Informationen in diesem Artikel beziehen sich ausschließlich auf unser Tool ShopSecurity, mit dem Sie Ihre Shop-Installationen hinsichtlich bekannter und potenzieller Sicherheitslücken prüfen können.


Um den Programmcode eines Shopsystems zu entwickeln und dabei den Überblick zu behalten, verwenden viele Entwicklerinnen und Entwickler Versionskontrollsysteme wie Git. Um zu ermöglichen, dass Änderungen am Programmcode verfolgt und rückgängig gemacht werden und Teams parallel an der Entwicklung arbeiten können, legt Git Metadaten in einem besonderen Verzeichnis .git innerhalb des Programmverzeichnisses ab. Die Dateien darin enthalten eine vollständige Kopie des Programmcodes Ihres Shops. Dieser ermöglicht es einem Angreifer, Schwachstellen in der Programmierung zu finden, um in Ihren Shop einzudringen oder Ihre Kundinnen und Kunden auszuspähen. Zudem sind im Shop-Installationsverzeichnis häufig auch direkte Zugangsdaten, z. B. zur Shop-Datenbank oder zu externen Systemen wie der Warenwirtschaft oder einer Kundensupport-Plattform zu finden. Um zu verhindern, dass Angreifer Zugang zu diesen Bereichen erlangen, Daten auslesen, manipulieren oder unberechtigte Aktion darin ausführen können, muss eine sorgfältige Absicherung des .git-Verzeichnisses durchgeführt werden.

Lösungsweg

Die möglichen Schutzmaßnahmen gegen dieses Sicherheitsrisiko müssen den Zugriff auf das Verzeichnis .git und die darin enthaltenen Dateien unterbinden. Dies können Sie wie folgt tun.

Verzeichnis nicht auf dem Webserver ablegen

Legen Sie das Verzeichnis .git nicht auf dem Cluster ab oder löschen Sie es direkt nach einem Deployment. Das Verzeichnis ist nur notwendig, wenn Sie mit dem Versionskontrollsystem aktiv arbeiten wollen, also z. B. vom Server aus Aktualisierungen daran vornehmen. Wir empfehlen, stattdessen nur auf Staging- oder Entwicklungsumgebungen aktiv zu arbeiten. So können Sie auf das Verzeichnis .git auf Ihrem produktiven Cluster verzichten.

Zugriff auf das .git-Verzeichnis unterbinden

Falls Sie auf das Verzeichnis nicht verzichten können, muss der Zugriff darauf über den Webserver unterbunden werden. Je nach aktivem Webserver kann der Zugriffsschutz folgendermaßen umgesetzt werden:

Beispiel: Apache

Beim Einsatz von Apache lassen sich .git-Verzeichnisse über die .htaccess-Konfigurationsdatei schützen. Dieser Schutz gilt dabei für das Verzeichnis, indem sich die Datei befindet sowie auch für alle Verzeichnisse darunter. Bearbeiten Sie eine vorhandene .htaccess-Datei im htdocs-Verzeichnis oder erstellen Sie die Datei, falls diese nicht existiert. Danach fügen Sie – möglichst am Anfang – die folgenden Zeilen ein.

# Zugriff auf Verzeichnisse mit Namen '.git' sperren

<IfModule mod_rewrite.c>

  RewriteEngine On

  RewriteRule (^|/)\.git/ - [F,L]

</IfModule>

Sie finden die .htaccess-Datei nicht?

Falls Sie in Ihrem Shop-Installationsverzeichnis nirgendwo eine Datei mit Namen .htaccess sehen, könnte dies an den Einstellungen Ihres FTP-Programms liegen. Da der Dateiname .htaccess mit einem Punkt beginnt, wird diese Datei nur dann sichtbar, wenn Sie die Anzeige von versteckten Dateien aktiviert haben.
Auch beim Zugriff per SSH müssen Sie die Anzeige von versteckten Dateien aktivieren, beispielsweise in dem Sie zum Befehl ls den Parameter -a mit angeben.

Beispiel: NGINX

Beim Einsatz von NGINX muss der Schutz in der Konfiguration der betroffenen Domain eingebaut werden. Verwenden Sie hierfür unsere – in den NGINX-Regeln integrierten –  Anwendungs-Templates für Magento 1, Magento 2 oder Shopware, in die der Schutz von .git-Verzeichnissen bereits integriert ist.

Alternativ können Sie über den NGINX-Regeleditor der betroffenen Domain die folgende Zeile in die userdefined.conf hinzufügen.

# Zugriff auf Verzeichnisse mit Namen '.git' sperren

location ~* /\.git/ { return 403; }

Weitere Handlungsempfehlungen

  • Schützen Sie auch die Verzeichnisse des Versionskontrollsystems Subversion sowie die MacOS-Dateien .DS_Store vor unerlaubtem Zugriff.
  • Schützen Sie Ordner mit Logdateien (bei Magento var/log) sowie Konfigurationsdateien (bei Magento app/etc). Bei der Verwendung von Apache ist dies normalerweise bereits durch die Installation Ihres Shopsystems voreingestellt.
  • Prüfen Sie beim Einsatz von Apache in einer vorhandenen .htaccess-Datei, ob der Zugriff auf entsprechende Verzeichnisse oder Dateien gesperrt wird. Auch in den zu schützenden Verzeichnissen selbst können .htaccess-Dateien enthalten sein.
  • Verwenden Sie beim Einsatz von NGINX unsere – in den NGINX-Regeln integrierten – Anwendungs-Templates, welche bereits viele anwendungsspezifische Ordner und Dateien schützen.
  • .git außerhalb des Stammverzeichnisses: Git ermöglicht es, das Verzeichnis .git auch außerhalb des Stammverzeichnisses abzulegen. Bei der Verwendung von Git-Befehlen muss dann zwingend der Parameter --git-dir=<Verzeichnis> mit angegeben werden oder die Umgebungsvariable GIT_DIR entsprechend gesetzt sein. Während das Fehlen des Parameters --git-dir zu einer harmlosen Fehlermeldung führt, kann das falsche Setzen der Umgebungsvariablen beim Arbeiten an verschiedenen Git-Projekten zu unerwünschten Änderungen in den Projekten und den unter Versionskontrolle stehenden Dateien führen. Diese Variante ist daher nur für erfahrene Entwicklerteams mit definierten Arbeitsweisen geeignet.

 

Bei Fragen steht Ihnen unser Support telefonisch unter 05251/414130 oder per E-Mail an support@maxcluster.de zur Verfügung.

Veröffentlicht am 05.06.2024