I collegamenti simbolici sui modelli sono un problema di sicurezza e, se sì, perché?


35

Magento consiglia di non utilizzare i modelli tramite collegamenti simbolici:

Advanced > Developer > Template Settings > Allow Symlinks

Avvertimento! L'abilitazione di questa funzione non è consigliata negli ambienti di produzione perché rappresenta un potenziale rischio per la sicurezza.

Fino ad oggi non riesco a vedere alcun rischio qui.

  • Qual è il rischio?

8
Posso solo immaginare che questo sia un rischio per gli host condivisi, che non dovrebbe essere usato per e-commerce in primo luogo.
benmarks

3
@benmarks. Perché non lo metti come risposta?
Marius

2
Ottima domanda @Fabi!
user487772

3
Sapevo che altri avrebbero offerto risposte più complete. Ero GIUSTO :-D
benmarks

3
@benmarks Il sito Web ha bisogno di una risposta più alta per ogni domanda in qualsiasi modo ;-)
user487772

Risposte:


40

I collegamenti simbolici non sono necessariamente negativi.

Prima di tutto: se si tenta di aprire un target symlink, le autorizzazioni di file del target sono attive. Se non ti è permesso leggere / scrivere / eseguire la destinazione del link simbolico, non succede nulla.

Ma: potresti essere in grado di eseguire file all'esterno della radice del documento (a volte è proprio quello che vuoi fare con loro, giusto?). Il problema può verificarsi se non ti trovi in ​​un ambiente suEXEC e hai un apacheo un www-datautente su un hosting condiviso che si occupa di servire file da account diversi. L'utente del sistema non è autorizzato ad accedere ai file di un altro cliente, ma l' apache/www-datautente avrà principalmente diritti di lettura su tutti gli account condivisi. Questo potrebbe essere uno scenario in cui un utente può accedere ai file di un altro utente su un host condiviso. Non con il tuo utente, ma accedendo al file tramite browser con l' apache/www-datautente. Per riassumere: in questo scenario sarai in grado di accedere ai file di altri utenti => non valido.

La prossima cosa negativa è che un utente malintenzionato potrebbe creare collegamenti simbolici, anche a file come / etc / passwd, ..., scaricare questi dati e procedere con queste informazioni. Questo non dipende solo dal collegamento simbolico, ma anche da una configurazione del server errata (dove l'accesso a questi file è strettamente limitato). Quindi non usare i collegamenti simbolici impedisce alcuni altri possibili attacchi.

Non si tratta solo del symlink stesso che costituisce un rischio per la sicurezza, ma un problema di configurazione del server.


5
Grande spiegazione - questa è la risposta corretta, in sostanza, "utilizzare a proprio rischio"
philwinkle

2
Probabilmente vale la pena menzionare (anche se c'è sempre un equilibrio con i bug relativi alla sicurezza in un ambiente "loath to upgrade") - Magento che scoraggia fortemente i collegamenti simbolici era correlato a un exploit in cui file di template e layout all'esterno della app/designcartella, se combinato con altri exploit minori, potrebbe essere utilizzato da un utente amministratore per l'escalation dei privilegi e altri exploit del server.
Alan Storm,

1
Su Apache httpd se si desidera supportare i collegamenti simbolici, considerare che al SymLinksIfOwnerMatchposto di viene utilizzata l'opzione FollowSymlinks.
Hakre,

15

sì, è per questo che i server web di solito hanno anche una configurazione "non seguire i collegamenti simbolici" o almeno un "segui solo i collegamenti simbolici del target con lo stesso utente" Ecco perché il server web / php di solito funziona con più diritti di cui dovresti avere accesso.

E poiché i server web di solito cercano di evitare cose come visible / etc / shadow, è per i modelli magento ancora più pericolosi, poiché i modelli vengono analizzati tramite include () in modo da avere possibili perdite di sicurezza molto forti se non si ha il pieno controllo dei file.

Si potrebbe obiettare che ci sono altri problemi allora, ma chi conosce veramente ogni potenziale scenario di attacco, e il più delle volte è la combinazione di diverse falle di sicurezza meno problematiche, che portano a grandi interruzioni.

Inoltre, qualche tempo fa c'era una correzione di sicurezza relativa alla directory multimediale e ai collegamenti simbolici, quindi dovresti cercare lì possibili scenari di attacco.


1
Se qualcun altro è in grado di creare collegamenti simbolici sul tuo server, hai già problemi più gravi di così. Voglio dire - vedi il commento di Ben sotto. Chi ospiterebbe mai un Magento in un hosting condiviso? Chi ospiterebbe mai qualcosa in un hosting condiviso al giorno d'oggi e perché? :)
Sven

3
semplicemente perché ci sono persone che lo fanno. Non puoi aspettarti che gli altri agiscano in modo ragionevole. Ci saranno sempre persone che lo faranno e ci saranno sempre persone che commetteranno errori riguardo alla configurazione generale del server.
Flyingmana,

14

Posso solo immaginare che questo sia un rischio per gli host condivisi, che non dovrebbe essere usato per e-commerce in primo luogo.


1
Purtroppo è usato parecchio.
Piotr Kaminski,

2
Secondo gli standard del PCI Security Council tecnicamente il cloud pubblico è multi-tenant, quindi anche questo è considerato un "rischio".
Philwinkle,

4

La patch Magento SUPEE-9767 include APPSEC-1281: esecuzione di codice in remoto tramite collegamenti simbolici , quindi sì, i collegamenti simbolici sui modelli rappresentano un problema di sicurezza.

Tipo:
Remote Code Execution (RCE)

Gravità CVSSv3:
8,8 (alta)

Attacchi noti:
Sì. Gli aggressori stanno disabilitando una protezione della configurazione dopo aver ottenuto l'accesso come amministratore e stanno caricando codice dannoso.

Descrizione: l'
uso dell'opzione AllowSymlinks nelle impostazioni di configurazione può abilitare il caricamento di un'immagine che contiene codice dannoso. Sebbene questa opzione sia disabilitata per impostazione predefinita, un utente malintenzionato con accesso alle impostazioni di configurazione dell'archivio può abilitarla ed eseguire il codice in remoto.

Prodotto / i interessato / i:
Magento CE prima della 1.9.3.3 e Magento EE prima della 1.14.3.3

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

Reporter:
Wilko Nienhaus


0

Non consiglio di consentire. Stavo affrontando errori di caricamento di js mentre i link simbolici erano abilitati.
Molti;

TypeError: $ .widget non è una funzione

Devo provare l'aggiornamento 4-5 per le pagine caricate correttamente.
Dopo averlo chiuso, le risorse potrebbero non essere distribuite lentamente per la prima volta, ma gli errori js sono spariti.

PS: Dopo aver disabilitato il collegamento simbolico, devi eliminare la copia distribuita dei file dopo ogni modifica per static.php ricopiarlo per te.


1
Spiacente, non capisco - devi fare 4-5 aggiornamenti, prima che funzioni? Cosa c'entra questo con i symlink?
Fabian Blechschmidt,

Prima di disabilitare i collegamenti simbolici :) Scusate il mio inglese.
rbostan,

Stiamo parlando di magento2? Poi capisco che non capisco - ancora nessun indizio su 2.
Fabian Blechschmidt,
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.