[Español] En mi trabajo paso la mayor parte del tiempo auditando código y he pensado que sería interesante para el lector contar un poco nuestro proceso y de paso ver cómo lo hacen los demás.
[English] I spend most of the time at work auditing code and I thought it would be interesting for the reader to explain our process and see how others do it.
Como no podía ser de otra manera seguimos el SDL de Microsoft 🙂 y todos los desarrollos internos tienen que pasar una serie de controles de seguridad. Para este artículo nos enfocaremos en la auditoría de código únicamente.
Nuestro proceso es muy fácil de seguir para los grupos de desarrollo, ya que tenemos que tener en cuenta que la gente de seguridad está para ayudar y no complicar las cosas.
En la Fig. 1 podemos ver una versión aproximada del proceso que seguimos, que creo que es muy fácil de entender por lo que no entraré a detallar.
As it could not be otherwise we follow Microsoft SDL 🙂 and all internal developments must pass a series of security checks (security gates). For this article we will focus on code review only.
Our process is very easy to follow for development groups, we must bear in mind that the security teams are here to help and not to complicate things.
In Fig. 1 we can see an approximate version of the process we follow which I think is very easy to understand so I will not explain the detail.
Fig. 1 – Proceso Auditoría de Código / Code Review Process
Una parte importante del SDL son las constantes mejoras a los procesos, herramientas y formación como se puede ver en el punto 14. Esto es fundamental para mantener un buen nivel de seguridad con las últimas tecnologías.
Siguiendo este proceso hace tiempo que desarrollé una pequeña herramienta (lo siento pero no disponible por el momento) para ser más efectivo en auditorías de código llamada WildFire, que incorpora la mayoría de las etapas del proceso anterior.
An important part of the SDL is the continuous improvements to processes, tools and training as you can see in point 14. This is essential to maintain a good level of security with the latest technologies.
Following this process some time ago I developed a small tool (sorry but not available at the moment) to be more effective in code reviews called WildFire which incorporates most of the stages of the previous process.
Lo interesante de WildFire son algunas características como:
- Analiza todo el código para obtener líneas de código y comentarios para ayudarnos en la estimación de tiempo, identifica vulnerabilidades (análisis estático básico), clasifica los ficheros en función de tipo, etc.
- Genera un informe con los hashes de todo el código para enviar al cliente
- Simple UI
- Generación de informes
- Utiliza un modelo de caja negra en el sentido que no intenta entender o compilar el código y puede analizar distintos lenguajes de programación
The interesting thing about WildFire are some features like:
- Analyses code to get lines of code and comments to help us in the estimation of time, identifies vulnerabilities (basic static analysis), classifies files based on type, etc.
- Generates a report with the hashes of all the code to send to the client
- Simple UI
- Report generation
- Uses a black box approach in the sense that it does not try to understand or compile the code and can analyze various programming languages
WildFire es una herramienta bastante efectiva para mis necesidades aunque no es la única que utilizo, como por ejemplo Visual Studio, que es otra potente herramienta para realizar auditorías de código.
Desde la Fig. 2 hasta la Fig. 5 podemos ver WildFire en acción.
WildFire is a pretty effective tool for my needs although it is not the only one that I use as for instance Visual Studio, which is another powerful tool to perform code reviews.
From Fig. 2 to Fig. 5 we can see WildFire in action.
Fig. 2 – Pantalla de Inicio / Home Screen
Fig. 3 – Análisis Completado / Analysis Completed
Fig. 4 – Sumario del análisis / Analysis Summary
Fig. 5 – Visualización de código / Code Visualization
Una parte importante es la estimación de tiempo que nosotros realizamos mediante dos pasos, primero un formulario que recoge información del proyecto a revisar y segundo tras obtener el código utilizamos una tool diseñada para este fin, ya sea WildFire u otras que también disponemos. En OWASP podemos encontrar información sobre métricas en código.
Sin duda contar con un proceso bien detallado y las herramientas adecuadas es fundamental para una auditoria de código aunque no es suficiente, también debemos contar con las personas adecuadas (talento y formación).
Y vosotros como realizáis auditorias de código?
An important part is the estimation of time which we carry out by a two-step process, first a form that collects information from the project to review and second after obtaining the code use a tool designed for this purpose either WildFire or other tools that we also have available. In OWASP we can find information about code metrics.
Without a doubt having a good detailed process and the right tools is essential for a code review although it is not enough, we must also have the right people (talent and training).
How do you perform code reviews?
— Simon Roses Femerling