Beneficios de una Auditoria de Código
Una auditoria informática es una parte central e importante de la seguridad, ya sea una aplicación comprada o una aplicación hecha en casa la información contenida es el verdadero valor de la aplicación.
Una aplicación contiene errores debido a que el programador no fue enseñado con seguridad en mente, en realidad no habla nada de su experiencia sino que es un campo nuevo y que se lleva rapidamente en la expansión de técnicas y formas de explotación.
Libros y clases estan llenas a veces de errores, reuso de código asi como toma de ejemplos y políticas de programación puede afectar hasta el punto de crear una aplicación vulnerable, estas vulnerabilidades pueden ir desde suplantación de identidades, robo de contraseñas, toma de control de la aplicación, toma de control del servidor, etc.
Estas aplicaciones se ejecutan en servidores que contienen información como correos, planes de ventas, mercadotecnia, asuntos personales de altos ejecutivos, etc. Los cuales conllevan un riesgo y un valor añadido a la red.
Un Penetration Testing, también llamado hackeo ético, es un ataque controlado por consultores que conocen técnicas hackers o hackers de sombrero blanco (Whitehats) que descubren y explotan fallos de seguridad dentro de la red y los reportan, reduciendo el riesgo de la red asi como de los aplicativos e información dentro de la misma.
¿Inversión o Gasto?
En mi experiencia he tenido que contestar la siguiente pregunta mas de una vez:
¿Porque si mi aplicación costó X el costo de auditarla es Y? (Donde X < Y)
Creo que la respuesta mas obvia es:
-. El valor real de la aplicación puede ser definida por la siguiente ecuación de riesgo:
COSTO APLICACION
+ COSTO INFORMACION
+ COSTO DOWNTIME
- AMORTIZACION COSTO APLICACION
+ MANTENIMIENTO
___________________________________
= COSTO TOTAL DE APLICACION
Como se puede ver en la ecuación anterior el costo de la aplicación es solo la inversión inicial, intangibles como COSTO INFORMACION y COSTO DOWNTIME deben ser generados en un analisis de riesgo informático ya que son los costos generalmente mas grandes debido a que el COSTO DOWNTIME es:
COSTO OPERACION
+ PERDIDAS MERCADOTECNIA (MARCA, ETC)
+ VENTAS PERDIDAS (En caso de ventas por Internet o sistemas criticos abajo)
____________________________________
= COSTO DOWNTIME
La importancia de una auditoría de código radica en la reducción de los factores de riesgo haciendo que la probabilidad de ocurrencia baje a lo minimo. Esto nos da un ejemplo de riesgo:
Una aplicación de 50,000 MXN maneja 3,000,000 MXN el costo de downtime es de 50,000 por hora y el mantenimiento es de 5,500 MXN al mes.
Si la aplicación tiene un riesgo del 75% de ser atacada y perder los datos, ser modificados o comprometer el servidor, el riesgo real que debe de reportarse es de:
(50,000 + 3,000,000 + (50,000 * 3) + 5,500) * 75% = 2,404,125 MXN
Este riesgo tiene una probabilidad de generarse en un 100% en un tiempo cercano (debido a la interacción de la variable del 75% esta ya prorrateado al tiempo de 1 año)
Este tipo de riesgo es simplemente inaceptable en la mayoria de las compañias, al auditar la aplicación se encuentran los fallos, se arreglan y por lo tanto la probabilidad de ser atacada y perder datos, modificarlos o comprometer el servidro baja, por ejemplo un 25% del ejemplo anterior seria:
(50,000 + 3,000,000 + (50,000 * 3) + 5,500) * 75% = 801,375 MXN
Lo cual es una reducción de riesgo considerable, tomando en cuenta que la auditoria costara 1,000,000 MXN aun asi habria un ahorro de aproximadamente 600,000 MXN neto dentro del primer año.
Esto es importante debido a que la mayoria de las compañias estan tomando la opcion del “open source” como una opcion barata, pero descuidan el recordar que no es gratis su mantenimiento y que el riesgo sigue estando vigente y que debe mantenerse de manera administrativamente responsible para la empresa.
El que sea una aplicación desarrollada en un lenguaje libre o con licencia libre (dicese GPL, BSD, etc) no lleva a que sea gratis su mantenimiento ni que el riesgo que lleva sea pequeño. Por lo tanto se debe tener una gran calidad de trabajo o asegurarse de las credenciales de quien hace el trabajo.
Es buena practica el pedir un demo de lo mismo o requerir una maqueta en caso de tener un desarrollo desde el diseño o la implementación de algun esquema medianamente complejo a muy complejo.
Probando