Coders Conquer Security: Share & Learn Series - Inyección de encabezado de correo electrónico

Publicado el 21 de marzo de 2019
por Jaap Karan Singh
ESTUDIO DE CASO

Coders Conquer Security: Share & Learn Series - Inyección de encabezado de correo electrónico

Publicado el 21 de marzo de 2019
por Jaap Karan Singh
Ver recurso
Ver recurso

Hoy en día es habitual que los sitios web y las aplicaciones permitan a los usuarios enviar comentarios, recordatorios de citas y otros datos diversos a través de una aplicación mediante el correo electrónico. Normalmente este proceso es bastante benigno, y la mayoría de la gente ni siquiera piensa en ello en términos de un potencial riesgo de seguridad.

Sin embargo, como cualquier otro elemento de diseño que permite la entrada de datos por parte del usuario, si no se configuran adecuadamente, estas características aparentemente intrascendentes pueden ser manipuladas por usuarios maliciosos con fines nefastos. Todo lo que se necesita es dar al usuario la posibilidad de introducir un código en el campo de entrada que luego es procesado por error por el servidor. De repente, una aplicación de correo electrónico puede convertirse en un arma.

En este episodio aprenderemos:

  • Cómo los atacantes pueden provocar una inyección de encabezado de correo electrónico
  • Por qué son peligrosas las inyecciones de encabezado de correo electrónico
  • Técnicas que pueden solucionar esta vulnerabilidad.

¿Cómo se activa una inyección de encabezado de correo electrónico?

Aunque no se suele considerar programable, la mayoría de las aplicaciones de contacto por correo electrónico o las funciones incluidas en sitios web o aplicaciones pueden aceptar entradas que cambien la naturaleza de la consulta. Normalmente, el servidor lo hace automáticamente después de que el usuario haya introducido su información, como su dirección de correo electrónico, en el campo de contratación. A continuación, el programa configura el mensaje, añade los destinatarios adecuados y lo envía utilizando su servidor de correo electrónico predeterminado.

Una solicitud POST de correo electrónico típica puede tener este aspecto:

POST /contacto.php HTTP/1.1
Host: www.example.com

Y generar un código parecido a este después de que un usuario haya introducido su información:

name=RealName&replyTo=RealName@ValidServer.com&message=YourAppointmentReminder

El problema se produce cuando los hackers comienzan a inyectar código en el proceso en lugar de sólo su información de contacto. Esto no es diferente a un ataque de tipo inyección SQL, pero realizado contra la aplicación de correo electrónico. Un ejemplo de una consulta manipulada que, en lugar de ello, enviaría spam desde su aplicación a un usuario objetivo podría tener el siguiente aspecto:

name=FakeName\nbcc: SpammedVictim@TargetAddress.com&replyTo= FakeName@ValidServer.com&message=Spammed mensaje

¿Por qué es peligrosa la inyección de encabezados de correo electrónico?

Dependiendo de la habilidad del usuario malintencionado y de sus intenciones, los ataques de inyección de encabezados de correo electrónico pueden ir desde simplemente molestos hasta altamente peligrosos en términos de gravedad. En el extremo inferior de la escala de gravedad, podrían insertar su información de contacto en el campo CCO de un mensaje saliente enviado a un buzón secreto o no revelado dentro de su empresa, revelándolo así a un hacker.

Lo que es más preocupante, podría permitirles controlar completamente su servidor de correo electrónico para enviar spam, phishing u otros correos de ataque desde su organización. No tendrían que intentar fingir que el correo electrónico procede de sus servidores internos, porque realmente se estaría originando allí. Y si usted no está supervisando esa actividad, pueden incluso automatizar el proceso, enviando cientos o miles de correos electrónicos utilizando los servidores de su organización, y de tal manera que parezca que usted está realmente instigando esa actividad.

Eliminación del problema de la inyección en el encabezado del correo electrónico

Al igual que con la inyección SQL y otros ataques de esta naturaleza, la clave para eliminar la posibilidad de que un usuario malintencionado explote una vulnerabilidad de la cabecera del correo electrónico es no confiar nunca en la entrada del usuario. Si un usuario es capaz de introducir información, aunque parezca un proceso trivial como introducir su dirección de correo electrónico, hay que asumir lo peor. O al menos asumir que lo peor es posible.

La validación de la entrada debe realizarse para todos los parámetros, y esto incluye cuando se añade una capacidad de contacto por correo electrónico a una aplicación o sitio web. Las listas blancas se pueden utilizar para habilitar específicamente los procesos y campos que se consideren válidos, mientras se deniega todo lo demás. De hecho, la mayoría de los frameworks tienen bibliotecas disponibles que pueden ser utilizadas para ayudar a bloquear las funciones sólo las necesarias. Esto evitará que cualquier código o comando introducido por usuarios maliciosos sea reconocido y procesado por sus servidores.

Más información sobre las inyecciones de cabecera de correo electrónico

Para más información, puedes consultar lo que dice la OWASP sobre las inyecciones de encabezados de correo electrónico. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .

¿Crees que estás preparado para encontrar y arreglar una inyección de correo electrónico ahora mismo? Dirígete a la plataforma y pon a prueba tus habilidades: [Empieza aquí]

Ver recurso
Ver recurso

Autor

Jaap Karan Singh

¿Quieres más?

Sumérjase en nuestras últimas ideas sobre codificación segura en el blog.

Nuestra amplia biblioteca de recursos tiene como objetivo potenciar el enfoque humano de la mejora de la codificación segura.

Ver blog
¿Quieres más?

Obtenga las últimas investigaciones sobre la seguridad impulsada por los desarrolladores

Nuestra amplia biblioteca de recursos está repleta de recursos útiles, desde libros blancos hasta seminarios web, que le ayudarán a iniciarse en la codificación segura orientada a los desarrolladores. Explórela ahora.

Centro de recursos

Coders Conquer Security: Share & Learn Series - Inyección de encabezado de correo electrónico

Publicado el 21 de marzo de 2019
Por Jaap Karan Singh

Hoy en día es habitual que los sitios web y las aplicaciones permitan a los usuarios enviar comentarios, recordatorios de citas y otros datos diversos a través de una aplicación mediante el correo electrónico. Normalmente este proceso es bastante benigno, y la mayoría de la gente ni siquiera piensa en ello en términos de un potencial riesgo de seguridad.

Sin embargo, como cualquier otro elemento de diseño que permite la entrada de datos por parte del usuario, si no se configuran adecuadamente, estas características aparentemente intrascendentes pueden ser manipuladas por usuarios maliciosos con fines nefastos. Todo lo que se necesita es dar al usuario la posibilidad de introducir un código en el campo de entrada que luego es procesado por error por el servidor. De repente, una aplicación de correo electrónico puede convertirse en un arma.

En este episodio aprenderemos:

  • Cómo los atacantes pueden provocar una inyección de encabezado de correo electrónico
  • Por qué son peligrosas las inyecciones de encabezado de correo electrónico
  • Técnicas que pueden solucionar esta vulnerabilidad.

¿Cómo se activa una inyección de encabezado de correo electrónico?

Aunque no se suele considerar programable, la mayoría de las aplicaciones de contacto por correo electrónico o las funciones incluidas en sitios web o aplicaciones pueden aceptar entradas que cambien la naturaleza de la consulta. Normalmente, el servidor lo hace automáticamente después de que el usuario haya introducido su información, como su dirección de correo electrónico, en el campo de contratación. A continuación, el programa configura el mensaje, añade los destinatarios adecuados y lo envía utilizando su servidor de correo electrónico predeterminado.

Una solicitud POST de correo electrónico típica puede tener este aspecto:

POST /contacto.php HTTP/1.1
Host: www.example.com

Y generar un código parecido a este después de que un usuario haya introducido su información:

name=RealName&replyTo=RealName@ValidServer.com&message=YourAppointmentReminder

El problema se produce cuando los hackers comienzan a inyectar código en el proceso en lugar de sólo su información de contacto. Esto no es diferente a un ataque de tipo inyección SQL, pero realizado contra la aplicación de correo electrónico. Un ejemplo de una consulta manipulada que, en lugar de ello, enviaría spam desde su aplicación a un usuario objetivo podría tener el siguiente aspecto:

name=FakeName\nbcc: SpammedVictim@TargetAddress.com&replyTo= FakeName@ValidServer.com&message=Spammed mensaje

¿Por qué es peligrosa la inyección de encabezados de correo electrónico?

Dependiendo de la habilidad del usuario malintencionado y de sus intenciones, los ataques de inyección de encabezados de correo electrónico pueden ir desde simplemente molestos hasta altamente peligrosos en términos de gravedad. En el extremo inferior de la escala de gravedad, podrían insertar su información de contacto en el campo CCO de un mensaje saliente enviado a un buzón secreto o no revelado dentro de su empresa, revelándolo así a un hacker.

Lo que es más preocupante, podría permitirles controlar completamente su servidor de correo electrónico para enviar spam, phishing u otros correos de ataque desde su organización. No tendrían que intentar fingir que el correo electrónico procede de sus servidores internos, porque realmente se estaría originando allí. Y si usted no está supervisando esa actividad, pueden incluso automatizar el proceso, enviando cientos o miles de correos electrónicos utilizando los servidores de su organización, y de tal manera que parezca que usted está realmente instigando esa actividad.

Eliminación del problema de la inyección en el encabezado del correo electrónico

Al igual que con la inyección SQL y otros ataques de esta naturaleza, la clave para eliminar la posibilidad de que un usuario malintencionado explote una vulnerabilidad de la cabecera del correo electrónico es no confiar nunca en la entrada del usuario. Si un usuario es capaz de introducir información, aunque parezca un proceso trivial como introducir su dirección de correo electrónico, hay que asumir lo peor. O al menos asumir que lo peor es posible.

La validación de la entrada debe realizarse para todos los parámetros, y esto incluye cuando se añade una capacidad de contacto por correo electrónico a una aplicación o sitio web. Las listas blancas se pueden utilizar para habilitar específicamente los procesos y campos que se consideren válidos, mientras se deniega todo lo demás. De hecho, la mayoría de los frameworks tienen bibliotecas disponibles que pueden ser utilizadas para ayudar a bloquear las funciones sólo las necesarias. Esto evitará que cualquier código o comando introducido por usuarios maliciosos sea reconocido y procesado por sus servidores.

Más información sobre las inyecciones de cabecera de correo electrónico

Para más información, puedes consultar lo que dice la OWASP sobre las inyecciones de encabezados de correo electrónico. También puedes poner a prueba tus nuevos conocimientos defensivos con la demostración gratuita de la plataforma Secure Code Warrior , que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para saber más sobre cómo derrotar esta vulnerabilidad, y una galería de pícaros de otras amenazas, visite el blogSecure Code Warrior .

¿Crees que estás preparado para encontrar y arreglar una inyección de correo electrónico ahora mismo? Dirígete a la plataforma y pon a prueba tus habilidades: [Empieza aquí]

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.