SUPEE-9767, modman e symlink


16

Vorrei patchare un negozio Magento con SUPEE-9767. La documentazione per SUPEE-9767 mi dice di disabilitare l'impostazione Symlink prima di applicare la patch:

Prima di applicare la patch o l'aggiornamento all'ultima versione, assicurarsi di disabilitare l'impostazione Symlink ... L'impostazione, se abilitata, sovrascriverà l'impostazione del file di configurazione e la modifica richiederà la modifica diretta del database.

Ma io uso modman per gestire i moduli e poiché alcuni dei moduli utilizzano file modello, l'impostazione Symlink è abilitata in base al suggerimento nel README di modman. È sicuro lasciare abilitata l'impostazione Symlink come uno dei post in Security Patch SUPEE-9767 - Possibili problemi? suggerisce (non posso ancora commentare i post da quando sono un nuovo utente)?

Gli utenti che utilizzano modman per gestire i moduli Magento 1.x devono assicurarsi di non disabilitare i collegamenti simbolici poiché ciò disattiverà i moduli modman.

Se lascio l'impostazione Symlink abilitata, il negozio non sarebbe esposto ad APPSEC-1281: esecuzione di codice in remoto tramite symlink , una minaccia alla sicurezza che questa patch dovrebbe risolvere?

Esistono altri modi per utilizzare modman con i file modello dopo questa patch? (Conosco l'opzione "versione patchata di Mage / Core / Block / Template.php" menzionata dal README di modman, ma l'applicazione di patch a un file core sembra pericolosa.)


1
Sto usando Modman e Composer nei miei progetti. Per molti anni non posso credere che l'opzione Symlink in Magento non sia stata considerata una bomba. All'improvviso è una bomba! Questa modifica senza notifiche e spiegazioni creerà molti problemi a molte persone. Triste per il futuro di Modman e Composer in Magento.
ADDISON74

1
Questa è piuttosto la sfida. Se sei disposto a fare l'investimento, la creazione di un processo di generazione che genera un artefatto unito (senza collegamenti simbolici) è davvero un buon modo di procedere.
Joseph a SwiftOtter,

Un grande articolo su questo può essere trovato su tomlankhorst.nl/…, dove spiega anche come sbarazzarsi del messaggio "I collegamenti simbolici sono abilitati" introdotto in Magento 1.9.3.4.
Ehannes,

Risposte:


14

Ecco alcuni chiarimenti su questa modifica:

Per prima cosa leggi questa spiegazione di Peter O'Callaghan che ti darà una grande comprensione: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

Un'altra lettura interessante è questo post di Max Chadwick https://maxchadwick.xyz/blog/what-allow-symlink-actually-does

Questa modifica riguarda davvero la chiamata di contenuti caricabili (come le immagini) tramite le direttive del modello.

Il problema relativo ai collegamenti simbolici è sfruttabile solo con l'accesso dell'amministratore e Magento ha aggiunto anche un po 'più di protezione ai caricamenti di immagini.

Si noti che sono alcune protezioni contro il modo noto di sfruttarlo oltre all'impostazione stessa.

Quindi, se capisci il rischio, puoi lasciare abilitati i collegamenti simbolici.

Se è necessario abilitarli per una nuova installazione, è possibile eseguire:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";

Se lascio abilitato i collegamenti simbolici, come proteggerei il negozio da "APPSEC-1281: esecuzione di codice remoto tramite collegamenti simbolici"?
ehannes,

@ehannes proteggendo gli accessi al tuo back-end, in quanto l'exploit richiede l'accesso al back-end. Inoltre, il caricamento dell'immagine ora ha una convalida di richiamata aggiuntiva.
Raffaello al Pianismo digitale,

3
ottenere l'accesso come amministratore significa che hai accesso all'intera interfaccia di backend di Magento. a chi importa di un exploit in questa fase trovato in uno script di caricamento delle immagini? quell'utente malintenzionato può eliminare tutti i tuoi prodotti, può fare cose inimmaginabili. la discussione dovrebbe iniziare con "se questo utente ottiene i diritti di amministratore perché il vero amministratore è stupido e non protegge il backend in molti modi"
ADDISON74


2
Scrive Peter O'Callaghan: "Pertanto, se qualcuno riesce ad accedere al tuo pannello di amministrazione, può eseguire una inclusione dannosa per ottenere RCE.". Questa sembra essere la conclusione comune in questa discussione. Come detto prima, se un utente malintenzionato ha accesso al tuo pannello di amministrazione, ci sono altre cose di cui preoccuparsi oltre a RCE. Se qualcuno ha qualcosa da aggiungere alla discussione, per favore. Comunque, penso che tu abbia reso le cose molto più chiare @RaphaelatDigitalPianism e accetterò questa risposta.
Ehannes,

6

Il problema non sono i link simbolici, il problema sono i percorsi che raggiungono livelli come ../../../../../media/tmp/hahaha.png. Se sbaglio su questo, per favore illuminami. La "correzione" era intitolata "Consenti collegamenti simbolici" e abilitando ciò si disabilita il controllo implementato utilizzando realpath(). A mio avviso, una soluzione altrettanto sicura, più performante e ancora compatibile con i collegamenti simbolici consiste nell'utilizzare strpos($path, '..')e / o verificare che realpath()corrisponda a determinate directory rischiose come mediae var. Se implementato in questo modo, non dovrebbe essere configurabile, potrebbe essere sempre abilitato e comunque non distruggere migliaia di negozi.

Indipendentemente da ciò, l'utente del server Web non dovrebbe avere accesso alla scrittura di file nelle directory del codice sorgente (come Magento Connect fa ...), quindi questo è un altro modo per impedire che codice dannoso venga scritto da qualche parte ed eseguito come modello di blocco.

Quindi, questo attacco ai link simbolici è solo indirizzato erroneamente ed esiste una soluzione migliore. In effetti, ne ho fornito uno più di un anno fa e c'è anche un link ad esso nel modman github README.


0

Se nel file extra del tuo compositore imposti magento-deploystrategy per copiare i tuoi file verranno copiati dalla cartella del fornitore piuttosto che da Symlink.

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

È quindi possibile modificare core_config_data per impostare il valore di dev / template / allow_symlink su 0

Risorsa Per Informazioni


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.