SUPEE-9767, modman y enlaces simbólicos

16

Me gustaría parchear una tienda de Magento con SUPEE-9767. La documentación para SUPEE-9767 me dice que desactive la configuración de Symlinks antes de aplicar el parche:

Antes de aplicar el parche o actualizar a la última versión, asegúrese de deshabilitar la configuración de Symlinks ... La configuración, si está habilitada, anulará la configuración del archivo de configuración y su cambio requerirá una modificación directa de la base de datos.

Pero uso modman para administrar módulos y dado que algunos de los módulos están usando archivos de plantilla, la configuración de Symlinks está habilitada de acuerdo con la sugerencia en README de modman. ¿Es seguro dejar habilitada la configuración de enlaces simbólicos como una de las publicaciones en el parche de seguridad SUPEE-9767 - Posibles problemas? sugiere (¿Todavía no puedo comentar las publicaciones porque soy un usuario nuevo)?

Los usuarios que usan modman para administrar los módulos Magento 1.x deben asegurarse de no deshabilitar los enlaces simbólicos, ya que esto deshabilitará los módulos modman.

Si dejo habilitada la configuración de enlaces simbólicos, ¿la tienda no estaría expuesta a APPSEC-1281: ejecución remota de código a través de enlaces simbólicos , una amenaza de seguridad que este parche debe solucionar?

¿Hay otras formas de usar modman con archivos de plantilla después de este parche? (Conozco la opción "versión parcheada de Mage / Core / Block / Template.php" que menciona README de modman, pero parchear un archivo core parece peligroso).

ehannes
fuente
1
Estoy usando Modman y Composer en mis proyectos. No puedo creer que durante muchos años la opción Symlinks en Magento no se haya considerado una bomba. De repente es una bomba! Este cambio sin ninguna notificación y explicación creará muchos problemas para muchas personas. Triste por el futuro de Modman y Compositor en Magento.
ADDISON74
1
Ese es todo el desafío. Si está dispuesto a hacer la inversión, crear un proceso de construcción que genere un artefacto combinado (sin enlaces simbólicos) es una buena manera de hacerlo.
Joseph en SwiftOtter
Puede encontrar un gran artículo sobre esto en tomlankhorst.nl/… donde también explica cómo deshacerse de la advertencia "Los enlaces simbólicos están habilitados" introducidos en Magento 1.9.3.4.
ehannes

Respuestas:

14

Aquí hay algunas aclaraciones sobre este cambio:

Primero lea esta explicación de Peter O'Callaghan, esto le dará una gran comprensión: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

También otra lectura interesante es esta publicación de Max Chadwick https://maxchadwick.xyz/blog/what-allow-symlinks-actually-does

Esta modificación se trata realmente de llamar contenido descargable (como imágenes) a través de directivas de plantilla.

El problema relacionado con los enlaces simbólicos solo se puede explotar con acceso de administrador y Magento también agregó más protección en la carga de imágenes.

Tenga en cuenta que son algunas protecciones contra la forma conocida de explotarlo, además de la configuración en sí.

Entonces, si comprende el riesgo involucrado, puede dejar los enlaces simbólicos habilitados.

Si necesita habilitarlos para una nueva instalación, puede ejecutar:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";
Raphael en Digital Pianism
fuente
Si lo dejo habilitado, ¿cómo protegería la tienda contra "APPSEC-1281: Ejecución remota de código a través de enlaces simbólicos"?
ehannes 01 de
@ehannes protegiendo el acceso a tu backend para comenzar, ya que el exploit requiere acceso de backend. Además de eso, la carga de imágenes ahora tiene una validación de devolución de llamada adicional.
Raphael en Digital Pianism
3
obtener acceso de administrador significa que tiene acceso a toda la interfaz backend de Magento. ¿A quién le importa un exploit en esta etapa que se encuentra en un script de carga de imágenes? ese usuario malintencionado puede eliminar todos sus productos, puede hacer cosas inimaginables. la discusión debería comenzar con "si este usuario obtiene derechos de administrador porque el verdadero administrador es estúpido y no protege el backend de muchas maneras"
ADDISON74
1
@ehannes por favor lea este peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks
Raphael en Digital Pianism
2
Peter O'Callaghan escribe: "Por lo tanto, si alguien logra obtener acceso a su panel de administración, puede realizar una inclusión maliciosa para lograr RCE". Esta parece ser la conclusión común en esta discusión. Como se dijo antes, si un usuario malintencionado tiene acceso a su panel de administración, hay otras cosas de las que preocuparse además de RCE. Si alguien tiene algo que agregar a la discusión, por favor hágalo. De todos modos, creo que has dejado las cosas mucho más claras @RaphaelatDigitalPianism y aceptaré esta respuesta.
ehannes
6

El problema no son los enlaces simbólicos, el problema son las rutas que alcanzan niveles como ../../../../../media/tmp/hahaha.png. Si me equivoco en esto, por favor, ilumíneme. El "arreglo" se tituló "Permitir enlaces simbólicos" y habilitar esto deshabilita la verificación que se implementó usando realpath(). En mi opinión, una solución que es igual de segura, más eficiente y compatible con los enlaces simbólicos es usar strpos($path, '..')y / o verificar que realpath()coincida con ciertos directorios riesgosos como mediay var. Si se implementa de esta manera, no necesitaría ser configurable, siempre podría habilitarse y no romper miles de tiendas.

En cualquier caso, el usuario de su servidor web no debería tener acceso para escribir archivos en los directorios del código fuente (como lo hace Magento Connect ...), por lo que es otra forma de evitar que el código malicioso se escriba en algún lugar y se ejecute como una plantilla de bloque.

Por lo tanto, este ataque a los enlaces simbólicos está mal dirigido y existe una mejor solución. De hecho, proporcioné uno hace más de un año e incluso hay un enlace a él en el modman github README.

ColinM
fuente
0

Si en el extra de su archivo de compositor configura la estrategia magento-deploys para copiar, sus archivos se copiarán de la carpeta del proveedor en lugar de los enlaces simbólicos.

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

Luego puede modificar su core_config_data para establecer el valor de dev / template / allow_symlink en 0

Recurso para información

Estación de trabajo B
fuente