vulnerabilidades codigo en aplicacion Ciberseguridad

Código Seguro: Cómo eliminar vulnerabilidades en el código

16/10/19 5 min. de lectura

Después de llevar unos meses hablando sobre ciberseguridad, espero que se haya ido despertando en ti el interés y sobre todo que te hayas ido concienciando de la importancia de cuidar la seguridad online hoy en día.

Por si te los has perdido, aquí tienes un resumen de otros posts sobre ciberseguridad que te pueden interesar:

👉 Cómo funciona un ciberataque y qué hacer para evitarlo

👉 Collection#1, o la filtración de datos más grande de la historia

👉 Shodan, evita que tu webcam sea hackeada

👉 5 recomendaciones para acabar el verano como experto en ciberseguridad

Pues bien, ahora me gustaría que sepas como analizar y eliminar vulnerabilidades de tu aplicación desarrollada en Java (Java 11 o cualquiera de sus anteriores versiones).

Vale, ¿por dónde empiezo?

Entiendo que sabes lo que significa vulnerabilidad, pero te lo refresco: es cualquier punto débil de tu sistema informático por el que podrían atacarte. Hace un tiempo alguien se aprovechó de una vulnerabilidad para filtrar información como ocurrió con Collection#1, el post que te mencionaba más arriba.

¿Qué motivos pueden provocar una vulnerabilidad?

Una vulnerabilidad puede ocurrir por varios motivos. Principalmente son dos:

En ambos casos se pueden provocar por no haber tenido en cuenta un diseño seguro de tu aplicación, como por ejemplo validar los datos de entrada de tu aplicación para no permitir inyecciones de código mediante la técnica de XSS (Cross site scripting).

Ahora te voy a enseñar cómo localizar si alguno de estos motivos te provoca vulnerabilidades y cómo solucionarlas.

Error en la codificación de la aplicación: ¿Cómo saber si tienes vulnerabilidades en el código?

Para este tipo de vulnerabilidad: error en la codificación de tu propia aplicación; existen herramientas SAST (Análisis estático de código) que generan un reporte informándote de las principales vulnerabilidades del código. En el mercado suelen ofrecerse soluciones de pago para dichos análisis como son:

Kiuwan

Fortify

Checkmarx

Kiuwan y Checkmarx se integran con el IDE de desarrollo Eclipse o incluso Kiuwan con Pycharm si eres developer de Python. Lo bueno es que en una de las vistas (en el caso de Eclipse) te muestran qué clase y línea de código tiene la vulnerabilidad, indicando de qué tipo es y cómo solucionarla.

Fortify admite dos modos de funcionamiento: On Demand y On Premise. En el primer caso las fuentes de tu aplicación se envían a analizar y te devuelven un reporte informándote de donde tienes tus vulnerabilidades.

Ejemplo: Cómo solucionar vulnerabilidades en una aplicación Java

Centrándonos en nuestra aplicación Java, con el IDE Eclipse y con el ejemplo de Kiuwan y Checkmarx tenemos la posibilidad de integrar las herramientas en el propio IDE, lo que facilita que mientras estamos desarrollando nuestras clases e interfaces Java podemos pasar los controles SAST.

Kiuwan nos muestra en la vista “Problemas” la información de las vulnerabilidades que tengamos. Además, haciendo doble clic en cada problema reportado nos dará una guía para solucionarlo. Al dar clic, abre el editor de la clase Java y muestra en que línea de código tenemos la vulnerabilidad. Incorpora una ayuda sobre cada tipo de vulnerabilidad con un ejemplo de código donde indica el motivo por el cual existe esa vulnerabilidad y otro ejemplo de cómo modificar el código para no tener dicha vulnerabilidad.

run kiuwan analysis code vulnerabilities
Fuente: Kiuwan

En Checkmarx nos muestra un par de vistas propias donde ocurre igual que con Kiuwan, haciendo clic en la vulnerabilidad seleccionada nos muestra información sobre la misma en la línea de código que la provoca.

En este video puedes ver cómo instalar el plugin de Checkmarx para Eclipse, cómo escanear el código y revisar los resultados para identificar vulnerabilidades de seguridad en el código fuente:

Error en librerías de terceros: ¿Cómo saber si hay vulnerabilidades en mis dependencias?

En el caso de reutilizar librerías de terceros para optimizar el tiempo de desarrollo es posible que te encuentres con más vulnerabilidades. No te preocupes porque la gente de OWASP tienen una aplicación por línea de comando o que se puede integrar en Maven que permite hacer análisis de librerías Java o .NET generando un reporte con todas las vulnerabilidades conocidas por el momento: OWASP Dependency check.

OWASP dependency check

En nuestro proyecto Maven Java es tan sencillo como añadir el plugin de OWASP dependency check de la siguiente forma en nuestro pom.xml:

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>3.0.2</version>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Ejecutando con el goal check sobre tu proyecto podrás obtener un reporte en formato html con el listado de vulnerabilidades de tus dependencias:

Fuente: GitHub
joan rodriguez

Joan Rodríguez

Santander Global Tech

Soy Ingeniero superior informático y he tenido la gran oportunidad de trabajar en todos los perfiles de desarrollo Waterfall o Agile: Desarrollador, Arquitecto SW, Evangelista del SW, Scrum master, Jefe de proyecto, Team leader, QA tester y Product owner. Me considero una persona inquieta, resiliente, friki y sobre todo muy volcado con mi familia. Ahora estoy haciendo desarrollos de ciberseguridad para el Grupo Santander.

 

Otros posts