Coders Conquer Security Infrastructure as Code Series - Uso de componentes de fuentes no fiables

Publicado el 15 de junio de 2020
por el doctor Matias Madou
ESTUDIO DE CASO

Coders Conquer Security Infrastructure as Code Series - Uso de componentes de fuentes no fiables

Publicado el 15 de junio de 2020
por el doctor Matias Madou
Ver recurso
Ver recurso

Nos acercamos al final de nuestra serie Infrastructure as Code, pero ha sido estupendo ayudar a desarrolladores como tú en su viaje de seguridad IaC.

¿Has jugado a los retos? ¿Cuál es tu puntuación hasta ahora? Antes de empezar, veamos cuánto sabes ya sobre los peligros de usar componentes de fuentes no confiables:

¿Todavía tiene trabajo que hacer? Sigue leyendo:

El comportamiento que induce a la vulnerabilidad en el que nos vamos a centrar hoy es el uso de código de fuentes no confiables, una práctica aparentemente benigna que está causando grandes problemas. El uso de código y recursos de código abierto tiene muchas ventajas. En general, permite que los expertos aporten sus ideas, su trabajo e incluso el código completo a repositorios como GitHub para que lo utilicen otras personas que luchan por hacer que un programa o una aplicación se comporten correctamente. El uso de código completo para gobernar las funciones del programa evita que los desarrolladores tengan que reinventar la rueda cada vez que necesitan crear una nueva aplicación.

Sin embargo, utilizar fragmentos de código de fuentes no fiables, no verificadas o incluso potencialmente peligrosas conlleva un gran riesgo. De hecho, el uso de código de fuentes no confiables es una de las formas más comunes en que las vulnerabilidades de seguridad, tanto mayores como menores, se cuelan en aplicaciones que de otro modo serían seguras. A veces, esas vulnerabilidades son inducidas accidentalmente por sus creadores. También ha habido casos en los que el código malicioso fue escrito por atacantes potenciales. El código se comparte entonces con la esperanza de atrapar a las víctimas que lo introducirán en sus aplicaciones.

¿Por qué es peligroso utilizar código de fuentes no fiables?

Supongamos que un desarrollador tiene prisa y necesita configurar una aplicación que está desarrollando. Puede ser un proceso complicado. Así que en lugar de pasar mucho tiempo tratando de resolver todas las configuraciones posibles, hacen una búsqueda en Google y encuentran a alguien que ya ha completado un archivo de configuración aparentemente perfecto. Aunque el desarrollador no sabe nada de la persona que escribió el código, añadirlo a una nueva aplicación es relativamente fácil. Se puede hacer en el entorno Docker utilizando dos líneas:



RUN cd /etc/apache2/sites-available/ && \00 wget -O default-ssl.conf https://gist.githubusercontent.com/vesche/\
9d372cfa8855a6be74bcca86efadfbbf/raw/\3 fbdfbe230fa256a6fb78e5e000aebded60d6a5ef/default-ssl.conf

Ahora la imagen de Docker tirará dinámicamente del archivo de configuración de terceros. E incluso si el archivo se prueba y se encuentra bien en el momento, el hecho de que el puntero está ahora incrustado en el código de la nueva aplicación significa que hay una dependencia permanente en el lugar. Días, semanas o meses después, el archivo podría ser alterado por el autor original o por un atacante que haya comprometido el repositorio de código. De repente, el archivo de configuración compartido puede decirle a la aplicación que funcione de forma muy diferente a la prevista, posiblemente dando acceso a usuarios no autorizados o incluso robando directamente los datos y exfiltrándolos.

Una mejor manera de utilizar los recursos compartidos

Si su organización permite el uso de código de fuentes externas, deben establecerse procesos para garantizar que se hace de forma segura. Cuando evalúe el código externo para su posible uso, asegúrese de adquirir componentes de fuentes oficiales sólo mediante enlaces seguros. E incluso en ese caso, nunca debe enlazar con una fuente externa para extraer ese código, ya que eso elimina el proceso de su control. En su lugar, el código aprobado debe ser llevado a una biblioteca segura y sólo utilizado desde esa ubicación protegida. Así que en un entorno Docker, el código se vería así:

COPY src/config/default-ssl.conf /etc/apache2/sites-available/

En lugar de depender de archivos de configuración de terceros remotos, esto se basaría en una copia local de esos archivos. Esto evitará que se realicen cambios inesperados o maliciosos.

Además de utilizar una biblioteca de código seguro, debe establecerse un proceso de gestión de parches para supervisar continuamente los componentes a lo largo del ciclo de vida del software. Todos los componentes del lado del cliente y del servidor también deben ser revisados para detectar alertas de seguridad utilizando herramientas como NVD o CVE. Por último, hay que eliminar las dependencias y funciones no utilizadas o innecesarias que puedan aparecer en el código externo.

Siguiendo estos pasos, los desarrolladores pueden hacer un uso más seguro de los recursos externos sin inducir accidentalmente vulnerabilidades en sus aplicaciones y código.

Consulte las páginas del Secure Code Warrior páginas del blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otros fallos de seguridad. También puedes probar una demostración de los retos de IaC en la plataforma de formación Secure Code Warrior para mantener todos tus conocimientos de ciberseguridad perfeccionados y actualizados.



Ver recurso
Ver recurso

Autor

Doctor Matias Madou

Matías es un investigador y desarrollador con más de 15 años de experiencia práctica en seguridad de software. Ha desarrollado soluciones para empresas como Fortify Software y su propia empresa Sensei Security. A lo largo de su carrera, Matías ha dirigido múltiples proyectos de investigación sobre seguridad de aplicaciones que han dado lugar a productos comerciales y cuenta con más de 10 patentes en su haber. Cuando está lejos de su escritorio, Matias ha servido como instructor para la formación de seguridad de aplicaciones avanzadas courses y regularmente habla en conferencias mundiales como la Conferencia RSA, Black Hat, DefCon, BSIMM, OWASP AppSec y BruCon.

Matías es doctor en Ingeniería Informática por la Universidad de Gante, donde estudió la seguridad de las aplicaciones mediante la ofuscación de programas para ocultar el funcionamiento interno de una aplicación.

¿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 Infrastructure as Code Series - Uso de componentes de fuentes no fiables

Publicado el 15 de junio de 2020
Por el doctor Matias Madou

Nos acercamos al final de nuestra serie Infrastructure as Code, pero ha sido estupendo ayudar a desarrolladores como tú en su viaje de seguridad IaC.

¿Has jugado a los retos? ¿Cuál es tu puntuación hasta ahora? Antes de empezar, veamos cuánto sabes ya sobre los peligros de usar componentes de fuentes no confiables:

¿Todavía tiene trabajo que hacer? Sigue leyendo:

El comportamiento que induce a la vulnerabilidad en el que nos vamos a centrar hoy es el uso de código de fuentes no confiables, una práctica aparentemente benigna que está causando grandes problemas. El uso de código y recursos de código abierto tiene muchas ventajas. En general, permite que los expertos aporten sus ideas, su trabajo e incluso el código completo a repositorios como GitHub para que lo utilicen otras personas que luchan por hacer que un programa o una aplicación se comporten correctamente. El uso de código completo para gobernar las funciones del programa evita que los desarrolladores tengan que reinventar la rueda cada vez que necesitan crear una nueva aplicación.

Sin embargo, utilizar fragmentos de código de fuentes no fiables, no verificadas o incluso potencialmente peligrosas conlleva un gran riesgo. De hecho, el uso de código de fuentes no confiables es una de las formas más comunes en que las vulnerabilidades de seguridad, tanto mayores como menores, se cuelan en aplicaciones que de otro modo serían seguras. A veces, esas vulnerabilidades son inducidas accidentalmente por sus creadores. También ha habido casos en los que el código malicioso fue escrito por atacantes potenciales. El código se comparte entonces con la esperanza de atrapar a las víctimas que lo introducirán en sus aplicaciones.

¿Por qué es peligroso utilizar código de fuentes no fiables?

Supongamos que un desarrollador tiene prisa y necesita configurar una aplicación que está desarrollando. Puede ser un proceso complicado. Así que en lugar de pasar mucho tiempo tratando de resolver todas las configuraciones posibles, hacen una búsqueda en Google y encuentran a alguien que ya ha completado un archivo de configuración aparentemente perfecto. Aunque el desarrollador no sabe nada de la persona que escribió el código, añadirlo a una nueva aplicación es relativamente fácil. Se puede hacer en el entorno Docker utilizando dos líneas:



RUN cd /etc/apache2/sites-available/ && \00 wget -O default-ssl.conf https://gist.githubusercontent.com/vesche/\
9d372cfa8855a6be74bcca86efadfbbf/raw/\3 fbdfbe230fa256a6fb78e5e000aebded60d6a5ef/default-ssl.conf

Ahora la imagen de Docker tirará dinámicamente del archivo de configuración de terceros. E incluso si el archivo se prueba y se encuentra bien en el momento, el hecho de que el puntero está ahora incrustado en el código de la nueva aplicación significa que hay una dependencia permanente en el lugar. Días, semanas o meses después, el archivo podría ser alterado por el autor original o por un atacante que haya comprometido el repositorio de código. De repente, el archivo de configuración compartido puede decirle a la aplicación que funcione de forma muy diferente a la prevista, posiblemente dando acceso a usuarios no autorizados o incluso robando directamente los datos y exfiltrándolos.

Una mejor manera de utilizar los recursos compartidos

Si su organización permite el uso de código de fuentes externas, deben establecerse procesos para garantizar que se hace de forma segura. Cuando evalúe el código externo para su posible uso, asegúrese de adquirir componentes de fuentes oficiales sólo mediante enlaces seguros. E incluso en ese caso, nunca debe enlazar con una fuente externa para extraer ese código, ya que eso elimina el proceso de su control. En su lugar, el código aprobado debe ser llevado a una biblioteca segura y sólo utilizado desde esa ubicación protegida. Así que en un entorno Docker, el código se vería así:

COPY src/config/default-ssl.conf /etc/apache2/sites-available/

En lugar de depender de archivos de configuración de terceros remotos, esto se basaría en una copia local de esos archivos. Esto evitará que se realicen cambios inesperados o maliciosos.

Además de utilizar una biblioteca de código seguro, debe establecerse un proceso de gestión de parches para supervisar continuamente los componentes a lo largo del ciclo de vida del software. Todos los componentes del lado del cliente y del servidor también deben ser revisados para detectar alertas de seguridad utilizando herramientas como NVD o CVE. Por último, hay que eliminar las dependencias y funciones no utilizadas o innecesarias que puedan aparecer en el código externo.

Siguiendo estos pasos, los desarrolladores pueden hacer un uso más seguro de los recursos externos sin inducir accidentalmente vulnerabilidades en sus aplicaciones y código.

Consulte las páginas del Secure Code Warrior páginas del blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otros fallos de seguridad. También puedes probar una demostración de los retos de IaC en la plataforma de formación Secure Code Warrior para mantener todos tus conocimientos de ciberseguridad perfeccionados y actualizados.



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.