DevSecOps: Los viejos errores de seguridad siguen haciendo nuevos trucos
Publicado originalmente en DevOps.com.
En ciberseguridad, a menudo somos como cazadores. Nuestros ojos están firmemente pegados al horizonte, buscando la próxima vulnerabilidad (junto con las herramientas de diseño, técnicas y tácticas adecuadas para detenerla). Sin embargo, este enfoque orientado al futuro puede tener el sorprendente efecto de amortiguar nuestra conciencia de seguridad en general, cegándonos a los peligros más profundos que existen a nuestro alrededor, y que los atacantes están muy contentos de explotar.
A menudo comparo la ciberseguridad moderna con una armadura de Kevlar. Las propiedades aparentemente etéreas del kevlar pueden bloquear balas de alta velocidad y todo tipo de armamento moderno y potente. Incluso puede hacer que el usuario se sienta algo invencible. Sin embargo, un sistema de armas relativamente antiguo, fabricado por primera vez en torno al año 1000 a.C., a menudo puede atravesar esa protección. Un cuchillo afilado, probablemente el segundo arma más antigua del mundo después de las piedras, puede atravesar el Kevlar con la misma facilidad que si se tratara de una sudadera de algodón. Y luego está la pequeña cuestión de que el Kevlar no puede proteger cada milímetro del cuerpo humano. Si un atacante puede encontrar cualquier hueco para asestar un golpe dañino, lo hará "como las pequeñas áreas explotables en el software".
En el ámbito de la ciberseguridad, muchas organizaciones son igualmente vulnerables a los fallos de los sistemas que tienen ocho o diez años de antigüedad, lo que en términos informáticos modernos les da derecho a un reloj de oro y a una pensión. Pero si crees que los fallos en estos sistemas antiguos son inofensivos, entonces probablemente tengas una pantalla azul de la muerte o dos en tu futuro.
Una vulnerabilidad para un veterano
Una de las bibliotecas de JavaScript más antiguas y más utilizadas es jQuery, un recurso de código abierto que ayuda con todo, desde el manejo de eventos, hasta el recorrido y la manipulación del árbol DOM, y la generación de animaciones. Es un caballo de batalla, y se ha utilizado durante muchos años. La gente asume que porque la biblioteca está tan establecida en este punto, que debe haber sido completamente vetada, con cualquier vulnerabilidad eliminada.
Lamentablemente, este no es el caso. Por defecto, la mayoría de las aplicaciones que dependen de jQuery utilizan las instrucciones de la biblioteca interna para la autenticación. Por ejemplo, con los servidores Apache, esto significa comprobar los archivos .htaccess. Pocos desarrolladores que diseñan programas que usan Apache probablemente pensaron en comprobar que las actualizaciones del servidor Apache incluían el .htaccess. Después de todo, ¿por qué iba Apache a eliminar ese componente crítico, que ha sido un cimiento de la seguridad durante años?
Por extraño que parezca, eso es exactamente lo que hizo Apache en la versión 2.3.9. Aparentemente, tener que comprobar los archivos de configuración .htaccess cada vez que un programa necesitaba ejecutarse estaba ralentizando demasiado las cosas. Al eliminarlo, se mejoró el rendimiento general de Apache, pero también se creó una vulnerabilidad que la mayoría de la gente desconocía. Si los desarrolladores no se molestaban en comprobar si sus aplicaciones podían seguir accediendo a los archivos .htaccess, la mayoría de las peticiones se aceptaban sin más.
Recientemente, los expertos descubrieron ese fallo y observaron que su uso permitiría a usuarios no autorizados cargar y ejecutar shells o casi cualquier tipo de código en sistemas supuestamente seguros. Esto llevó a la creación de una alerta de vulnerabilidad denominada CVE-2018-9206 en octubre. Pero, la facilidad con la que el fallo fue descubierto por un investigador de seguridad implica que los hackers profesionales, cuyo único objetivo es buscar vulnerabilidades como esta, probablemente ya la hayan descubierto. Al fin y al cabo, a pesar de la publicidad, los parches y las correcciones que se produjeron a raíz de este fallo, unas semanas más tarde se produjo un ataque similar de gran impacto, en el que se desató un malware que se dedicaba a robar Bitcoin en una popular librería NPM que descargan millones de personas cada semana.
El mayordomo lo hizo
Al igual que jQuery, Jenkins es una oferta de código abierto, y uno de los más populares de su tipo. Con su útil nombre de servidor, tiene sentido que Jenkins sea utilizado como servidor de automatización por los equipos de desarrollo de muchas industrias. Cuando Jenkins funciona correctamente, es una herramienta extremadamente útil. Sin embargo, las fallas recientemente descubiertas, y una operación de minería de criptomonedas recientemente descubierta que es realmente masiva en escala, sugiere que Jenkins también estaba haciendo mucho trabajo para los malos.
Una de las vulnerabilidades más peligrosas de Jenkins es la llamada deserialización de Java, designada como CVE-2017-1000353. Es un ataque complejo, pero que ha existido durante un tiempo. Un atacante debe enviar dos peticiones. La primera inicia un canal bidireccional de descarga que inicialmente es rechazado por el servidor. Sin embargo, la segunda petición añade un canal de subida que contiene una carga útil con los comandos que el atacante quiera, y utiliza el script payload.jar. Una vez enviada la segunda petición, la comunicación está permitida en los servidores Jenkins no parcheados.
Incluso en servidores parcheados, existen exploits. Por ejemplo, cuando se ejecuta Jenkins en un entorno Windows, por defecto utiliza la cuenta NT AUTHORITY\SYSTEM para autorizar a los usuarios. Esto es peligroso porque a SYSTEM se le conceden todos los permisos en los servidores Windows. Los desarrolladores pueden cambiar la cuenta de autoridad, pero a menudo no lo hacen. Su lógica para no hacerlo se basa en el hecho de que Jenkins ha existido siempre, por lo que la gente piensa que cualquier vulnerabilidad ha sido parcheada hace mucho tiempo.
Recientemente, un hacker utilizó estas antiguas vulnerabilidades de Jenkins para comprometer varios servidores. El objetivo era añadir un programa minero de criptomonedas en cada instancia vulnerable de Jenkins que pudieran encontrar. Los mineros ocuparon valiosos recursos informáticos en su constante búsqueda de criptodivisas. Hasta ahora, han encontrado aproximadamente 10.800 criptomonedas Monero, con un valor de casi 3,5 millones de dólares.
Lo que es viejo es nuevo otra vez
En ambos ejemplos, los atacantes oportunistas explotan las vulnerabilidades de plataformas que muchos consideran seguras. En el lado defensivo, la falta de desarrollo consciente de la seguridad está permitiendo a estos hackers dar nueva vida a viejos trucos. Y a pesar de una nueva ronda de éxitos utilizando vulnerabilidades antiguas, muchas organizaciones no tienen ningún plan para detener este círculo vicioso.
El hecho de que algo sea antiguo no significa que sea inofensivo. Y sólo porque las bibliotecas y recursos comunes hayan existido durante años no significa que sean completamente seguros (por ejemplo, la entrada número 9 del actual top 10 de OWASP está dedicada a tratar el tema del Uso de Componentes con Vulnerabilidades Conocidas). Sólo mediante la diligencia y la formación constante en materia de seguridad podremos protegernos no sólo de las peligrosas amenazas que se avecinan, sino también de las que ya se han instalado insidiosamente en nuestros propios patios.
En ciberseguridad, a menudo somos como cazadores. Nuestros ojos están firmemente pegados al horizonte, buscando la próxima vulnerabilidad. Sin embargo, este enfoque hacia el futuro puede tener el sorprendente efecto de disminuir nuestra conciencia de seguridad en general.
Director General, Presidente y Cofundador
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDirector General, Presidente y Cofundador
Pieter Danhieux es un experto en seguridad mundialmente reconocido, con más de 12 años de experiencia como consultor de seguridad y 8 años como instructor principal de SANS enseñando técnicas ofensivas sobre cómo atacar y evaluar organizaciones, sistemas y personas en busca de debilidades de seguridad. En 2016, fue reconocido como una de las personas más cool de la tecnología en Australia (Business Insider), galardonado como Profesional de Seguridad Cibernética del Año (AISA - Asociación Australiana de Seguridad de la Información) y tiene certificaciones GSE, CISSP, GCIH, GCFA, GSEC, GPEN, GWAPT, GCIA.
Publicado originalmente en DevOps.com.
En ciberseguridad, a menudo somos como cazadores. Nuestros ojos están firmemente pegados al horizonte, buscando la próxima vulnerabilidad (junto con las herramientas de diseño, técnicas y tácticas adecuadas para detenerla). Sin embargo, este enfoque orientado al futuro puede tener el sorprendente efecto de amortiguar nuestra conciencia de seguridad en general, cegándonos a los peligros más profundos que existen a nuestro alrededor, y que los atacantes están muy contentos de explotar.
A menudo comparo la ciberseguridad moderna con una armadura de Kevlar. Las propiedades aparentemente etéreas del kevlar pueden bloquear balas de alta velocidad y todo tipo de armamento moderno y potente. Incluso puede hacer que el usuario se sienta algo invencible. Sin embargo, un sistema de armas relativamente antiguo, fabricado por primera vez en torno al año 1000 a.C., a menudo puede atravesar esa protección. Un cuchillo afilado, probablemente el segundo arma más antigua del mundo después de las piedras, puede atravesar el Kevlar con la misma facilidad que si se tratara de una sudadera de algodón. Y luego está la pequeña cuestión de que el Kevlar no puede proteger cada milímetro del cuerpo humano. Si un atacante puede encontrar cualquier hueco para asestar un golpe dañino, lo hará "como las pequeñas áreas explotables en el software".
En el ámbito de la ciberseguridad, muchas organizaciones son igualmente vulnerables a los fallos de los sistemas que tienen ocho o diez años de antigüedad, lo que en términos informáticos modernos les da derecho a un reloj de oro y a una pensión. Pero si crees que los fallos en estos sistemas antiguos son inofensivos, entonces probablemente tengas una pantalla azul de la muerte o dos en tu futuro.
Una vulnerabilidad para un veterano
Una de las bibliotecas de JavaScript más antiguas y más utilizadas es jQuery, un recurso de código abierto que ayuda con todo, desde el manejo de eventos, hasta el recorrido y la manipulación del árbol DOM, y la generación de animaciones. Es un caballo de batalla, y se ha utilizado durante muchos años. La gente asume que porque la biblioteca está tan establecida en este punto, que debe haber sido completamente vetada, con cualquier vulnerabilidad eliminada.
Lamentablemente, este no es el caso. Por defecto, la mayoría de las aplicaciones que dependen de jQuery utilizan las instrucciones de la biblioteca interna para la autenticación. Por ejemplo, con los servidores Apache, esto significa comprobar los archivos .htaccess. Pocos desarrolladores que diseñan programas que usan Apache probablemente pensaron en comprobar que las actualizaciones del servidor Apache incluían el .htaccess. Después de todo, ¿por qué iba Apache a eliminar ese componente crítico, que ha sido un cimiento de la seguridad durante años?
Por extraño que parezca, eso es exactamente lo que hizo Apache en la versión 2.3.9. Aparentemente, tener que comprobar los archivos de configuración .htaccess cada vez que un programa necesitaba ejecutarse estaba ralentizando demasiado las cosas. Al eliminarlo, se mejoró el rendimiento general de Apache, pero también se creó una vulnerabilidad que la mayoría de la gente desconocía. Si los desarrolladores no se molestaban en comprobar si sus aplicaciones podían seguir accediendo a los archivos .htaccess, la mayoría de las peticiones se aceptaban sin más.
Recientemente, los expertos descubrieron ese fallo y observaron que su uso permitiría a usuarios no autorizados cargar y ejecutar shells o casi cualquier tipo de código en sistemas supuestamente seguros. Esto llevó a la creación de una alerta de vulnerabilidad denominada CVE-2018-9206 en octubre. Pero, la facilidad con la que el fallo fue descubierto por un investigador de seguridad implica que los hackers profesionales, cuyo único objetivo es buscar vulnerabilidades como esta, probablemente ya la hayan descubierto. Al fin y al cabo, a pesar de la publicidad, los parches y las correcciones que se produjeron a raíz de este fallo, unas semanas más tarde se produjo un ataque similar de gran impacto, en el que se desató un malware que se dedicaba a robar Bitcoin en una popular librería NPM que descargan millones de personas cada semana.
El mayordomo lo hizo
Al igual que jQuery, Jenkins es una oferta de código abierto, y uno de los más populares de su tipo. Con su útil nombre de servidor, tiene sentido que Jenkins sea utilizado como servidor de automatización por los equipos de desarrollo de muchas industrias. Cuando Jenkins funciona correctamente, es una herramienta extremadamente útil. Sin embargo, las fallas recientemente descubiertas, y una operación de minería de criptomonedas recientemente descubierta que es realmente masiva en escala, sugiere que Jenkins también estaba haciendo mucho trabajo para los malos.
Una de las vulnerabilidades más peligrosas de Jenkins es la llamada deserialización de Java, designada como CVE-2017-1000353. Es un ataque complejo, pero que ha existido durante un tiempo. Un atacante debe enviar dos peticiones. La primera inicia un canal bidireccional de descarga que inicialmente es rechazado por el servidor. Sin embargo, la segunda petición añade un canal de subida que contiene una carga útil con los comandos que el atacante quiera, y utiliza el script payload.jar. Una vez enviada la segunda petición, la comunicación está permitida en los servidores Jenkins no parcheados.
Incluso en servidores parcheados, existen exploits. Por ejemplo, cuando se ejecuta Jenkins en un entorno Windows, por defecto utiliza la cuenta NT AUTHORITY\SYSTEM para autorizar a los usuarios. Esto es peligroso porque a SYSTEM se le conceden todos los permisos en los servidores Windows. Los desarrolladores pueden cambiar la cuenta de autoridad, pero a menudo no lo hacen. Su lógica para no hacerlo se basa en el hecho de que Jenkins ha existido siempre, por lo que la gente piensa que cualquier vulnerabilidad ha sido parcheada hace mucho tiempo.
Recientemente, un hacker utilizó estas antiguas vulnerabilidades de Jenkins para comprometer varios servidores. El objetivo era añadir un programa minero de criptomonedas en cada instancia vulnerable de Jenkins que pudieran encontrar. Los mineros ocuparon valiosos recursos informáticos en su constante búsqueda de criptodivisas. Hasta ahora, han encontrado aproximadamente 10.800 criptomonedas Monero, con un valor de casi 3,5 millones de dólares.
Lo que es viejo es nuevo otra vez
En ambos ejemplos, los atacantes oportunistas explotan las vulnerabilidades de plataformas que muchos consideran seguras. En el lado defensivo, la falta de desarrollo consciente de la seguridad está permitiendo a estos hackers dar nueva vida a viejos trucos. Y a pesar de una nueva ronda de éxitos utilizando vulnerabilidades antiguas, muchas organizaciones no tienen ningún plan para detener este círculo vicioso.
El hecho de que algo sea antiguo no significa que sea inofensivo. Y sólo porque las bibliotecas y recursos comunes hayan existido durante años no significa que sean completamente seguros (por ejemplo, la entrada número 9 del actual top 10 de OWASP está dedicada a tratar el tema del Uso de Componentes con Vulnerabilidades Conocidas). Sólo mediante la diligencia y la formación constante en materia de seguridad podremos protegernos no sólo de las peligrosas amenazas que se avecinan, sino también de las que ya se han instalado insidiosamente en nuestros propios patios.
Publicado originalmente en DevOps.com.
En ciberseguridad, a menudo somos como cazadores. Nuestros ojos están firmemente pegados al horizonte, buscando la próxima vulnerabilidad (junto con las herramientas de diseño, técnicas y tácticas adecuadas para detenerla). Sin embargo, este enfoque orientado al futuro puede tener el sorprendente efecto de amortiguar nuestra conciencia de seguridad en general, cegándonos a los peligros más profundos que existen a nuestro alrededor, y que los atacantes están muy contentos de explotar.
A menudo comparo la ciberseguridad moderna con una armadura de Kevlar. Las propiedades aparentemente etéreas del kevlar pueden bloquear balas de alta velocidad y todo tipo de armamento moderno y potente. Incluso puede hacer que el usuario se sienta algo invencible. Sin embargo, un sistema de armas relativamente antiguo, fabricado por primera vez en torno al año 1000 a.C., a menudo puede atravesar esa protección. Un cuchillo afilado, probablemente el segundo arma más antigua del mundo después de las piedras, puede atravesar el Kevlar con la misma facilidad que si se tratara de una sudadera de algodón. Y luego está la pequeña cuestión de que el Kevlar no puede proteger cada milímetro del cuerpo humano. Si un atacante puede encontrar cualquier hueco para asestar un golpe dañino, lo hará "como las pequeñas áreas explotables en el software".
En el ámbito de la ciberseguridad, muchas organizaciones son igualmente vulnerables a los fallos de los sistemas que tienen ocho o diez años de antigüedad, lo que en términos informáticos modernos les da derecho a un reloj de oro y a una pensión. Pero si crees que los fallos en estos sistemas antiguos son inofensivos, entonces probablemente tengas una pantalla azul de la muerte o dos en tu futuro.
Una vulnerabilidad para un veterano
Una de las bibliotecas de JavaScript más antiguas y más utilizadas es jQuery, un recurso de código abierto que ayuda con todo, desde el manejo de eventos, hasta el recorrido y la manipulación del árbol DOM, y la generación de animaciones. Es un caballo de batalla, y se ha utilizado durante muchos años. La gente asume que porque la biblioteca está tan establecida en este punto, que debe haber sido completamente vetada, con cualquier vulnerabilidad eliminada.
Lamentablemente, este no es el caso. Por defecto, la mayoría de las aplicaciones que dependen de jQuery utilizan las instrucciones de la biblioteca interna para la autenticación. Por ejemplo, con los servidores Apache, esto significa comprobar los archivos .htaccess. Pocos desarrolladores que diseñan programas que usan Apache probablemente pensaron en comprobar que las actualizaciones del servidor Apache incluían el .htaccess. Después de todo, ¿por qué iba Apache a eliminar ese componente crítico, que ha sido un cimiento de la seguridad durante años?
Por extraño que parezca, eso es exactamente lo que hizo Apache en la versión 2.3.9. Aparentemente, tener que comprobar los archivos de configuración .htaccess cada vez que un programa necesitaba ejecutarse estaba ralentizando demasiado las cosas. Al eliminarlo, se mejoró el rendimiento general de Apache, pero también se creó una vulnerabilidad que la mayoría de la gente desconocía. Si los desarrolladores no se molestaban en comprobar si sus aplicaciones podían seguir accediendo a los archivos .htaccess, la mayoría de las peticiones se aceptaban sin más.
Recientemente, los expertos descubrieron ese fallo y observaron que su uso permitiría a usuarios no autorizados cargar y ejecutar shells o casi cualquier tipo de código en sistemas supuestamente seguros. Esto llevó a la creación de una alerta de vulnerabilidad denominada CVE-2018-9206 en octubre. Pero, la facilidad con la que el fallo fue descubierto por un investigador de seguridad implica que los hackers profesionales, cuyo único objetivo es buscar vulnerabilidades como esta, probablemente ya la hayan descubierto. Al fin y al cabo, a pesar de la publicidad, los parches y las correcciones que se produjeron a raíz de este fallo, unas semanas más tarde se produjo un ataque similar de gran impacto, en el que se desató un malware que se dedicaba a robar Bitcoin en una popular librería NPM que descargan millones de personas cada semana.
El mayordomo lo hizo
Al igual que jQuery, Jenkins es una oferta de código abierto, y uno de los más populares de su tipo. Con su útil nombre de servidor, tiene sentido que Jenkins sea utilizado como servidor de automatización por los equipos de desarrollo de muchas industrias. Cuando Jenkins funciona correctamente, es una herramienta extremadamente útil. Sin embargo, las fallas recientemente descubiertas, y una operación de minería de criptomonedas recientemente descubierta que es realmente masiva en escala, sugiere que Jenkins también estaba haciendo mucho trabajo para los malos.
Una de las vulnerabilidades más peligrosas de Jenkins es la llamada deserialización de Java, designada como CVE-2017-1000353. Es un ataque complejo, pero que ha existido durante un tiempo. Un atacante debe enviar dos peticiones. La primera inicia un canal bidireccional de descarga que inicialmente es rechazado por el servidor. Sin embargo, la segunda petición añade un canal de subida que contiene una carga útil con los comandos que el atacante quiera, y utiliza el script payload.jar. Una vez enviada la segunda petición, la comunicación está permitida en los servidores Jenkins no parcheados.
Incluso en servidores parcheados, existen exploits. Por ejemplo, cuando se ejecuta Jenkins en un entorno Windows, por defecto utiliza la cuenta NT AUTHORITY\SYSTEM para autorizar a los usuarios. Esto es peligroso porque a SYSTEM se le conceden todos los permisos en los servidores Windows. Los desarrolladores pueden cambiar la cuenta de autoridad, pero a menudo no lo hacen. Su lógica para no hacerlo se basa en el hecho de que Jenkins ha existido siempre, por lo que la gente piensa que cualquier vulnerabilidad ha sido parcheada hace mucho tiempo.
Recientemente, un hacker utilizó estas antiguas vulnerabilidades de Jenkins para comprometer varios servidores. El objetivo era añadir un programa minero de criptomonedas en cada instancia vulnerable de Jenkins que pudieran encontrar. Los mineros ocuparon valiosos recursos informáticos en su constante búsqueda de criptodivisas. Hasta ahora, han encontrado aproximadamente 10.800 criptomonedas Monero, con un valor de casi 3,5 millones de dólares.
Lo que es viejo es nuevo otra vez
En ambos ejemplos, los atacantes oportunistas explotan las vulnerabilidades de plataformas que muchos consideran seguras. En el lado defensivo, la falta de desarrollo consciente de la seguridad está permitiendo a estos hackers dar nueva vida a viejos trucos. Y a pesar de una nueva ronda de éxitos utilizando vulnerabilidades antiguas, muchas organizaciones no tienen ningún plan para detener este círculo vicioso.
El hecho de que algo sea antiguo no significa que sea inofensivo. Y sólo porque las bibliotecas y recursos comunes hayan existido durante años no significa que sean completamente seguros (por ejemplo, la entrada número 9 del actual top 10 de OWASP está dedicada a tratar el tema del Uso de Componentes con Vulnerabilidades Conocidas). Sólo mediante la diligencia y la formación constante en materia de seguridad podremos protegernos no sólo de las peligrosas amenazas que se avecinan, sino también de las que ya se han instalado insidiosamente en nuestros propios patios.
Haga clic en el siguiente enlace y descargue el PDF de este recurso.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Ver el informeReservar una demostraciónDirector General, Presidente y Cofundador
Pieter Danhieux es un experto en seguridad mundialmente reconocido, con más de 12 años de experiencia como consultor de seguridad y 8 años como instructor principal de SANS enseñando técnicas ofensivas sobre cómo atacar y evaluar organizaciones, sistemas y personas en busca de debilidades de seguridad. En 2016, fue reconocido como una de las personas más cool de la tecnología en Australia (Business Insider), galardonado como Profesional de Seguridad Cibernética del Año (AISA - Asociación Australiana de Seguridad de la Información) y tiene certificaciones GSE, CISSP, GCIH, GCFA, GSEC, GPEN, GWAPT, GCIA.
Publicado originalmente en DevOps.com.
En ciberseguridad, a menudo somos como cazadores. Nuestros ojos están firmemente pegados al horizonte, buscando la próxima vulnerabilidad (junto con las herramientas de diseño, técnicas y tácticas adecuadas para detenerla). Sin embargo, este enfoque orientado al futuro puede tener el sorprendente efecto de amortiguar nuestra conciencia de seguridad en general, cegándonos a los peligros más profundos que existen a nuestro alrededor, y que los atacantes están muy contentos de explotar.
A menudo comparo la ciberseguridad moderna con una armadura de Kevlar. Las propiedades aparentemente etéreas del kevlar pueden bloquear balas de alta velocidad y todo tipo de armamento moderno y potente. Incluso puede hacer que el usuario se sienta algo invencible. Sin embargo, un sistema de armas relativamente antiguo, fabricado por primera vez en torno al año 1000 a.C., a menudo puede atravesar esa protección. Un cuchillo afilado, probablemente el segundo arma más antigua del mundo después de las piedras, puede atravesar el Kevlar con la misma facilidad que si se tratara de una sudadera de algodón. Y luego está la pequeña cuestión de que el Kevlar no puede proteger cada milímetro del cuerpo humano. Si un atacante puede encontrar cualquier hueco para asestar un golpe dañino, lo hará "como las pequeñas áreas explotables en el software".
En el ámbito de la ciberseguridad, muchas organizaciones son igualmente vulnerables a los fallos de los sistemas que tienen ocho o diez años de antigüedad, lo que en términos informáticos modernos les da derecho a un reloj de oro y a una pensión. Pero si crees que los fallos en estos sistemas antiguos son inofensivos, entonces probablemente tengas una pantalla azul de la muerte o dos en tu futuro.
Una vulnerabilidad para un veterano
Una de las bibliotecas de JavaScript más antiguas y más utilizadas es jQuery, un recurso de código abierto que ayuda con todo, desde el manejo de eventos, hasta el recorrido y la manipulación del árbol DOM, y la generación de animaciones. Es un caballo de batalla, y se ha utilizado durante muchos años. La gente asume que porque la biblioteca está tan establecida en este punto, que debe haber sido completamente vetada, con cualquier vulnerabilidad eliminada.
Lamentablemente, este no es el caso. Por defecto, la mayoría de las aplicaciones que dependen de jQuery utilizan las instrucciones de la biblioteca interna para la autenticación. Por ejemplo, con los servidores Apache, esto significa comprobar los archivos .htaccess. Pocos desarrolladores que diseñan programas que usan Apache probablemente pensaron en comprobar que las actualizaciones del servidor Apache incluían el .htaccess. Después de todo, ¿por qué iba Apache a eliminar ese componente crítico, que ha sido un cimiento de la seguridad durante años?
Por extraño que parezca, eso es exactamente lo que hizo Apache en la versión 2.3.9. Aparentemente, tener que comprobar los archivos de configuración .htaccess cada vez que un programa necesitaba ejecutarse estaba ralentizando demasiado las cosas. Al eliminarlo, se mejoró el rendimiento general de Apache, pero también se creó una vulnerabilidad que la mayoría de la gente desconocía. Si los desarrolladores no se molestaban en comprobar si sus aplicaciones podían seguir accediendo a los archivos .htaccess, la mayoría de las peticiones se aceptaban sin más.
Recientemente, los expertos descubrieron ese fallo y observaron que su uso permitiría a usuarios no autorizados cargar y ejecutar shells o casi cualquier tipo de código en sistemas supuestamente seguros. Esto llevó a la creación de una alerta de vulnerabilidad denominada CVE-2018-9206 en octubre. Pero, la facilidad con la que el fallo fue descubierto por un investigador de seguridad implica que los hackers profesionales, cuyo único objetivo es buscar vulnerabilidades como esta, probablemente ya la hayan descubierto. Al fin y al cabo, a pesar de la publicidad, los parches y las correcciones que se produjeron a raíz de este fallo, unas semanas más tarde se produjo un ataque similar de gran impacto, en el que se desató un malware que se dedicaba a robar Bitcoin en una popular librería NPM que descargan millones de personas cada semana.
El mayordomo lo hizo
Al igual que jQuery, Jenkins es una oferta de código abierto, y uno de los más populares de su tipo. Con su útil nombre de servidor, tiene sentido que Jenkins sea utilizado como servidor de automatización por los equipos de desarrollo de muchas industrias. Cuando Jenkins funciona correctamente, es una herramienta extremadamente útil. Sin embargo, las fallas recientemente descubiertas, y una operación de minería de criptomonedas recientemente descubierta que es realmente masiva en escala, sugiere que Jenkins también estaba haciendo mucho trabajo para los malos.
Una de las vulnerabilidades más peligrosas de Jenkins es la llamada deserialización de Java, designada como CVE-2017-1000353. Es un ataque complejo, pero que ha existido durante un tiempo. Un atacante debe enviar dos peticiones. La primera inicia un canal bidireccional de descarga que inicialmente es rechazado por el servidor. Sin embargo, la segunda petición añade un canal de subida que contiene una carga útil con los comandos que el atacante quiera, y utiliza el script payload.jar. Una vez enviada la segunda petición, la comunicación está permitida en los servidores Jenkins no parcheados.
Incluso en servidores parcheados, existen exploits. Por ejemplo, cuando se ejecuta Jenkins en un entorno Windows, por defecto utiliza la cuenta NT AUTHORITY\SYSTEM para autorizar a los usuarios. Esto es peligroso porque a SYSTEM se le conceden todos los permisos en los servidores Windows. Los desarrolladores pueden cambiar la cuenta de autoridad, pero a menudo no lo hacen. Su lógica para no hacerlo se basa en el hecho de que Jenkins ha existido siempre, por lo que la gente piensa que cualquier vulnerabilidad ha sido parcheada hace mucho tiempo.
Recientemente, un hacker utilizó estas antiguas vulnerabilidades de Jenkins para comprometer varios servidores. El objetivo era añadir un programa minero de criptomonedas en cada instancia vulnerable de Jenkins que pudieran encontrar. Los mineros ocuparon valiosos recursos informáticos en su constante búsqueda de criptodivisas. Hasta ahora, han encontrado aproximadamente 10.800 criptomonedas Monero, con un valor de casi 3,5 millones de dólares.
Lo que es viejo es nuevo otra vez
En ambos ejemplos, los atacantes oportunistas explotan las vulnerabilidades de plataformas que muchos consideran seguras. En el lado defensivo, la falta de desarrollo consciente de la seguridad está permitiendo a estos hackers dar nueva vida a viejos trucos. Y a pesar de una nueva ronda de éxitos utilizando vulnerabilidades antiguas, muchas organizaciones no tienen ningún plan para detener este círculo vicioso.
El hecho de que algo sea antiguo no significa que sea inofensivo. Y sólo porque las bibliotecas y recursos comunes hayan existido durante años no significa que sean completamente seguros (por ejemplo, la entrada número 9 del actual top 10 de OWASP está dedicada a tratar el tema del Uso de Componentes con Vulnerabilidades Conocidas). Sólo mediante la diligencia y la formación constante en materia de seguridad podremos protegernos no sólo de las peligrosas amenazas que se avecinan, sino también de las que ya se han instalado insidiosamente en nuestros propios patios.
Índice
Director General, Presidente y Cofundador
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDescargarRecursos para empezar
Evaluación comparativa de las competencias en materia de seguridad: optimización del diseño seguro en la empresa
El movimiento Secure-by-Design es el futuro del desarrollo de software seguro. Conozca los elementos clave que las empresas deben tener en cuenta cuando piensan en una iniciativa Secure-by-Design.
DigitalOcean reduce su deuda de seguridad con Secure Code Warrior
El uso por parte de DigitalOcean de la formación Secure Code Warrior ha reducido significativamente la deuda de seguridad, permitiendo a los equipos centrarse más en la innovación y la productividad. La mejora de la seguridad ha reforzado la calidad de sus productos y su ventaja competitiva. De cara al futuro, SCW Trust Score les ayudará a seguir mejorando las prácticas de seguridad y a continuar impulsando la innovación.
Recursos para empezar
La puntuación de confianza revela el valor de las iniciativas de mejora de la seguridad mediante el diseño
Nuestra investigación ha demostrado que la formación en código seguro funciona. Trust Score, que utiliza un algoritmo basado en más de 20 millones de puntos de datos de aprendizaje procedentes del trabajo de más de 250 000 alumnos en más de 600 organizaciones, revela su eficacia a la hora de reducir las vulnerabilidades y cómo hacer que la iniciativa sea aún más eficaz.
Seguridad reactiva frente a seguridad preventiva: Prevenir es mejor que curar
La idea de introducir la seguridad preventiva en el código y los sistemas heredados al mismo tiempo que en las aplicaciones más recientes puede parecer desalentadora, pero un planteamiento basado en el diseño seguro, aplicado mediante la mejora de las competencias de los desarrolladores, puede aplicar las mejores prácticas de seguridad a esos sistemas. Es la mejor oportunidad que tienen muchas organizaciones de mejorar su seguridad.
Ventajas de la evaluación comparativa de las competencias de seguridad de los desarrolladores
La creciente atención que se presta al código seguro y a los principios del diseño seguro exige que los desarrolladores reciban formación en ciberseguridad desde el principio del proceso de desarrollo de software, con herramientas como Secure Code Warrior's Trust Score, que ayudan a medir y mejorar sus progresos.
Impulsando iniciativas de seguridad por diseño para empresas con éxito significativo
Nuestro último documento de investigación, Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise, es el resultado de un análisis profundo de iniciativas reales de Secure-by-Design a nivel empresarial y de la derivación de enfoques de mejores prácticas basados en hallazgos basados en datos.