¿Qué parte de un problema de seguridad es proc_open () de PHP en un host compartido?

3

Mi empresa está desarrollando un sistema PHP que necesita interactuar con Git en el servidor, que actualmente se puede hacer más convenientemente permitiendo llamadas externas a través de proc_open() , system() y los" me gusta " . El problema es que nuestros clientes normalmente usan hosts compartidos y esos hosts normalmente tienen estas funciones de PHP deshabilitadas. (Bueno, normalmente tampoco tienen Git instalado en sus servidores, pero ese es otro problema; concentrémonos en proc_open() ahora).

Me gustaría entender completamente cuáles son las implicaciones de seguridad de proc_open() que se permiten, y bajo qué circunstancias.

Esto es lo que he reunido hasta ahora:

  • Si el host usa Apache + mod_php , permitir que proc_open () sea no-go porque el script PHP y, a su vez, el comando de shell ejecutado se ejecuta bajo el mismo usuario ( Apache) para todos los usuarios en el host compartido. Obviamente, esto representa un gran riesgo (un usuario podría acceder a los archivos de los demás).
  • Si el host utiliza CGI, FastCGI, PHP-FPM o similar , y si los permisos de archivo están configurados correctamente , permitir que proc_open () sea relativamente bien . El razonamiento aquí es que el script PHP en sí ya puede hacer muchas cosas, por lo que agregar la capacidad de ejecutar comandos externos (con los permisos adecuados en su lugar) no hace mucha diferencia. (Hace alguna diferencia en que hace que el área de la superficie sea más grande, pero la diferencia no debería ser enorme.)

La pregunta es, ¿es correcto lo anterior? ¿O hay ejemplos de ataques que solo serían posibles a través de proc_open() y no de otra manera? Gracias.

    
pregunta Borek Bernard 25.06.2015 - 15:00
fuente

1 respuesta

1

Es correcto que proc_open puede ser peligroso, solo si hay una entrada del usuario a través de él.

Para afectar a otros usuarios / sitios web en el servidor, hoy en día existe un bajo riesgo ya que se está utilizando cagefs y la seguridad del kernel se actualiza en los servidores. Así que no te preocupes por otros usuarios: es el trabajo de la empresa de alojamiento.

    
respondido por el evexoio 13.07.2015 - 22:53
fuente

Lea otras preguntas en las etiquetas