SUPEE-9767, Modman und Symlinks

16

Ich möchte einen Magento-Shop mit SUPEE-9767 patchen. Die Dokumentation für SUPEE-9767 fordert mich auf, die Symlinks-Einstellung zu deaktivieren, bevor ich den Patch anwende:

Stellen Sie vor dem Anwenden des Patches oder dem Aktualisieren auf die neueste Version sicher, dass die Symlinks-Einstellung deaktiviert ist. Wenn diese Einstellung aktiviert ist, werden die Einstellungen der Konfigurationsdatei außer Kraft gesetzt, und das Ändern erfordert eine direkte Datenbankänderung.

Aber ich verwalte Module mit Modman und da einige Module Vorlagendateien verwenden, ist die Symlinks-Einstellung gemäß dem Vorschlag in der README-Datei von Modman aktiviert. Ist es sicher, die Symlinks-Einstellung als einen der Beiträge im Sicherheitspatch SUPEE-9767 - Mögliche Probleme aktiviert zu lassen? schlägt vor (ich kann noch keine Beiträge kommentieren, da ich ein neuer Benutzer bin)?

Benutzer, die Modman zum Verwalten von Magento 1.x-Modulen verwenden, sollten sicherstellen, dass Symlinks nicht deaktiviert werden, da dies die Modman-Module deaktiviert.

Wenn ich die Einstellung "Symlinks" aktiviert lasse, ist der Shop dann nicht für APPSEC-1281: Remotecodeausführung über Symlinks verfügbar. Dies ist eine Sicherheitsbedrohung, die mit diesem Patch behoben werden soll .

Gibt es nach diesem Patch noch andere Möglichkeiten, Modman mit Vorlagendateien zu verwenden? (Ich kenne die Option "gepatchte Version von Mage / Core / Block / Template.php", die in der README von Modman erwähnt wird, aber das Patchen einer Core-Datei scheint gefährlich zu sein.)

ehannes
quelle
1
Ich benutze Modman und Composer in meinen Projekten. Ich kann seit vielen Jahren nicht glauben, dass Symlinks Option in Magento nicht als Bombe galt. Plötzlich ist es eine Bombe! Diese Änderung ohne Benachrichtigungen und Erklärungen wird vielen Menschen große Schwierigkeiten bereiten. Traurig über die Zukunft von Modman und Composer in Magento.
ADDISON74
1
Das ist eine ziemliche Herausforderung. Wenn Sie bereit sind, die Investition zu tätigen, ist das Erstellen eines Erstellungsprozesses, der ein zusammengeführtes (ohne Symlinks) Artefakt erzeugt, ein guter Weg.
Joseph bei SwiftOtter
Ein großartiger Artikel dazu ist auf tomlankhorst.nl/… zu finden, wo er auch erklärt, wie man die in Magento 1.9.3.4 eingeführte Warnung "Symlinks sind aktiviert" loswird.
Ehannes

Antworten:

14

Hier einige Erläuterungen zu dieser Änderung:

Lesen Sie zuerst diese Erklärung von Peter O'Callaghan, um sich ein Bild zu machen: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

Eine weitere interessante Lektüre ist dieser Beitrag von Max Chadwick: https://maxchadwick.xyz/blog/what-allow-symlinks-actually-does

Bei dieser Änderung geht es wirklich darum, hochladbare Inhalte (wie Bilder) über Vorlagenanweisungen aufzurufen.

Das Problem im Zusammenhang mit Symlinks ist nur mit Administratorzugriff ausnutzbar, und Magento hat auch beim Hochladen von Bildern etwas mehr Schutz hinzugefügt.

Bitte beachten Sie, dass es sich um einige Schutzmaßnahmen gegen die bekannte Art und Weise handelt, es zusätzlich zu der Einstellung selbst auszunutzen.

Wenn Sie also das damit verbundene Risiko verstehen, können Sie Symlinks aktiviert lassen.

Wenn Sie sie für eine Neuinstallation aktivieren müssen, können Sie Folgendes ausführen:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";
Raphael bei Digital Pianism
quelle
Wie würde ich den Shop vor "APPSEC-1281: Remotecodeausführung über Symlinks" schützen, wenn ich Symlinks aktiviert lassen würde?
Ehannes
@ehannes, indem Sie zunächst den Zugriff auf Ihr Backend schützen, da der Exploit den Zugriff auf das Backend erfordert. Darüber hinaus verfügt der Bildupload jetzt über eine zusätzliche Rückrufvalidierung.
Raphael bei Digital Pianism
3
Wenn Sie Administratorzugriff erhalten, haben Sie Zugriff auf die gesamte Magento-Backend-Oberfläche. Wen interessiert ein Exploit in dieser Phase, der in einem hochladenden Image-Skript gefunden wurde? Dieser böswillige Benutzer kann alle Ihre Produkte löschen und unvorstellbare Dinge tun. Die Diskussion sollte mit "Wenn dieser Benutzer Administratorrechte erhält, weil der wahre Administrator dumm ist, das Backend nicht auf viele Arten zu schützen" beginnen
ADDISON74
1
@ehannes bitte lesen Sie diese peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks
Raphael bei Digital Pianism
2
Peter O'Callaghan schreibt: "Wenn jemand Zugriff auf Ihr Admin-Panel erhält, kann er ein böswilliges Include ausführen, um RCE zu erreichen." Dies scheint die gemeinsame Schlussfolgerung in dieser Diskussion zu sein. Wenn ein böswilliger Benutzer Zugriff auf Ihr Admin-Panel hat, gibt es, wie bereits erwähnt, andere Probleme als RCE. Wenn jemand etwas zur Diskussion hinzufügen möchte, bitte. Wie auch immer, ich denke, Sie haben die Dinge viel klarer gemacht @RaphaelatDigitalPianism und ich werde diese Antwort akzeptieren.
Ehannes
6

Das Problem sind keine Symlinks, das Problem sind Pfade, die eine höhere Ebene erreichen, wie z ../../../../../media/tmp/hahaha.png. Wenn ich mich irre, kläre mich bitte auf. Der "Fix" hatte den Titel "Symlinks zulassen" und durch Aktivieren dieser Option wird die Prüfung deaktiviert, die mit implementiert wurde realpath(). Meiner Meinung nach ist ein Fix, der genauso sicher, leistungsfähiger und immer noch kompatibel mit Symlinks ist, zu verwenden strpos($path, '..')und / oder zu überprüfen, ob er realpath()mit bestimmten riskanten Verzeichnissen wie mediaund übereinstimmt var. Wenn es so implementiert würde, müsste es nicht konfigurierbar sein, es könnte einfach immer aktiviert sein und trotzdem nicht Tausende von Läden zerstören.

Unabhängig davon sollte Ihr Webserver-Benutzer keinen Zugriff auf das Schreiben von Dateien in den Quellcodeverzeichnissen haben (wie dies bei Magento Connect der Fall ist ...), um zu verhindern, dass böswilliger Code irgendwo geschrieben und als Blockvorlage ausgeführt wird.

Dieser Angriff auf Symlinks ist also fehlgeleitet und es gibt eine bessere Lösung. Tatsächlich habe ich vor über einem Jahr einen bereitgestellt und es gibt sogar einen Link dazu in der README von Modman Github.

ColinM
quelle
0

Wenn Sie im Extra Ihrer Composer-Datei die Option magento-deploystrategy zum Kopieren festlegen, werden Ihre Dateien aus dem Herstellerordner und nicht aus Symlinks kopiert.

    "extra":{
        "magento-root-dir":"./",
        "magento-deploystrategy":"copy",
        "magento-force": true
    }

Sie können dann Ihre core_config_data ändern, um den Wert von dev / template / allow_symlink auf 0 zu setzen

Informationsquelle

ArbeitsstationB
quelle