¿Debo preocuparme si mi sitio web arroja información de la pila?

48

Tengo un formulario de inicio de sesión simple en mi página web y la URL tiene este aspecto:

example.com/signup/signup.php?q=1

Si intento algo como esto:

example.com/signup/signup.php?q=1&()

Estoy redirigido a un volcado de pila que se parece a esto:

exception 'DOMException' with message 'Invalid Character Error' in /<mydirectory>/a_xml.class.php:74
Stack trace:
#0 /<mydirectoy>/a_xml.class.php(74): DOMDocument->createElement('()')
...
#6 {main}

¿Es este un gran problema en términos de seguridad? ¿Hay algún ataque que pueda realizar un usuario malicioso que le permita desfigurar o robar mi base de datos? ¿O es esto relativamente benigno y puedo ignorarlo?

    
pregunta Kevin 24.03.2015 - 08:35
fuente

6 respuestas

66

En los entornos de producción (a diferencia del desarrollo), los seguimientos de la pila y los mensajes de error deben registrarse en el archivo en lugar de volcarse en la pantalla. Esto se debe a que un atacante puede aprender cosas sobre su sistema que podrían ayudar a comprometer su sistema.

Información como el sistema operativo, la versión del servidor web, la versión de PHP y más. ¡Algunas trazas de pila pueden contener variables de sistema / entorno que no deberían hacerse públicas!

El usuario / visitante debe obtener una página de error HTTP con buen aspecto en lugar de un mensaje que no sirve para el visitante.

    
respondido por el Alasjo 24.03.2015 - 08:55
fuente
25

Hay dos aspectos diferentes a esto:

  • ¿El error que está causando que el rastreo de la pila sea una vulnerabilidad de seguridad?
  • ¿Está configurado el marco para mostrar los seguimientos de la pila a los forasteros?

El mensaje de error Invalid Character Error suena muy parecido a un escape olvidado, que a menudo puede ser explotado de alguna manera. Por lo tanto, debería preocuparse por el seguimiento de la pila porque es un síntoma de una posible vulnerabilidad de seguridad.

La otra pregunta es si debería preocuparse por los rastros de pila que se muestran a los forasteros. Por un lado, ocultar información sobre las partes internas de un sistema puede verse como seguridad en la oscuridad. En la mayoría de los casos, estaría de acuerdo con eso, pero no en el caso de rastros de pila.

Las huellas de la pila solo se muestran cuando hay un problema, por lo que si alguna vez hay una traza de la pila, existe un riesgo significativo de que exista un error, y si hay una falla, existe un riesgo significativo de que pueda explotarse. Por lo tanto, mantener los rastros de pila lejos de los forasteros es una buena idea. Además, si el seguimiento de la pila contiene no solo los nombres de las funciones llamadas, sino también los valores de los parámetros, puede filtrar fácilmente claves, contraseñas, cookies u otros tipos de credenciales.

Por los dos motivos anteriores, es importante tener cuidado con el lugar donde se muestran los rastreos de tu pila.

Sin embargo, es importante que los trazados de pila estén disponibles para aquellos que necesitan solucionar el problema. Por lo tanto, el registro de trazas de pila es importante. Si esos casos en los que las huellas de la pila son indicaciones de vulnerabilidades de seguridad reales, desea corregirlos lo antes posible. A pesar de que un mensaje de error no descriptivo no le dará mucho trabajo a un atacante, simplemente al darse cuenta de qué caracteres funcionan y cuáles no, posiblemente pueden descubrir cómo explotarlo de todos modos.

    
respondido por el kasperd 24.03.2015 - 12:24
fuente
15

Hay dos problemas aquí, y el OP pregunta sobre el tema menos importante.

Mostrando la traza

Este es el problema que pregunta el OP. Hay debates sobre cuánto de un problema que muestra una traza es en general , y este ejemplo particular muestra muy bien que mostrar una traza puede ser un problema de seguridad . El motivo es que nos permite (a usted, a nosotros y al pirata informático) conocer la existencia del segundo problema.

No se filtra la entrada del usuario

Este es un problema real. No solo sé (gracias a la traza) que su aplicación está pasando entradas de usuario sin filtro y no validadas a las funciones nativas de PHP, incluso sé que DOMDocument->createElement() es la función en cuestión. Ahora comenzaré a atacar este sitio y todos los sitios que puedo identificar con esta compañía por otros problemas de filtración, como la inyección de SQL, XSS, CSRF, ad nauseum.

    
respondido por el dotancohen 26.03.2015 - 12:54
fuente
7

Observe que los seguimientos de pila incluyen parámetros. Si hay llamadas de función que pasan contraseñas como argumentos, esas terminarán en rastreos de pila.

Obviamente, es un desastre si un usuario puede hacer que la contraseña de otro se muestre de nuevo. Menos obvio, las contraseñas de los usuarios ahora están en los archivos de registro; lo que hará que sus usuarios muy enojados. Como mínimo, debe asegurarse de que el registro de contraseñas no se realice.

    
respondido por el Rob 24.03.2015 - 16:12
fuente
4

En su ejemplo, las personas pueden ver la estructura de sus directorios que podrían utilizar para posibles ataques. Te sorprendería lo mucho que puede hacer un "hacker" con muy poca información. Entonces, sí en general es un gran problema en términos de seguridad. Como dice Alasjo, tampoco es fácil de usar y una página de error es una buena alternativa.

Por ejemplo, en algunos casos, mostrar errores a los usuarios podría llevar a: Path Traversal

  

El recorrido de la ruta también se conoce como el ataque ../ (barra de puntos de punto), escalada de directorios y retroceso.

    
respondido por el Loko 24.03.2015 - 12:22
fuente
0

Si bien se ha mencionado en los comentarios anteriores, podría ser útil tener en cuenta que una de las razones

"Información como el sistema operativo, la versión del servidor web, la versión de PHP y más. ¡Algunos rastros de pila pueden contener variables de sistema / entorno que no deberían hacerse públicas!" (Vea el comentario anterior por @Alasjo y @Danny Beckett)

es malo, porque conocer la pila de software utilizada para construir su aplicación, permite a los atacantes explotar fallas de seguridad en esos componentes (los problemas de seguridad en el software común son información ampliamente publicitada (consulte enlace )) además de cualquier defecto / defecto en su aplicación hecho evidente en las huellas de la pila.

Por ejemplo, ya que sé que su sitio usa PHP ahora, podría probar todas las fallas de seguridad relacionadas con PHP (en el caso de que no haya parchado su instalación de PHP para solucionar esa falla ... usted mantiene su parche de software) niveles hasta la fecha, ¿verdad? :-)) incluso si su aplicación no expuso ninguno de sus propios defectos en el seguimiento de la pila.

    
respondido por el gentwo 27.03.2015 - 07:09
fuente

Lea otras preguntas en las etiquetas