SAST, revisión de código seguro, desarrollo seguro, buenas practicas
Auditoría de código,  Ciberseguridad,  Desarrollo seguro

Habilidades requeridas / deseadas para llevar a cabo una auditoría de código (SAST)

A continuación se exponen las habilidades a fortalecer, deseadas en el analista o auditor a la hora de realizar una auditoría de código. Para llevar a cabo una static application security testing (SAST), es decir, una revisión de código desde el punto de vista de la seguridad.

Es común preguntarse ¿Qué se requiere para ofrecer un servicio de desarrollo seguro?, para proyectos de desarrollo de software, al ser una especialización muy concreta de la ciberseguridad. Este es un resumen general de los puntos más importantes que te serán requeridos en el desarrollo de esta tarea:

¿Qué es el desarrollo seguro?


Pasos de una static application security testing (SAST), desarrollo seguro, AuditoriaDeCodigo.com
Pasos de una static application security testing (SAST), desarrollo seguro, AuditoriaDeCodigo.com

Habilidad para pensar desde el punto de vista de un atacante

Un profesional de ciberseguridad, se centra en trabajar desde el punto de vista del ataque y defensa de sistemas informáticos. Es un punto de vista / estado mental diferente del de la arquitectura y desarrollo de software, control de calidad, dirección de proyecto, etc… Dentro del mundo de la ciberseguridad, se usan otras herramientas, forma de trabajar, se emula el mundo del cibercrimen con ataques en entornos controlados para tal fin, etc… No se trata de un uso habitual, respetuoso o predecible del sistema.

desarrollo seguro, revisión de código, SAST habilidades 1

Es por esta razón que se desea que el analista tenga una experiencia especifica y suficiente ofreciendo servicio profesional en el mundo de la ciberseguridad. Un desarrollador por ejemplo, tendrá muchos puntos ganados para realizar el trabajo de forma eficiente, sin embargo deberá reforzar conocimientos de esta especialización.

Experiencia / conocimiento del lenguaje de programación y entorno tecnológico bajo revisión

Leer y entender el código fuente de un componente software, y entender las implicaciones e interrelaciones de este con el resto del sistema y la arquitectura, será una tarea habitual del día a día de esta dedicación. La experiencia participando en proyectos de desarrollo de software, como desarrollador, arquitecto, tester, etc… Aportarán una parte importante de las habilidades deseadas. Si esta experiencia ha sido llevada a cabo en el mismo entorno tecnológico / lenguaje de programación, objetivo de la auditoría de código mucho mejor.

desarrollo seguro, revisión de código, SAST habilidades 1

Es por esta razón que se desea que el analista tenga una experiencia especifica y suficiente ofreciendo servicio profesional en el mundo del desarrollo de software. Un analista de ciberseguridad por ejemplo, tendrá muchos puntos ganados para realizar el trabajo de forma eficiente, sin embargo deberá reforzar conocimientos de esta especialización.

Conocimiento de los estándares y buenas prácticas de desarrollo seguro

La referencia y guía en la tarea serán los excelentes estándares ya existentes en ciberseguridad, es innecesario e improductivo reinventar la rueda. Open Web Application Security Project (OWASP) es el estándar y referencia internacional en lo que a desarrollo seguro y auditorías de código se refiere, como así también el MITRE y recursos tan interesantes como el Common Weakness Enumeration (CWE). Conocimientos del marco de referencia de estos proyectos y la guía de trabajo que ofrecen, es indispensable para llevar a cabo el trabajo con organización y acierto. Además de recursos básicos, muy específicos de desarrollo seguro como los siguientes:

  • OWASP Code Review Guide
  • OWASP Application Security Verification Standard Project – ASVS
  • Mitre Common Weakness Enumeration – CWE

Es necesario enmarcar estos dentro de un marco legal y normativo, dentro de un Sistema de Gestión de Seguridad de la Información (SGSI), siguiendo normas estándares como es el Esquema Nacional de Seguridad (ENS), para el caso de España, y la ISO 27001, Organización Internacional de Estandarización.

desarrollo seguro, revisión de código, SAST habilidades SQL-injection-attack-example

¿Qué es una auditoría de código?

Habilidad para detectar rápidamente malas practicas e inseguridad, tanto en el código como en la arquitectura

Esto nos lo brinda la propia experiencia descubriendo, confirmando y categorizando vulnerabilidades, en el código, configuración y arquitectura. Además de las vulnerabilidades, el hecho de proponer los cambios que corrijan y mitiguen estas, le van aportando al analista conocimientos sobre las buenas y malas practicas existentes. Estas buenas o malas practicas son comunes a un entorno tecnológico, y aunque bajo diferente apariencia, son comunes a cualquier proyecto de desarrollo de software.

Para conocer las buenas practicas es bueno consultar las recomendaciones oficiales de cada proveedor de los servicios y el entorno tecnológico, de forma especifica para los activos que queremos proteger. Como por ejemplo los repositorios de código oficiales, documentación y ejemplos de arquitectura de proyectos siguiendo buenas prácticas, blog de recomendaciones de seguridad, noticias de su centro de seguridad, Computer Emergency Response Team (CERT), etc… A continuación un ejemplo para el entorno tecnológico de Microsoft:

desarrollo seguro, revisión de código, SAST habilidades 1

Asimismo también de forma general consultar las fuentes de información de organizaciones de ciberseguridad y organismos gubernamentales, conociendo y estando al día en cuanto a las vulnerabilidades y los incidentes de seguridad más comunes, herramientas de detección y exploits que se aprovechan de ellas etc…

Buenas dotes de análisis

Las tareas relacionadas con una revisión de seguridad del código (SAST), y en general con un servicio de desarrollo seguro, tienen una gran parte de trabajo relacionado con el análisis. Es bueno en general disponer de unas buenas dotes y facilidad para el análisis, que podría resumirse como capacidad de examen en detalle de un sistema o componente software para conocer sus características o cualidades, la separación de sus partes y la extracción de unas conclusiones. Ejemplo de habilidades requeridas en la practica serían lectura e interpretación de documentación y código, organización mediante diagramas / mapas mentales, diferenciación e indexación de grandes cantidades de datos, actitud resolutiva, comunicación y obtención de información mediante entrevistas, creatividad y pensamiento lateral, pensamiento critico, etc…

desarrollo seguro, revisión de código, SAST habilidades 1

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

error: