miércoles, julio 18, 2007

¿Arte o Ingeniería?

Desarrollar un software parece eminentemente un proceso de ingeniería del que se han creado metodologías que van desde cómo realizar la tomar de requisitos hasta cómo gestionar la fase de pruebas. Esto es algo que todos asumimos aunque luego, dentro de los procesos de ingeniería, tenemos el arte; aquellas ideas felices que marcan la diferencia en los rendimientos de los algoritmos o por lo sencillo de la solución, entre lo que es bueno y lo que es superior. Me gustan especialmente los juegos que plantea el chico maravillas en el blog de Programancia101 [Me tuvo una noche ordenando un millón de números de teléfono de 7 cifras en 2 Megas de memoria sin acceso a disco.]

Pero, cuando se hace una auditoría de caja negra, para buscar los fallos de una determinada aplicación web, ¿podemos hablar de ingeniería o necesitamos un artistita? Parece evidente que tenemos que aplicar técnicas de Ingeniería Inversa y ya solo por el nombre nos lleva a inducir que es una disciplina automatizable, reproducible, auditable, etc… Pero sin embargo no deja de tener sus vertientes más oscuras. En el caso de una auditoría de caja negra, es decir, de buscarle los fallos al sistema sin conocer ninguna información más que la pública, tienes que estar siguiendo los pasos de un desarrollador que ha escrito un código. ¿Y cómo lo habrá escrito? ¿Qué mecanismo mental ha llevado al programador a tomar una decisión u otra a la hora de procesar unos parámetros? ¿Habrá seguido algún proceso de ingeniería conocido para desarrollar el código?

En los equipos de desarrollo colaborativo, dónde cada desarrollador envía versiones de su parte de trabajo, los jefes de proyecto pueden establecer la política de validación de la versión que se sube, de tal manera que se implanta una metodología de desarrollo… O al menos unas normas que cumplir cuando se sube un código.

Sin embargo, en las aplicaciones web, esto parece un poco más anárquico y pocos son las empresas que tratan con procedimientos y metodologías de desarrollo la creación de los portales corporativos. No me refiero a los CMS profesionales sino a las aplicacones desarrollados por la propia compañía usando los entornos Web.

En el primer entorno las técnicas de ingeniería inversa a la hora de realizar una auditoría de caja negra parecen más fáciles de implantar ya que es posible seguir una metodología para descubrir la metodología (valga la redundancia) de desarrollo.

En el segundo entorno, en el que el desarrollo parece más anárquico, la generación de una metodología automatizada de búsqueda de vulnerabilidades parece un proceso más costoso y tal vez sea necesaria la labor de un auditor más “artista” y menos “ingeniero”.

Mi opinión al respecto es que para hacer una auditoría de caja negra a una aplicación web, hoy en día, tiene más peso la parte de proceso que la parte de arte y que se debe tender a automatizar la búsqueda de todos los fallos. Para eso están los escáneres de vulnerabilidades creados. Aplicaciones como Acunetix Web Vulnerability Scanner o WebInspect están pensadas para auditar Webs. Es cierto, que ajustarlos es un proceso, a veces, tan costoso como hacerlo a mano, pero aunque lo hagas a mano, tienes un método creado para buscar “los fallos” e implementar una metodología siguiendo los procesos de OWASP (Open Web Application Security Project), por ejemplo. Eso sí, siempre nos quedará esa parte de arte, que al igual que en la ingeniería del software pone esa gente a la que le preguntas "¿Cómo se te ha ocurrido eso?" Y simplemente dice: “no sé, pensé que tal vez funcionaría”.

¿Tú qué opinas? ¿Arte o Ingeniería?

10 comentarios:

  1. "En el justo medio está la virtud"... como para casi todo.

    ResponderEliminar
  2. Hola Chema:

    No tiene nada que ver con el post, lo siento, pero no quería dejar de enviarte el enlace a la intervención de DANSing Queen (no para quieto el jodío) en el Curso de Periodismo Social, Comunicación y Nuevas Tecnologías de El Escorial la semana pasada: http://aka.acmw.es/servimedia/escorial/2007/09/2.asx#

    Saludos

    ResponderEliminar
  3. Te falta poner una tercera opcion que es: Magia.
    Por cierto el biologo-tecnologo Enrique da PENA. Menudo fantasma.

    ResponderEliminar
  4. Pues yo creo que el pájaro está encantado de haberse conocido, porque siempre tiene muchas cosas que contarse.

    En fin, ya nos encontraremos algún día...

    ResponderEliminar
  5. Estoy chupandome toda la charla y es genial!! Es mucho más divertido que yo!!! jajaja. El malvado Banner!

    ResponderEliminar
  6. Arte, sin lugar a dudas... La ingenieria produce demasiado ruido y le quita ese componente de "reto logico" que tanto me apasiona.

    ResponderEliminar
  7. yo tambien me lo estoy tragando todo (como suena...) Me encanta

    ResponderEliminar
  8. @Pedro:
    Mejor una media con tomate.

    ResponderEliminar
  9. Ya sabía yo que os iba a gustar la charlita. Yo cuando termine de verme todos los capítulos de Pocoyó y Cañas y Barro me pondré a ver el chou de Enrique. Saludos.

    ResponderEliminar
  10. A mi me gusta ver como se mete continuamente la mano en el bolsillo, muy profundamente, y se pone a hablar de "movimiento" y de cosas que evolucionan "muy rápido" y venga "mano parriba y mano pabajo".
    Yo suelo estar de acuerdo con él en poco o nada (mas bien nada) pero hay que reconocer que tiene dotes de comunicador, en el sentido mas Losantista o Peperubianero del término.
    Eso si, no he podido con la charla hasta el final, que estoy pegandome con el MOC de seguridad de Exchange 2007 y me tienen loco las RBL (a ver cuando hablas de ello, josemaricariño) y su endemoniada gestion desde la Powershell. Mucho más potente e integrado en el propio producto, pero mucho más complejo como penalización.
    Mola.

    ResponderEliminar