Sind Symlinks in Vorlagen ein Sicherheitsproblem und wenn ja, warum?

35

Magento empfiehlt, keine Vorlagen über Symlinks zu verwenden:

Advanced > Developer > Template Settings > Allow Symlinks

Warnung! Das Aktivieren dieser Funktion wird in Produktionsumgebungen nicht empfohlen, da dies ein potenzielles Sicherheitsrisiko darstellt.

Bis heute sehe ich hier keine Risiken.

  • Was ist das Risiko?
Fabian Blechschmidt
quelle
8
Ich kann mir nur vorstellen, dass dies ein Risiko für gemeinsam genutzte Hosts darstellt, das in erster Linie nicht für E-Commerce verwendet werden sollte.
Benmarks
3
@benmarks. Warum nimmst du das nicht zur Antwort?
Marius
2
Sehr gute Frage @Fabi!
user487772
3
Ich wusste, dass andere vollständigere Antworten anbieten würden. Ich war RECHT :-D
benmarks
3
@benmarks Die Website benötigt in irgendeiner Weise eine höhere Beantwortung pro Frage
;-)

Antworten:

40

Symlinks sind nicht unbedingt schlecht.

Erstens: Wenn Sie versuchen, ein Symlink-Ziel zu öffnen, gelten die Dateiberechtigungen des Ziels. Wenn Sie das Symlink-Ziel nicht lesen / schreiben / ausführen dürfen, geschieht nichts.

Aber: Möglicherweise können Sie Dateien außerhalb Ihres Dokumentenstamms ausführen (manchmal möchten Sie das tatsächlich tun, oder?). Das Problem kann auftreten, wenn Sie sich nicht in einer suEXEC-Umgebung befinden und ein apacheoder ein www-dataBenutzer auf einem gemeinsam genutzten Hosting ist, der für das Bereitstellen von Dateien von verschiedenen Konten verantwortlich ist. Ihr Systembenutzer darf nicht auf Dateien eines anderen Kunden zugreifen, der apache/www-dataBenutzer hat jedoch meistens Leserechte für alle freigegebenen Konten. Dies kann ein Szenario sein, in dem ein Benutzer auf Dateien eines anderen Benutzers auf einem gemeinsam genutzten Host zugreifen kann. Nicht mit Ihrem eigenen Benutzer, sondern indem Sie mit dem apache/www-dataBenutzer über einen Browser auf die Datei zugreifen . Fazit: In diesem Szenario können Sie auf die Dateien anderer Benutzer zugreifen => bad.

Das nächste Schlimme ist, dass ein Angreifer Symlinks erstellen kann, auch zu Dateien wie / etc / passwd, ..., diese Daten herunterladen und mit diesen Informationen fortfahren kann. Dies hängt nicht nur vom Symlink ab, sondern auch von einer schlechten Serverkonfiguration (bei der der Zugriff auf diese Dateien streng begrenzt ist). Wenn Sie keine Symlinks verwenden, werden einige mögliche Angriffe verhindert.

Es geht nicht nur darum, dass der Symlink selbst ein Sicherheitsrisiko darstellt, sondern auch um ein Problem bei der Serverkonfiguration.

Anna Völkl
quelle
5
Gute
2
Wahrscheinlich erwähnenswert (obwohl es immer ein Gleichgewicht zwischen sicherheitsrelevanten Fehlern in einer Umgebung gibt, die sich nicht für ein Upgrade eignet) - Magento, das von Symlinks abrät, bezog sich auf einen Exploit, bei dem Vorlagen- und Layoutdateien außerhalb des app/designOrdners in Kombination mit anderen kleineren Exploits kann von einem Administrator für die Eskalation von Berechtigungen und andere Server-Exploits verwendet werden.
Alan Storm
1
Wenn Sie unter Apache httpd Symlinks unterstützen möchten, sollten Sie berücksichtigen, dass diese SymLinksIfOwnerMatchOption anstelle von verwendet wird FollowSymlinks.
Hakre
15

Ja, das ist der Grund, warum Webserver normalerweise auch eine Konfiguration haben, bei der "Symlinks nicht folgen" oder zumindest "nur Symlinks von Ziel mit demselben Benutzer folgen", weil Webserver / PHP normalerweise mit mehr Rechten ausgeführt wird, als Sie Zugriff haben sollten.

Und da Webserver normalerweise versuchen, sichtbare Dinge wie / etc / shadow zu vermeiden, ist dies für Magento-Vorlagen noch gefährlicher, da Vorlagen über include () analysiert werden, sodass Sie möglicherweise sehr starke Sicherheitslücken haben, wenn Sie nicht die volle Kontrolle über Ihre Dateien haben.

Sie können argumentieren, dass es dann andere Probleme gibt, aber wer kennt wirklich jedes mögliche Angriffsszenario und meistens ist es die Kombination verschiedener weniger problematischer Sicherheitslücken, die zu den großen Brüchen führen.

Außerdem gab es vor einiger Zeit ein Sicherheitsupdate in Bezug auf Medienverzeichnis und Symlinks, daher sollten Sie dort nach möglichen Angriffsszenarien suchen.

Flyingmana
quelle
1
Wenn jemand anderes Symlinks auf Ihrem Server erstellen kann, haben Sie bereits größere Probleme. Ich meine - siehe Bens Kommentar unten. Wer würde jemals ein Magento in einem Shared Hosting hosten? Wer würde heutzutage jemals etwas in einem Shared Hosting hosten und warum? :)
Sven
3
einfach, weil es Leute gibt, die das tun. Sie können nicht erwarten, dass andere vernünftig handeln. Es wird immer Leute geben, die dies tun, und es wird immer Leute geben, die Fehler in Bezug auf die allgemeine Serverkonfiguration machen.
Flyingmana
14

Ich kann mir nur vorstellen, dass dies ein Risiko für gemeinsam genutzte Hosts darstellt, das in erster Linie nicht für E-Commerce verwendet werden sollte.

benmarks
quelle
1
Leider wird es ziemlich oft benutzt.
Piotr Kaminski
2
Nach den Standards des PCI-Sicherheitsrats ist die öffentliche Cloud technisch mandantenfähig, so dass selbst dies als "Risiko" betrachtet wird.
Philwinkle
4

Der Magento-Patch SUPEE-9767 enthält APPSEC-1281: Remotecodeausführung über Symlinks. Symlinks in Vorlagen sind also ein Sicherheitsproblem.

Typ:
Remotecodeausführung (RCE)

CVSSv3-Schweregrad:
8.8 (Hoch)

Bekannte Angriffe:
Ja. Angreifer deaktivieren einen Konfigurationsschutz, nachdem sie Administratorzugriff erhalten haben, und laden bösartigen Code hoch.

Beschreibung: Durch die
Verwendung der Option AllowSymlinks in den Konfigurationseinstellungen kann ein Bild hochgeladen werden, das schädlichen Code enthält. Obwohl diese Option standardmäßig deaktiviert ist, kann ein Angreifer mit Zugriff auf Speicherkonfigurationseinstellungen sie aktivieren und Code remote ausführen.

Betroffene Produkte:
Magento CE vor 1.9.3.3 und Magento EE vor 1.14.3.3


Behoben in: CE 1.9.3.3, EE 1.14.3.3, SUPEE-9767

Reporter:
Wilko Nienhaus

ehannes
quelle
0

Nicht empfehlen zu erlauben. Beim Laden von js sind Fehler aufgetreten, während symlinks aktiviert waren.
Viele;

TypeError: $ .widget ist keine Funktion

Ich muss versuchen, 4-5 zu aktualisieren, damit die Seiten erfolgreich geladen werden.
Nach dem Schließen werden möglicherweise nicht alle Ressourcen zum ersten Mal langsam geladen, aber die Fehler sind verschwunden.

PS: Nachdem Sie symlink deaktiviert haben, müssen Sie die bereitgestellte Kopie der Dateien nach jeder Änderung für static.php löschen. Kopieren Sie sie erneut für Sie.

rbostan
quelle
1
Entschuldigung, ich verstehe nicht - Sie müssen 4-5 Aktualisierungen vornehmen, bevor es funktioniert? Was hat das mit Symlinks zu tun?
Fabian Blechschmidt
Vor dem Deaktivieren von Symlinks :) Entschuldigung für mein Englisch.
RBOSTAN
Sprechen wir über magento2? Dann verstehe ich, dass ich nicht verstehe - noch keine Ahnung über 2.
Fabian Blechschmidt