auditoria-de-codigo

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

Ha pasado un poco de tiempo desde que empezamos con esta serie de entradas dedicadas a la auditoría de código, pero vamos de nuevo con el último post de la serie.

En la primera parte, hicimos una introducción a la tarea y vimos cómo se trata de algo que cada vez cobra más importancia. En la segunda parte planteamos los primeros pasos, así como la forma en la que organizar el equipo y poder repartir tareas. ¿Seguimos?

Separa “lo blanco” de “lo de color”

Cuando nos pongamos manos a la obra, debemos tener en cuenta que casi siempre podremos hacer auditoría estática (leyendo código) y dinámica (ejecuciones en entorno de prueba). Ser capaz de separar qué parte corresponde a cada caso será vital para acortar tiempos y obtener un resultado positivo.

Para poder hacerlo, nos basaremos en la documentación obtenida en la fase anterior y en una clara enumeración de tecnologías y sistemas. Teniendo toda la información sobre la mesa, podremos otorgar pesos de forma que:

Código candidato a auditoría estática:

  • Partes desarrolladas hace mucho tiempo.
  • Partes generadas de forma automática (sobre plataforma “insegura”).
  • Algoritmos “a medida” y complejos.
  • Partes sin documentar.
  • Zonas de acceso anónimo.
  • Valores y configuración por defecto.
  • Desarrollo en ensamblador.

Código candidato a auditoría dinámica:

  • Partes desarrolladas hace poco tiempo.
  • Partes generadas de forma automática (sobre plataforma “segura”).
  • Algoritmos conocidos o sencillos
  • Partes bien documentadas.
  • Zonas de acceso bajo autenticación de usuario.

Con esta separación podremos realizar varias iteraciones con varios niveles de búsqueda, yendo desde lo más automático hasta lo más manual.

¡Briconsejo!

Muchas veces, la sencilla búsqueda de palabras clave te puede ofrecer una buena lista de cosas a revisar con lupa…

Cosas como pass, root, secret, key, admin, user, db, bug, fix, todo,… son candidatas a tener en cuenta. ¡No olvides hacerte con un buen diccionario de ellas!

¿Y qué podemos encontrar?

Para este tipo de auditorías, suelo revisar el conocido OWASP top 10 y derivados. Te recomiendo que eches un vistazo a estos enlaces de interés:

Ahí podrás ver cómo detectar y mitigar cosas tan habituales como:

A) Funciones inseguras o prohibidas: a menudo te puedes encontrar que esa función que se está usando, la documentación no la recomienda (¿para qué puñetas está?… por compatibilidad..).

El uso de la función strcpy está desaconsejado por problemas derivados de ataques buffer overflow.

 

B) Referencia insegura directa a objetos (Directory transversal): exponer rutas completas de acceso a ficheros puede dejar el camino abierto para acceder a otros lugares que no estaban planteados inicialmente.

Esto permite a un atacante hacer algo como: http://foo.bar/crystalreportviewers/crystalimagehandler.aspx?dynamicimage=..\..\..\..\..\mydocuments\private\passwords.txt

 

C) Inyección de comandos sql (SQL Injection): cualquier entrada de datos de usuario no filtrada puede convertirse en una puerta para un atacante. Utilizar esa entrada para hacer que se ejecuten determinados comandos es hoy (y desde hace años) uno de los principales problemas de seguridad.

Un atacante puede insertar algo como http://example.com/app/accountView?id=’ or ‘1’=’1 y obtener todas las cuentas de usuario.

 

D) Secuencia de comandos en sitios cruzados (Cross-Site Scripting o XSS): cuando se muestra el contenido del usuario por pantalla sin pasar por ningún filtro, se pueden llegar a ejecutar comandos no deseados.

Un atacante puede introducir como entrada algo tipo <script>alert(“XSS”)</script> y obtener un popup por pantalla que le daría paso a probar cantidad de maldades.

 

Pero no nos olvidemos de otros clásicos derivados de la constante de inutilidad como:

E) Código oculto: partes de código que no deberían estar ahí ni hacer lo que hacen (backdoors).

Será complicado encontrar y podría superar un análisis automático.

 

F) Mala gestión de errores: mostrar mensajes de error con todo lujo de detalles por pantalla o no gestionar determinadas excepciones son prácticas habituales.

¿Eres de los que haces pruebas en producción?

 

G) Contraseñas en código: para no tener que tirar de BD, a veces incluso se meten contraseñas “a fuego”, algo que se puede obtener con un sencillo decompilador.

No pienses que nadie va a mirar tu código, dejar ahí información no es para nada una buena práctica.

 

Por supuesto, debemos llevar un seguimiento de todas las evidencias y errores que vayamos encontrando mediante el uso de nuestras herramientas favoritas de gestión de bugs o documentación, teniendo en cuenta:

  • Debemos destinar un tiempo diario para escribir resultados.
  • Debemos guardar capturas de pantalla y referencias de todo lo relevante, tanto si son resultados satisfactorios como si no lo son.
  • Debemos facilitar la continuidad del trabajo para otros auditores.

Una vez tengamos documentado todo, tendremos que generar dos informes que hablarán de lo mismo, pero con dos enfoques diferentes.

El informe técnico

informe-tecnico

Se trata de un informe de alto detalle en el que mostraremos todo lo que se ha encontrado. Está realizado por informáticos y va a ser revisado por informáticos, no tengas miedo a usar lenguaje técnico.

Y, aunque parezca una chorrada, permíteme que te recuerde que no debemos recrearnos en errores ajenos. La serenidad, elegancia y diplomacia son factores básicos.

El informe ejecutivo

informe-ejecutivo

Se trata de un informe de bajo detalle en el que mostraremos, de una forma ágil, el resultado de la auditoría. Debe alejarse de tecnicismos, no deberás hablar de herramientas o técnicas.

Cuanto más expresivo, mejor, no tengas miedo a usar cifras, iconos y ser cuantificable. El objetivo es que sea rápido de leer por personas de dirección que no tienen tiempo para entrar en demasiado detalle.

Sobre todo, ten en cuenta que el informe es el reflejo de una auditoría y permite medir la calidad de la misma. Una auditoría puede fracasar por un mal informe.

Y hasta aquí la entrada de hoy, espero que los consejos que te he dado sean de utilidad para tus auditorías de código. Si ves algún error, no estás de acuerdo con lo que cuento o quieres hacer alguna aportación, no dudes en pasarte por los comentarios.

Herramientas de Seguridad para entornos Microsoft

En innumerables ocasiones nos hemos encontrado con que debemos de realizar una auditoría de seguridad, analizar vulnerabilidad o simplemente detectar algún malware o código malicioso en entornos microsoft, llámese servidores o estaciones de trabajo.

En esta entrega quiero compartir con todos vosotros tres herramientas que nos ayudarán a realizar esta labor de una manera sencilla y quitándonos mucho tiempo en buscar alternativas que en ocasiones no sirven para nada.

La primera herramienta es PROCESS EXPLORER:

Process Explorer es una herramienta de la suite de sysinternals de Microsoft que nos permite identificar todos los procesos que se están ejecutando en Windows (Servidores o estaciones de trabajo) dando como resultado tanto los procesos legítimos como ilegítimos o sospechosos.

Aunque algunas personas lo confunden con el “administrador de tareas de Windows” hay que decir que NO es asi.

A través del Process Explorer podemos hacer un dump, ver el ID del proceso que está ejecutando la herramienta, matar (kill) el proceso en caliente, identificar la ruta donde esta instalado el proceso, ver el nivel de permisos a nivel de NTFS que tiene el proceso, entre muchas otras cosas.

Como bono extra de la herramienta nos da las estadisticas en tiempo real de consumo de memoria, CPU y Disco Duro.

2015-12-09_23-06-49

Esta formidable herramienta fue desarrollada por Mark Russinovich actual CIO de Azure en Microsoft.

Para descargar dar clic aquí:

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

 

La segunda herramienta es el Microsoft Baseline Security Analyzer (MBSA):

https://technet.microsoft.com/es-es/security/cc184924.aspx

Es una herramienta muy útil que se utiliza para realizar auditoría de seguridad y escaneo de vulnerabilidades en entornos Microsoft.

Su enfoque es para ayudar a las pequeñas y medianas compañías que no cuentan con un departamento de tecnología especializado en seguridad pero desean tener sus sistemas operativos blindados con las recomendaciones por parte de Microsoft que incluyen:

  • Actualizaciones y parches de seguridad
  • Recomendaciones de Seguridad
  • Detección de vulnerabilidades de seguridad
  • Auditoría de seguridad

woorden-wdb-gif-mbsa

Es importante destacar que se puede escanear múltiples ordenadores lo que hace muy simple el poder ver como esta el estado de seguridad de mis servidores o estaciones de trabajo.

Los sistemas operativos soportados por MBSA son:

Windows 2000, Windows 7, Windows 8, Windows 8.1, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Vista, Windows XP .

Puedes descargar la herramienta dando clic aquí:

https://www.microsoft.com/en-us/download/details.aspx?id=7558

 

La tercera herramienta es Microsoft Malicious Software Removal Tool (MSRT):

microsoft-malicious-software-removal-tool

Esta última herramienta nos permite detectar y eliminar software y codigos maliciosos (malware) en nuestros servidores y ordenadores con sistemas operativos.

  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Windows Vista Home Basic
  • Windows Vista Home Premium
  • Windows Vista Business
  • Windows Vista Enterprise
  • Windows Vista Ultimate
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows 7 Enterprise
  • Windows 7 Enterprise N
  • Windows 7 Home Basic
  • Windows 7 Home Premium
  • Windows 7 Home Premium N
  • Windows 7 Professional
  • Windows 7 Professional N
  • Windows 7 Starter
  • Windows 7 Starter N
  • Windows 7 Ultimate
  • Windows 7 Ultimate N
  • Windows 8
  • Windows 8 Enterprise
  • Windows 8 Pro
  • Windows Server 2012 Datacenter
  • Windows Server 2012 Essentials
  • Windows Server 2012 Foundation
  • Windows Server 2012 Standard
  • Windows 8.1 Enterprise
  • Windows 8.1 Pro
  • Windows 8.1
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 R2 Standard
  • Windows Server 2012 R2 Essentials
  • Windows Server 2012 R2 Foundation
  • Windows 10

Esta herramienta he de confesar que me ha salvado en muchas ocasiones como por ejemplo cuando la crisis en su momento del malware Conficker, realizando un sencillo script que permitía ejecutar la herramienta de manera silenciosa en los ordenadores y servidores se pudo eliminar y controlar el malware.

Muchos administradores de sistemas siguen utilizando este script en el inicio de sesión de los usuarios, es una manera efectiva de mantener los ordenadores limpios de codigos maliciosos.

Para más detalles podemos ir al siguiente enlace, donde adicionalmente podemos descargar la herramienta.

https://support.microsoft.com/en-us/kb/890830

Hasta la próxima…..

 

 

seguridad_pymes

5 consejos básicos de seguridad para PYMES sin dinero

La tecnología es ya algo que forma parte de nuestro día a día tanto a nivel personal como empresarial. Mi hija maneja el smartphone y la tablet con soltura (mucho mejor que sus abuelos), algo extensible a la mayoría de personas menores de 40 años.

En el mundo de hoy es impensable una empresa u organización que no tenga una fuerte base tecnológica, estemos hablando de base de datos de clientes, soluciones ERP o una simple (o compleja) página web.

Si echamos un vistazo a la situación actual es España, nos encontramos con que la inmensa mayoría de las empresas que nos rodean tienen menos de 250 trabajadores, lo que se conoce como PYME (Pequeña Y Mediana Empresa):

pymes

En este escenario podemos ahondar un poco más para darnos cuenta de que el uso de la tecnología es básico en este tipo de empresas:

uso_tecnologia

Sin embargo, cuando nos acercamos a evaluar las medidas de seguridad, planes de contingencia o de continuidad de negocio vemos con poco asombro (lamentablemente) que la situación es precaria.

planes de seguridad

Está claro que hay que invertir en seguridad

Desde nuestro punto de vista no hay más que ver los números para darse cuenta de que no se puede tener todo (o gran parte) del negocio sobre elementos tecnológicos y no tener un plan o medidas de seguridad que nos permitan tener cierto control sobre nuestra actividad habitual.

Sin embargo, las PYMEs en general no están demasiado concienciadas de este problema y suelen ver con cierto malestar las propuestas de, lo que consideran, un gasto absurdo en seguridad.

Convencer a este sector es todo un reto para los que nos movemos en este mundo, yo me he encontrado con esta situación en no pocas ocasiones y es algo muy complicado de abordar.

 

Las PYMEs sin dinero

Pero también hay que entender que los servicios profesionales en seguridad son caros y que muchas de estas empresas prefieren arriesgarse antes que afrontar el coste de un trabajo serio y profesional que les permita mantener su entorno dentro de unos límites aceptables de seguridad.

Si trabajas en alguna de estas empresas y tienes un rol técnico, si eres el responsable de sistemas, trabajas con la web o simplemente quieres aportar tu granito de arena a concienciar a tus compañeros y te encuentras en algunas de las PYMEs sin dinero (para invertir en seguridad), te quiero aportar cinco sencillos consejos para que la situación de tu empresa sea un poco mejor. Pero antes, para que entiendas lo importante que es esto, no estaría mal que supieras que…

 

Los “malos” ya no son lo que eran

Hace tiempo nos vendían la imagen del hacker malo como alguien encerrado en un cuarto rodeado de cables, generalmente a oscuras, con poca vida social y los ojos rojos de no dormir…

hacker_malo

dummies

 

Hoy en día la cosa ha cambiado y cualquiera que tenga un poco de interés por aprender puede hacerse con un manual o realizar una simple búsqueda en Google que le indique paso por paso qué tiene que hacer para fastidiar a la empresa de la competencia.

maldadPero aún hay más, si estás interesado pero te puede la pereza, sólo tienes que dar un par de vueltas por la deep web o hasta Youtube para encontrar alguien que lo haga por ti a cambio de unos cuantos bitcoins… ¿No te lo crees? ¿Conoces a el Gwapo?

 

¿Realmente me afecta?

Claro, la situación actual en estas PYMEs es pensar “a mí no me va a pasar”. Es un razonamiento habitual que se convierte en pánico cuando algo ocurre.

Pero volviendo a lo que te contaba, si te encuentras en esta situación en la que la empresa no tiene intención (por economía o decisión) de invertir en seguridad, al menos ten en cuenta estos cinco consejos que te ayudarán (sin apenas gastar un euro) a evitar, al menos, los ataques de botón gordo (aquellos que pueden realizarse sin conocimientos técnicos avanzados).

 

1) Examina tu información pública y semi pública:

La primera fase de un ataque sobre tu empresa va a consistir en la búsqueda de información que pueda aportar un mapa de lo que hay tras tu “fachada”.

Tener conocimiento de lo que enseñas es básico para intentar controlarlo y tratar de no ofrecer más de la cuenta. Para hacerlo, puedes usar algunos servicios web que te van a ofrecer una visión de cómo se te ve desde el exterior, como por ejemplo:

IntoDNS.com: te ofrece un informe de los que tu DNS dice de ti

intodns

DNSQueries.com: te ofrece varias utilidades para conocer información sobre tus sistemas de cara al público (dominio, ips, banners, puertos abiertos…).

dnsqueries

BriConsejo: trata de no mostrar banners, logs o servicios que no sean necesarios para tu actividad. Toda la información que no esté estrictamente relacionada con tu negocio, no debe estar expuesta.

 

2) Monitoriza tus servicios y servidores:

En muchas de estas empresas hay problemas incluso para saber si las cosas funcionan o no. Tener un control sobre si tu negocio está operativo es esencial y puedes contar con herramientas sencillas y gratuitas para conseguirlo.

Nagios / Icinga: dos sabores (el segundo es un fork del primero) para monitorizar de forma interna tus procesos y recursos, con ellos puedes tener todo bajo control

nagios

Monitor.us: servicio de la gente de TeamViewer que monitoriza de forma externa tus servidores, web… y te permite configurar alertas por mail y sms.

monitor

BriConsejo: saber qué o cuándo falla tu entorno es vital para poder recuperarse. En función de la actividad de tu negocio el tiempo que puedes permitirte tener algo parado es muy variable y puede ser vital.

 

3) Realiza una evaluación de seguridad de tus servicios:

Una auditoría de tus sistemas abiertos al público es vital, si tu empresa no quiere o no puede hacerlo con un profesional, al menos puedes utilizar ciertos servicios que te examinan e informan de las vulnerabilidades habituales.

WebSiteSecurityAudit: examina tu web o servidor en busca de vulnerabilidades y te las muestra ordenadas por prioridad junto con una explicación y consejos para solucionar el problema.

websitesecurityaudit

Detectify: similar pero con la posibilidad de recibir avisos y de exportar informes.

detectify

BriConsejo: trata al menos de eliminar las vulnerabilidades graves que te muestran estos servicios. Si ellos las detectan, alguien con mala intención también lo hará.

 

4) Haz copias de seguridad de tus datos importantes:

El espacio en disco está hoy en día casi regalado, no escatimes en backups y si son automáticos mejor (que al final siempre se nos olvida). Una solución híbrida que mantenga copias en local y remoto (puedes usar un disco duro y algún servicio cloud) te permitirá tener todo a buen recaudo por muy poco dinero.

Cloudberry backup: vale, no es gratis pero son apenas 30€ que te permitirán automatizar tus backups cifrando todo con unos sencillos clicks.

cloudberry

BriConsejo: ni lo pienses, tener tu información a salvo en varios lugares te costará muy poco y será maravilloso haberlo hecho si algún día lo pierdes todo…

 

5) Formación y concienciación del personal:

Habla con tus compañeros, envíales posts o noticias con incidentes de seguridad, puedes incluso utilizar el kit de concienciación de INCIBE o ponerles algunas de las charlas que te ofrecemos desde esta web.

Piensa que si consigues un pequeño cambio en la mentalidad de la gente, si consigues implantar una mínima cultura de seguridad en una PYME sin dinero habrás tenido éxito.

BriConsejo: al menos, trata de trasladar la necesidad del uso de contraseñas fuertes y de no abrir adjuntos de origen desconocido. Sólo con esto estarás haciendo mucho por tus compañeros.

 

Un vistazo general

Ojo, no estoy recomendando estos servicios como alternativas a un trabajo profesional, simplemente aconsejo este tipo de pasos en la situación particular de que te encuentres en una PYME sin dinero (para invertir en seguridad).

Quizás, poner en práctica estos consejos te pueda ayudar a cambiar la mentalidad de los que te rodean. Puede que poner sobre la mesa un pequeño informe con los problemas y soluciones detectados con estos cinco pasos sea el empujón necesario para que se comprenda que la seguridad no es un gasto si no una inversión que termina siendo rentable.

Como siempre digo, si ves algún error, no estás de acuerdo con lo que cuento o quieres hacer alguna aportación, no dudes en pasarte por los comentarios.

¿Están mis datos y ficheros personales y empresariales que están alojados en el Cloud cumpliendo con lo exigido en la LOPD?

Hola! de nuevo, hoy vengo con un tema un poco controversial, sobre los servicios en la nube llamado también cloud y su cumplimiento con la LOPD (Ley de Orgánica de Protección de Datos)  que en España protege los derechos de las personas a salvaguardar su honor e intimidad personal y familiar de los ciudadanos y el pleno ejercicio de sus derechos.

Esta Ley está regida y controlada por la AGPD (Agencia Española de Protección De Datos) en este sentido es de por sí controversial los servicios en la nube como en este caso en particular los ofrecidos por la empresa Microsoft.

Uno de sus productos estrella y que aloja una serie de soluciones empresariales es el Office 365 que contiene los productos Exchange Online (Correo electrónico), SharePoint Online (Gestión de documentos y contenido), Project Server Online (Gestión de Proyectos), Skype Empresarial (Comunicaciones Unificadas), Onedrive Empresarial (Almacenamiento de Ficheros) y la suite de productos de Office 2016 (Word, Excel, PowerPoint y NotePad).

En este sentido la pregunta que muchos nos hacemos es la siguiente.

¿Están mis datos y ficheros personales y empresariales que están alojados en el Cloud cumpliendo con lo exigido en la LOPD?

La respuesta es un rotundo “SI” de hecho ha sido Microsoft pionero en España en cumplir la LOPD, de por si existe un libro que habla exclusivamente de este tema y que puedes descargar en el siguiente enlace:

LOPD Libro Microsoft

https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCAQFjAAahUKEwjDy97wxp_IAhVBBBoKHbi5AC8&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2FC%2F2%2F6%2FC2689C05-2B67-4D11-BD2A-43CF9DBCE59E%2FLibro_LOPD_V2_Alta.pdf&usg=AFQjCNFVe8JwJ0y4lEOt45oRpm-2KKhNoQ&sig2=m1B9K8Vaq3jKw7q7-AkvzA

Tambien la AGPD ha publicado una nota donde ha certificado que las soluciones corporativas de Microsoft cumple con las garantías para la exportación de los datos.

Los productos y soluciones corporativos son: Office 365, Dynamics CRM Online y Microsoft Azure.

Cloud

Hay que aclarar que esto es una garantía en cuanto a que da a los usuarios corporativos la tranquilidad de la protección de su intimidad personal y a las empresas la tranquilidad que sus datos están protegidos.

Aumentando la confianza de las empresas en migrar sus datos desde su CPD tradicional a la nube (Cloud), con todas las ventajas que trae ello consigo.

Nota: https://news.microsoft.com/es-es/2014/06/06/aepd-servicios-cloud-microsoft/

Asi que dormir tranquilos que los datos en Microsoft están a salvo y cumpliendo la ley…..

Hasta la próxima.

auditoria-de-codigo

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

En la entrada anterior de esta serie de posts dedicados a la auditoría de código, hicimos una introducción sobre los problemas derivados del trabajo habitual. Es muy normal que haya fallos, descuidos o simple desconocimiento en cualquier proceso en el que un humano participa.

Vimos que el desarrollo de software no es una excepción y pudimos comprobar cómo han ido evolucionando los proyectos para convertirse en auténticos mastodontes.

Llegamos a la conclusión de que auditar el código de grandes proyectos es algo necesario y establecimos un momento óptimo cercano al 70% de desarrollo sobre una rama estable y que pueda compilar. ¿Hasta aquí todo bien? ¿Seguimos?

Primer acercamiento al código fuente

Si el código no es nuestro (lo que es común en una auditoría) necesitamos saber a qué nos enfrentamos. No tardaremos lo mismo ni nos encontraremos con los mismos problemas en un proyecto con miles de líneas pero sencillo, que en otro con pocas pero excesivamente complejo.

Por lo tanto, nuestra primera misión es conocer elementos tales como:

  • ¿Cuántas LOC (líneas de código) tiene?
  • ¿Cuántas funciones? ¿Son sencillas o complejas?
  • ¿Utiliza APIs de terceros?
  • ¿Está bien comentado?
  • ¿Existe documentación? ¿Está actualizada?

No podemos olvidarnos de requisitos externos que pueden complicar el proceso. Hace unos años participé en proyecto militar en el que recibí un código fuente con las siguientes características:

  • El código fuente era de la versión 7.
  • La documentación era de la versión 4 (a partir de ahí desarrollaron con prisa y no hubo tiempo para actualizar… ¿os suena?).
  • Para compilar era necesaria una llave USB… que no tenía y que tardó varios meses en llegar.

Desde luego no es el mejor escenario. Cuando te enfrentas a un proyecto así, cuanta más información puedas obtener, más sencillo será tu trabajo.

Mi consejo cuando te enfrentes a un proceso de auditoría de código es: insiste, profundiza y no tengas miedo a ser pesado. Puede que preguntando tres veces en lugar de una obtengas datos que te sean de mucha ayuda.

Herramientas de información

En nuestro acercamiento al código fuente, nos será de mucha ayuda tener una visión de conjunto antes de entrar a saco con el código. Por suerte dispones de gran cantidad de herramientas que te pueden ayudar en este paso.

En la siguiente captura podéis ver un ejemplo de una de esas herramientas (en este caso Code Analyzer) evaluando un pequeño proyecto java.

Análisis de proyecto con Code Analyzer

Como podéis ver, de forma rápida nos ofrece una visión de conjunto indicando LOC, comentarios, espacios en blanco

Complejidad del código

El siguiente paso será evaluar la complejidad funcional de lo que tenemos entre manos. Esto será una tarea sencilla si recibimos una buena documentación en la que todos los procesos estén descritos a nivel funcional (si hay diagramas de secuencia entonces será todo un éxito).

Si no lo tenemos, tendremos que evaluar el código realizando una tarea inicial de análisis de caminos independientes que se pueden tomar en los if-else, switches, cases, bucles… para trazar un mapa y poder contarlos.

¡Ojo! No te confundas, no se trata de contar sin más, debes evaluar las opciones. Mejor vemos un ejemplo, ¿no?

En este caso podemos ver claramente que la existencia de dos condicionales hace que existan tres caminos diferentes de ejecución:

  • Camino A: La variable es menor que 10.
  • Camino B: La variable se encuentra entre 10 y 20.
  • Camino C: La variable es mayor que 20.

Esto se puede hacer a mano, pero también dispones de herramientas que te ayudarán a hacerlo de forma más sencilla, aquí tienes algunas de ellas:

En esta captura puedes ver el resultado de consultar la complejidad utilizando el plugin Metrics para Eclipse sobre el proyecto JAVA anterior:

Complejidad ciclomática con Metrics para Eclipse

El resultado lo podremos interpretar de la siguiente forma:

    Medidad de complejidad

Significado

1-10

  • Código estructurado con facilidad para hacer pruebas.
  • Poco riesgo de seguridad asociado.
  • Coste de auditoría bajo.

10-20

  • Código complejo con dificultad media para pruebas.
  • Riesgo medio de seguridad.
  • Coste de auditoría medio.

20-40

  • Código muy complejo con gran dificultad para pruebas.
  • Riesgo alto de seguridad.
  • Coste de auditoría elevado.

>40

  • Código excesivamente complejo, es muy probable que no se puedan realizar todas las pruebas.
  • Riesgo muy alto de seguridad.
  • Coste de auditoría muy elevado.

NOTA: Si quieres profundizar más sobre el cálculo de la complejidad ciclomática, estos enlaces te serán de gran utilidad:

Planificando la auditoría

Una vez tenemos el código y hemos comprendido a qué nos enfrentamos (LOC, complejidad, documentación…) estamos en condiciones de afrontar el proceso y qué mejor forma que haciendo eso que tanto nos gusta, planificar.

Lo principal será definir el equipo que se va a encargar de realizar la auditoría, puede ser una persona o muchas más (como siempre, dependerá del presupuesto, la urgencia y varios elementos específicos del proyecto).

La recomendación es que se trate de varias personas con formación y experiencia en ámbitos diferentes. Sería ideal contar con alguien especializado en diferentes entornos de desarrollo (escritorio, móvil, web), lenguajes o sistemas.

Planificaremos entonces una serie de sesiones semanales en las que cada miembro del equipo tendrá plena libertad para usar aquellas herramientas o técnicas con las que se sienta más cómodo (de ahí la importancia de que el equipo tenga diferentes perfiles).

Cada día se realizará una reunión de seguimiento corta (siguiendo la idea de SCRUM) y después se iniciará el proceso por el que cada miembro se encargará de un máximo de 1000 LOC/h y durante un máximo de 3 horas, ya que la concentración es muy importante en este proceso y no conviene que el equipo esté cansado o aburrido (lo cual es fácil cuando llevas un par de horas leyendo código de otro…).

¿Qué nos queda?

Tenemos y conocemos el código, longitud, complejidad, documentación y requisitos de funcionamiento. Tenemos al equipo listo con una cantidad de horas y LOC asignadas. ¿Tenemos ganas de empezar?

Pues nos vemos en la siguiente entrada en la que profundizaremos en las fases de la auditoría, en las tareas habituales y en un montón de cosas más.

Como siempre digo, si ves algún error, no estás de acuerdo con lo que cuento o quieres hacer alguna aportación, no dudes en pasarte por los comentarios.