¿Son los enlaces simbólicos en las plantillas un problema de seguridad y, en caso afirmativo, por qué?

35

Magento recomienda no usar plantillas a través de enlaces simbólicos:

Advanced > Developer > Template Settings > Allow Symlinks

¡Advertencia! No se recomienda habilitar esta función en entornos de producción porque representa un riesgo potencial de seguridad.

Hasta hoy no puedo ver ningún riesgo aquí.

  • ¿Cual es el riesgo?
Fabian Blechschmidt
fuente
8
Solo puedo imaginar que esto es un riesgo en los hosts compartidos, que no deberían usarse para el comercio electrónico en primer lugar.
puntos de referencia del
3
@benmarks. ¿Por qué no pones esto como respuesta?
Marius
2
Muy buena pregunta @Fabi!
user487772
3
Sabía que otros ofrecerían respuestas más completas. Estaba en lo
cierto
3
@benmarks El sitio web tiene una respuesta superior por velocidad pregunta de ninguna manera ;-)
user487772

Respuestas:

40

Los enlaces simbólicos no son necesariamente malos.

En primer lugar: si intenta abrir un objetivo de enlace simbólico, los permisos de archivo del objetivo están vigentes. Si no tienes permiso para leer / escribir / ejecutar el objetivo del enlace simbólico, no pasa nada.

Pero: es posible que pueda ejecutar archivos fuera de la raíz de su documento (a veces eso es realmente lo que quiere hacer con ellos, ¿verdad?). El problema puede ocurrir si tu estás no en un entorno suEXEC y tienen una apacheo www-datausuario en un alojamiento compartido, que está a cargo del servicio de archivos de diferentes cuentas. El usuario de su sistema no puede acceder a los archivos de otro cliente, pero el apache/www-datausuario tendrá principalmente derechos de lectura en todas las cuentas compartidas. Este podría ser un escenario en el que un usuario puede acceder a los archivos de otro usuario en un host compartido. No con su propio usuario, sino accediendo al archivo a través del navegador con el apache/www-datausuario. Para resumir: en este escenario, podrá acceder a los archivos de otros usuarios => malo.

El siguiente inconveniente es que un atacante podría crear enlaces simbólicos, también a archivos como / etc / passwd, ..., descargar estos datos y continuar con esta información. Esto no solo depende del enlace simbólico, sino también de una configuración incorrecta del servidor (donde el acceso a estos archivos es estrictamente limitado). Por lo tanto, no usar enlaces simbólicos evita algunos ataques más posibles.

No se trata solo de que el enlace simbólico sea un riesgo de seguridad, sino un problema de configuración del servidor.

Anna Völkl
fuente
55
Gran explicación: esta es la respuesta correcta, esencialmente, "uso bajo su propio riesgo"
philwinkle
2
Probablemente valga la pena mencionar (aunque siempre hay un equilibrio con los errores relacionados con la seguridad en un entorno de 'repugnancia por actualizar'): Magento desalentó fuertemente los enlaces simbólicos relacionados con un exploit donde los archivos de plantilla y diseño fuera de la app/designcarpeta, cuando se combinan con otros exploits menores, podría ser utilizado por un usuario administrador para la escalada de privilegios y otras vulnerabilidades del servidor.
Alan Storm
1
En Apache httpd si desea admitir enlaces simbólicos, considere que SymLinksIfOwnerMatchse usa esa opción en lugar de FollowSymlinks.
Hakre
15

sí lo son, es por eso que los servidores web generalmente también tienen una configuración de "no seguir enlaces simbólicos" o al menos un "solo seguir enlaces simbólicos de destino con el mismo usuario" Eso es porque el servidor web / php generalmente se ejecuta con más derechos de los que debería tener acceso.

Y como los servidores web generalmente intentan evitar cosas como / etc / shadow visible, es para las plantillas de magento aún más peligrosas, ya que las plantillas se analizan a través de include (), por lo que puede tener fugas de seguridad muy fuertes si no tiene un control total sobre sus archivos.

Puede argumentar que hay otros problemas entonces, pero quién sabe realmente cada escenario de ataque potencial, y la mayoría de las veces es la combinación de diferentes agujeros de seguridad menos problemáticos, lo que lleva a las grandes rupturas.

Además, hace algún tiempo hubo una solución de seguridad con respecto al directorio de medios y los enlaces simbólicos, por lo que debe buscar posibles escenarios de ataque.

Flyingmana
fuente
1
Si alguien más puede crear enlaces simbólicos en su servidor, ya está en un problema mayor que ese. Quiero decir, mira el comentario de Ben a continuación. ¿Quién sería el anfitrión de un Magento en un hosting compartido? ¿Quién alojaría algo en un hosting compartido hoy en día y por qué? :)
Sven
3
simplemente porque hay personas que lo hacen. No puedes esperar que otros actúen de manera razonable. Siempre habrá personas que hagan esto, y siempre habrá personas que cometan errores con respecto a la configuración general del servidor.
Flyingmana
14

Solo puedo imaginar que esto es un riesgo en los hosts compartidos, que no deberían usarse para el comercio electrónico en primer lugar.

puntos de referencia
fuente
1
Lamentablemente se usa bastante.
Piotr Kaminski
2
Según los estándares del PCI Security Council, técnicamente la nube pública es multicliente, por lo que incluso eso se considera un "riesgo".
philwinkle
4

El parche Magento SUPEE-9767 incluye APPSEC-1281: ejecución remota de código a través de enlaces simbólicos , por lo que sí, los enlaces simbólicos en las plantillas son un problema de seguridad.

Tipo:
Ejecución remota de código (RCE)

Gravedad CVSSv3:
8.8 (alta)

Ataques conocidos:
sí. Los atacantes están deshabilitando una protección de configuración después de obtener acceso de administrador y están cargando código malicioso.

Descripción:
uso de la opción AllowSymlinks en la configuración puede permitir la carga de una imagen que contiene código malicioso. Aunque esta opción está deshabilitada de manera predeterminada, un atacante con acceso a la configuración de la tienda puede habilitarla y ejecutar código de forma remota.

Productos afectados:
Magento CE antes de 1.9.3.3 y Magento EE antes de 1.14.3.3

Fijo en:
CE 1.9.3.3, EE 1.14.3.3, SUPEE-9767

Reportero:
Wilko Nienhaus

ehannes
fuente
0

No se recomienda permitir. Me enfrentaba a errores de carga de js mientras los enlaces simbólicos estaban habilitados.
Un montón de;

TypeError: $ .widget no es una función

Tengo que probar 4-5 actualizar para páginas cargadas con éxito.
Después de cerrarlo, es posible que los recursos desplegados no se implementen lentamente por primera vez, pero los errores js desaparecieron.

PD: Después de deshabilitar el enlace simbólico, debe eliminar la copia implementada de los archivos después de cada cambio para static.php, vuelva a copiarlo.

rbostan
fuente
1
Lo siento, no entiendo, ¿tienes que hacer 4-5 actualizaciones antes de que funcione? ¿Qué tiene esto que ver con los enlaces simbólicos?
Fabian Blechschmidt
Antes de deshabilitar los enlaces simbólicos :) Perdón por mi inglés.
rbostan
¿Estamos hablando de magento2? Entonces entiendo que no entiendo, no tengo ni idea de 2 todavía.
Fabian Blechschmidt