auditoria-de-codigo

Auditoría de código: algo necesario pero que nunca hacemos (parte 1)

A lo largo de varias publicaciones, vamos a adentrarnos en el mundo de la auditoría de código para ver lo importante que es tener cierto control de lo que se hace para poder construir nuestro software de la forma más segura posible.

Una pequeña (bueno, no tanto) introducción

En el mundo de la seguridad de la información, como en todo, hay ciertos elementos más importantes que otros y que impactan de lleno sobre la posibilidad o no de que algo ocurra.

El usuario es un actor principal dentro de este mundo. Lo que yo llamo la “constante de inutilidad” (capacidad para cometer errores con los que decir “joer, qué inútil soy!”) de las personas es un factor vital para la seguridad global de un sistema, ya que si ponemos cientos de medidas pero el usuario publica la contraseña maestra en Facebook, estamos perdidos…

Todos tenemos un torpe en nuestro interior que nos empuja a cometer fallos, a despistarnos, a relajarnos y a dejar pasar cosas de forma inconsciente y (más a menudo de lo esperado) totalmente consciente.

Esto mismo se puede llevar al mundo del desarrollo de software. Cada vez que nos ponemos el mono de desarrolladores y comenzamos a picar código, podemos cometer una serie de errores o seguir patrones “desaconsejables” que pueden hacer que nuestro resultado sea totalmente vulnerable.

La evolución del código fuente

A lo largo de las últimas décadas, el desarrollo de software ha crecido exponencialmente. El uso de nuevas tecnologías en un mundo cada vez más conectado ha creado una gran dependencia de software que gestione y coordine todo.

Cuando comencé en esto de la informática, me dedicaba a escribir en BASIC programas de decenas de líneas, incluso me atrevía a hacer cosas con cientos de líneas que luego grababa en cinta.

Hoy en día, cualquier desarrollo sencillo se nos va a los miles y crece de forma increíble si hablamos de grandes funcionalidades. Mira, por ejemplo, cómo van creciendo las cifras conforme hablamos de software (loc = lines of code):

100.000 loc

Photoshop 1.0

2.500.000 loc

Windows 3.1

9.500.000 loc

Firefox 38

40.000.000 loc

Windows 7

61.000.000 loc

Facebook

 

¿Y esto en qué nos afecta?

Lógicamente, cuanto mayor es algo que hacemos, más probabilidad de fallo hay en su interior. Este tipo de soluciones software se desarrollan por grandes equipos de personas que cuentan con peculiaridades, manías y constantes de inutilidad diferentes.

En este escenario aparecen siempre fallos, problemas, descuidos que harán que ese software sea vulnerable, poniendo en peligro a la organización, empresa o usuario que lo utiliza.

Ahorra mientras solucionas

Generalmente se suele ver “desde arriba” que los procesos de auditoría de código son una pérdida de tiempo y que si surge un fallo, ya se arreglará. La verdad es más cruda, arreglar fallos se vuelve más y más caro cuanto más avanza el desarrollo.

Solucionar, mitigar o eliminar posibilidades de fallo es sencillo y barato en el momento del diseño. Hacerlo cuando hay varios millones de líneas y cientos de usuarios haciendo uso del software se puede volver inmensamente complejo y costoso.

Entonces la pregunta que surge es directa, ¿cuándo se debe hacer una auditoría de código? El momento óptimo ocurre cuando estamos alrededor del 70% del desarrollo de cada versión funcional y sobre un proyecto que podamos compilar.

¡Pero mucho ojo!, hay que buscar equilibrio entre el desarrollo y el auditor, el objetivo es mejorar, no entorpecer.

¿Manos a la obra?

En esta entrada sólo queríamos hacer una introducción al proceso de auditoría de código para ir avanzando en las siguientes entradas. Si te parece interesante lo que hemos empezado a contar, no dudes en pasarte por aquí para entrar en detalle.

¡Te esperamos!

Cristóbal Espinosa

Information Security Officer en Dive.

Ingeniero en Informática, Máster en Seguridad de la Información y CISA (con eCPTP e ISO 27.001 Lead Auditor en proceso).

He sido galardonado con el premio Microsoft Imagine Cup 2.007 en la categoría Software Design y como Microsoft Active Professional en 2.010. También con el diploma honorífico de la Universidad de Granada y el X premio Granada Joven.

Siempre con ganas de emprender, de inventar y de arrancar proyectos, sobre todo si es con amigos como la web que estás visitando.

Quiero contar lo que hago en el trabajo, lo que aprendo de los compañeros y cualquier cosa que te pueda ayudar a solucionar ese problema, a mejorar un proceso o a interesarte por la seguridad.

Si quieres saber más o contactar, puedes ver mi perfil en LinkedIn.

Latest posts by Cristóbal Espinosa (see all)