Por qué las inyecciones SQL son las cucarachas del mundo de la AppSec (y cómo los CISOs pueden erradicarlas de una vez por todas)

Publicado el 26 de septiembre de 2018
por el doctor Matias Madou
ESTUDIO DE CASO

Por qué las inyecciones SQL son las cucarachas del mundo de la AppSec (y cómo los CISOs pueden erradicarlas de una vez por todas)

Publicado el 26 de septiembre de 2018
por el doctor Matias Madou
Ver recurso
Ver recurso

Es bien conocida la teoría de que las cucarachas pueden sobrevivir a todo, incluso a una explosión nuclear. Aunque esa teoría sólo es cierta hasta cierto punto, su sencilla composición corporal las hace extremadamente resistentes para su tamaño y difíciles de erradicar en la mayoría de las condiciones.

He estado pensando... si las cucarachas tuvieran un equivalente en el mundo digital, tendrían que ser las vulnerabilidades de inyección SQL (SQLi) en el código. Se trata de una vulnerabilidad conocida desde hace más de veinte años y, sin embargo, las organizaciones son víctimas de ellas una y otra vez. El extenso y costoso ataque a Target fue el resultado de la inyección SQL, al igual que un caso de piratería electoral en Illinois en el que se expusieron 200.000 registros de votantes, lo que llevó al FBI a recomendar a todos los administradores de TI que trabajaran rápidamente para reforzar sus prácticas de seguridad.

El Informe de la Iniciativa de Inteligencia de Hackers de Imperva reveló que entre 2005 y 2011, los ataques SQLi se utilizaron en el 83% de todas las violaciones de datos reportadas. Hoy en día, las vulnerabilidades de inyección siguen siendo la amenaza número uno en el Top 10 de OWASP. Son relativamente sencillas, pero no mueren.

Parece ridículo que esta misma vulnerabilidad siga apareciendo en un número importante de análisis de seguridad de aplicaciones. Sabemos cómo funciona y sabemos cómo detenerla. ¿Cómo es posible? La verdad es que la seguridad de nuestro software tiene un amplio margen de mejora.

El informe de Veracode sobre el estado de la seguridad del software -basado en 400.000 escaneos de aplicaciones en 2017- reveló una estadística alarmante: solo el 30% de las aplicaciones pasaron la política OWASP Top 10. Este ha sido un tema constante en los últimos cinco años, con inyecciones SQL que aparecen en casi 1 de cada 3 aplicaciones recién escaneadas. Esto evidencia un problema endémico; no estamos aprendiendo de nuestros errores, y los CISOs parecen enfrentarse a una ardua batalla para poder conseguir suficiente talento en seguridad. Normalmente, la proporción de especialistas en seguridad de aplicaciones con respecto a los desarrolladores es de 1:100.

¿Por qué la seguridad de los programas informáticos está en peligro de extinción?

No es ningún secreto que el talento especializado en seguridad es escaso, pero también debemos prestar atención al hecho de que los desarrolladores no están solucionando los problemas a medida que surgen, y están claramente mal equipados para no introducir vulnerabilidades en primer lugar. En el mismo informe de Veracode, se divulgó que había mitigaciones documentadas para sólo el 14,4% de todas las vulnerabilidades de desarrollo. En otras palabras, la mayoría de las vulnerabilidades se presentaron sin mitigación de desarrollo. Menos de un tercio de las vulnerabilidades se cerraron en los primeros 90 días, y el 42% de las vulnerabilidades nunca se cerraron dentro del periodo de desarrollo.

Hablo todo el tiempo con profesionales de la seguridad, CISOs y CEOs, y anecdóticamente, me he dado cuenta de que muchas empresas se frustran tanto con el número de vulnerabilidades encontradas que no pueden ser mitigadas (además de la plaga conocida como falsos positivos), que dejan de escanear en busca de ellas por completo, cruzando los dedos y esperando lo mejor.

¿Por qué los profesionales de la seguridad de las aplicaciones dejan que esto ocurra?

No se equivoque: La gente de AppSec es dolorosamente consciente de los problemas en el código. Después de todo, esa es una de sus principales habilidades que los convierte en un recurso de equipo tan valioso. Sin embargo, a menudo se ven obstaculizados por varios factores.

Por ejemplo, un director de AppSec encontrará un problema y preguntará al desarrollador: "¿puedes arreglar el código?". La respuesta a esta importante pregunta difiere de una organización a otra, pero en general, el desarrollador está tan apretado cumpliendo estrictos sprints de entrega de características que simplemente no tiene tiempo para arreglar estos problemas, ni herramientas decentes para ayudarles. Los propios profesionales de la seguridad de las aplicaciones pueden ser capaces de identificar las vulnerabilidades, pero a menudo no tienen las habilidades y/o el acceso para remediarlas en el acto.

También debemos darnos cuenta de que para cada problema hay que encontrar una solución, aplicarla y probarla. Para el más mínimo problema que se encuentre en el código, el tiempo que puede llevar arreglarlo, por no hablar de los recursos necesarios, es inmenso. Hay más de 700 vulnerabilidades que pueden introducirse en el software, y es sencillamente imposible que una sola persona pueda defenderse de todas ellas. Por esta razón, la mayoría de las empresas se limitan a seguir el Top 10 de OWASP. Mientras tanto, los desarrolladores siguen construyendo características y, a su vez, siguen introduciendo vulnerabilidades en el código que escriben.

¿Cuál es la solución?

El hecho es que no damos a nuestros desarrolladores las herramientas y la formación necesarias para fomentar el éxito de la codificación segura. No hay normas que obliguen a las organizaciones a garantizar que los desarrolladores posean las habilidades de seguridad adecuadas, y es una triste realidad que la mayoría de las universidades y las prácticas no preparan a los desarrolladores junior para codificar de forma segura, tampoco.

Cuando alguien quiere pilotar un avión, hay un proceso muy riguroso que garantiza la formación, la experiencia práctica, los controles médicos, los conocimientos de seguridad y los exámenes antes de poder volar. Nadie se atrevería a imaginar que se le dejaría suelto en el cielo sin esta amplia preparación y validación de habilidades, y sin embargo esto es lo que ocurre en el día a día con la escritura de código.  

Tenemos que dedicar tiempo a educar a los desarrolladores en la escritura de código seguro. Sin embargo, en el mundo actual, en el que el desarrollo de software es rápido y los buenos desarrolladores y profesionales de la seguridad escasean, nunca parece ser una prioridad. Es hora de cambiar la conversación.

Un reciente titular del Foro Económico Mundial gritaba: "No puede haber economía digital sin seguridad", y el contenido que lo acompañaba argumentaba la necesidad de que la seguridad sea una parte fundamental de cualquier estrategia de transformación digital. "La seguridad es lo que protege a las empresas, permitiéndoles innovar y crear nuevos productos y servicios. Más allá de un papel defensivo, la seguridad proporciona a las empresas una ventaja estratégica de crecimiento."

Mejorar las habilidades y los resultados de la codificación segura añadirá una poderosa capa de ciberprotección para las organizaciones, ayudándolas a crear un código mejor y más rápido. Los desarrolladores no necesitan convertirse en expertos en seguridad, pero hay que capacitarlos de forma positiva y práctica para que sean la primera línea de defensa contra los ciberataques. Los desarrolladores pueden ser los próximos héroes de la seguridad y la innovación. Son personas muy inteligentes, resuelven problemas de forma creativa y, por lo general, están dispuestos a desarrollar sus habilidades. Aproveche sus puntos fuertes con la formación especializada que se merecen y comprométase con un mayor nivel de seguridad del software. Lea nuestro libro blanco para saber más.

Cuando alguien quiere pilotar un avión, hay un proceso muy riguroso que garantiza la formación, la experiencia práctica, los controles médicos, los conocimientos de seguridad y los exámenes antes de poder volar. Nadie se atrevería a imaginar que se le dejaría suelto en el cielo sin esta amplia preparación y validación de habilidades, y sin embargo esto es lo que ocurre en el día a día con la escritura de código.
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

Por qué las inyecciones SQL son las cucarachas del mundo de la AppSec (y cómo los CISOs pueden erradicarlas de una vez por todas)

Publicado el 26 de septiembre de 2018
Por el doctor Matias Madou

Es bien conocida la teoría de que las cucarachas pueden sobrevivir a todo, incluso a una explosión nuclear. Aunque esa teoría sólo es cierta hasta cierto punto, su sencilla composición corporal las hace extremadamente resistentes para su tamaño y difíciles de erradicar en la mayoría de las condiciones.

He estado pensando... si las cucarachas tuvieran un equivalente en el mundo digital, tendrían que ser las vulnerabilidades de inyección SQL (SQLi) en el código. Se trata de una vulnerabilidad conocida desde hace más de veinte años y, sin embargo, las organizaciones son víctimas de ellas una y otra vez. El extenso y costoso ataque a Target fue el resultado de la inyección SQL, al igual que un caso de piratería electoral en Illinois en el que se expusieron 200.000 registros de votantes, lo que llevó al FBI a recomendar a todos los administradores de TI que trabajaran rápidamente para reforzar sus prácticas de seguridad.

El Informe de la Iniciativa de Inteligencia de Hackers de Imperva reveló que entre 2005 y 2011, los ataques SQLi se utilizaron en el 83% de todas las violaciones de datos reportadas. Hoy en día, las vulnerabilidades de inyección siguen siendo la amenaza número uno en el Top 10 de OWASP. Son relativamente sencillas, pero no mueren.

Parece ridículo que esta misma vulnerabilidad siga apareciendo en un número importante de análisis de seguridad de aplicaciones. Sabemos cómo funciona y sabemos cómo detenerla. ¿Cómo es posible? La verdad es que la seguridad de nuestro software tiene un amplio margen de mejora.

El informe de Veracode sobre el estado de la seguridad del software -basado en 400.000 escaneos de aplicaciones en 2017- reveló una estadística alarmante: solo el 30% de las aplicaciones pasaron la política OWASP Top 10. Este ha sido un tema constante en los últimos cinco años, con inyecciones SQL que aparecen en casi 1 de cada 3 aplicaciones recién escaneadas. Esto evidencia un problema endémico; no estamos aprendiendo de nuestros errores, y los CISOs parecen enfrentarse a una ardua batalla para poder conseguir suficiente talento en seguridad. Normalmente, la proporción de especialistas en seguridad de aplicaciones con respecto a los desarrolladores es de 1:100.

¿Por qué la seguridad de los programas informáticos está en peligro de extinción?

No es ningún secreto que el talento especializado en seguridad es escaso, pero también debemos prestar atención al hecho de que los desarrolladores no están solucionando los problemas a medida que surgen, y están claramente mal equipados para no introducir vulnerabilidades en primer lugar. En el mismo informe de Veracode, se divulgó que había mitigaciones documentadas para sólo el 14,4% de todas las vulnerabilidades de desarrollo. En otras palabras, la mayoría de las vulnerabilidades se presentaron sin mitigación de desarrollo. Menos de un tercio de las vulnerabilidades se cerraron en los primeros 90 días, y el 42% de las vulnerabilidades nunca se cerraron dentro del periodo de desarrollo.

Hablo todo el tiempo con profesionales de la seguridad, CISOs y CEOs, y anecdóticamente, me he dado cuenta de que muchas empresas se frustran tanto con el número de vulnerabilidades encontradas que no pueden ser mitigadas (además de la plaga conocida como falsos positivos), que dejan de escanear en busca de ellas por completo, cruzando los dedos y esperando lo mejor.

¿Por qué los profesionales de la seguridad de las aplicaciones dejan que esto ocurra?

No se equivoque: La gente de AppSec es dolorosamente consciente de los problemas en el código. Después de todo, esa es una de sus principales habilidades que los convierte en un recurso de equipo tan valioso. Sin embargo, a menudo se ven obstaculizados por varios factores.

Por ejemplo, un director de AppSec encontrará un problema y preguntará al desarrollador: "¿puedes arreglar el código?". La respuesta a esta importante pregunta difiere de una organización a otra, pero en general, el desarrollador está tan apretado cumpliendo estrictos sprints de entrega de características que simplemente no tiene tiempo para arreglar estos problemas, ni herramientas decentes para ayudarles. Los propios profesionales de la seguridad de las aplicaciones pueden ser capaces de identificar las vulnerabilidades, pero a menudo no tienen las habilidades y/o el acceso para remediarlas en el acto.

También debemos darnos cuenta de que para cada problema hay que encontrar una solución, aplicarla y probarla. Para el más mínimo problema que se encuentre en el código, el tiempo que puede llevar arreglarlo, por no hablar de los recursos necesarios, es inmenso. Hay más de 700 vulnerabilidades que pueden introducirse en el software, y es sencillamente imposible que una sola persona pueda defenderse de todas ellas. Por esta razón, la mayoría de las empresas se limitan a seguir el Top 10 de OWASP. Mientras tanto, los desarrolladores siguen construyendo características y, a su vez, siguen introduciendo vulnerabilidades en el código que escriben.

¿Cuál es la solución?

El hecho es que no damos a nuestros desarrolladores las herramientas y la formación necesarias para fomentar el éxito de la codificación segura. No hay normas que obliguen a las organizaciones a garantizar que los desarrolladores posean las habilidades de seguridad adecuadas, y es una triste realidad que la mayoría de las universidades y las prácticas no preparan a los desarrolladores junior para codificar de forma segura, tampoco.

Cuando alguien quiere pilotar un avión, hay un proceso muy riguroso que garantiza la formación, la experiencia práctica, los controles médicos, los conocimientos de seguridad y los exámenes antes de poder volar. Nadie se atrevería a imaginar que se le dejaría suelto en el cielo sin esta amplia preparación y validación de habilidades, y sin embargo esto es lo que ocurre en el día a día con la escritura de código.  

Tenemos que dedicar tiempo a educar a los desarrolladores en la escritura de código seguro. Sin embargo, en el mundo actual, en el que el desarrollo de software es rápido y los buenos desarrolladores y profesionales de la seguridad escasean, nunca parece ser una prioridad. Es hora de cambiar la conversación.

Un reciente titular del Foro Económico Mundial gritaba: "No puede haber economía digital sin seguridad", y el contenido que lo acompañaba argumentaba la necesidad de que la seguridad sea una parte fundamental de cualquier estrategia de transformación digital. "La seguridad es lo que protege a las empresas, permitiéndoles innovar y crear nuevos productos y servicios. Más allá de un papel defensivo, la seguridad proporciona a las empresas una ventaja estratégica de crecimiento."

Mejorar las habilidades y los resultados de la codificación segura añadirá una poderosa capa de ciberprotección para las organizaciones, ayudándolas a crear un código mejor y más rápido. Los desarrolladores no necesitan convertirse en expertos en seguridad, pero hay que capacitarlos de forma positiva y práctica para que sean la primera línea de defensa contra los ciberataques. Los desarrolladores pueden ser los próximos héroes de la seguridad y la innovación. Son personas muy inteligentes, resuelven problemas de forma creativa y, por lo general, están dispuestos a desarrollar sus habilidades. Aproveche sus puntos fuertes con la formación especializada que se merecen y comprométase con un mayor nivel de seguridad del software. Lea nuestro libro blanco para saber más.

Cuando alguien quiere pilotar un avión, hay un proceso muy riguroso que garantiza la formación, la experiencia práctica, los controles médicos, los conocimientos de seguridad y los exámenes antes de poder volar. Nadie se atrevería a imaginar que se le dejaría suelto en el cielo sin esta amplia preparación y validación de habilidades, y sin embargo esto es lo que ocurre en el día a día con la escritura de código.

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.

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