***************************************************************************************
Artículo publicado en ISV Magazine Noviembre de 2007: "
He pensado qué..."
***************************************************************************************
He pensado que… ¡Vamos a meternos en el comercio Online!Así; sonriente; con los dientes deslumbrando cual villano antes de recibir la paliza del héroe en la batalla final, se presenta el Jefe [de sonrisa] Profident una tarde, después de haberse tomado un orujito de hierbas y haber fardado con otro(s) jefe(s) sobre los servicios de la compañía, de lo bien que va la empresa y del excelso crecimiento en ventas que llevamos este año en el Q2, H1 o el parcial que toque del año fiscal.
Y cuando dice
“Vamos”, realmente está diciendo
“Tienes que” lo que significa:
“Te toca pringar”. Esto no tendría que ser un gran problema, que para algo trabajamos en esta profesión, si se fueran a realizar las cosas bien, es decir, se inicia un proyecto, con una fase de toma de requisitos, otra de validación de los mismos, selección de recursos, formación, etc… Aquella asignatura de
“ciencia ficción” que se llama Ingeniería del Software y que para colmo suele tener varias partes, como las trilogías de Star Wars (Ingeniería del Software I: Un nuevo amanecer con UML, Ingeniería del Software II: La rebelión Orientada a Objetos e Ingeniería del Software III: El retorno del componente y el código manejado) Vamos, lo que viene siendo el ser un Ingeniero, pero… no, no va a ser así.
Si tienes la suerte de los informáticos, la cosa empezará tal que con la elección de la tecnología a usar basada en la lectura de algún infame blog, de esos que iluminan nuestra dichosa Web 2.0, en la que un Técnicoless (dícese de todos aquellos que no han tirado una puñetera línea de código en su vida y se nombran referentes en Internet opinando a diestro y siniestro sobre las bondades o inconvenientes de determinadas tecnologías) le ha convencido de que Java, Mono, .NET o Perl es la panacea para todos los problemas.
“En dos semanas tiene que estar que con estas tecnologías ya ni tienes que programar”. Esa frase te dirá tu excelso Jefe Profident tomándose un café (a tu costa, por supuesto) en la máquina esa, que no solo crea úlcera de estómago, sino lo que es mucho peor, adicción. A eso tú piensas en contestar algo así como
“pues te pones tú en la •$%%•$ de sito que me has puesto y ¡ale!, tirando líneas de código machote”, pero te callas; y te pones; y comienza el proyecto. Ya sabes cómo funciona la Ingeniería en este país:
“Nunca hay tiempo de hacer las cosas bien… pero sí para hacerla dos veces”Fase 1: Toma de requisitosEsta fase se resume en un par de reuniones café en mano en dónde nuestro Jefe Profident disfruta haciendo La Carta de los Reyes Magos mientras que te cuenta lo bien que se lo ha pasado en el yate con unos amigos que conoció en su último viaje a Osaka (Canadá). Al mismo tiempo te pide cosas como:
“Y quiero que el sistema automáticamente seleccione a los mejores clientes y mejores pagadores y busque cuales son los objetos que menos se van a vender y les haga una oferta que no puedan rechazar”. Ale, y ahora vas y lo cascas en .Net o JSP o lo que el Técnicoless le haya recomendado en su flamante Wordpress.
Fase 2: La formación“¿Formación? ¿pa qué? ¡Si está todo en Internet! Mírame a mí, todo el día trabajando y aún me queda tiempo para ponerme al día a través de Intenet. Usa Google chaval”.
Éste es el momento que marca la diferencia entre un trabajador y alguien encerrado en la cárcel por
“Jeficidio”. ¡Aguanta!
Fase 3: La cagadaEs normal; yendo el proyecto como va, lo primero que sucede es que se va al garete. Tu primer sistema de login tiene SQL Injection y se cuela hasta el Pato Lucas (el cual amablemente se registra y deja su mail patolucas@warnerbros.com). Lo arreglas (mirando en algún sitio de Internet como dijo nuestro ilustre Jefe Profident) pero te olvidas del parámetro del buscador con el que te tiran el servidor de base datos inyectándote un shutdown.
Cambias los privilegios de la cuenta, pero en el archivo de descarga del folleto informativo alguien te inyecta un cambio de directorios y te hace un cucharón para bajarte la sam o el /etc/passwd del sistema. Tras leer como funciona en profundidad el SQL Injection ya estás listo para que la web funcione. Sin embargo, todos los datos de tus usuarios aparecen publicados en un foro porque te los sacan con Blind SQL Injection (a pesar de que ya sabías SQL Injection).
Te lo planteas y quitas la base de datos para trabajar con documentos XML. Na, un poco de DOM, un poco de SAX y listo. Te cepillan la web con Xpath Injection. La integras con LDAP y alguien usa las consultas apropiadas para sacarte la estructura de tu árbol LDAP.
Cuando ya eres el rey de las inyecciones decides poner bonita la web: Te comes un Cross-Site Scripting Persistente y te mangan la cuenta tuya del sistema, la de tu correo del trabajo y la del mail para ligar. Te quedas sin el Messenger y tu mujer descubre a tus amiguitas.
Tiras de backup y lo arreglas, pero quitando el Hijacking que te habían metido para quitarte la cuenta. Recibes un mail con un link a tu Web y te vuelven a quitar la cuenta con un XSS No Persistente.
Acabas de arreglarlo tras recuperar otra copia de seguridad y perder una semana de curro porque el Sistema de Backup (que le recomendó un blogger a tu Jefe Profident basado en Pendrives USB no ha funcionado).
Llegas a la fase de alimentar la Web y te implantas un gestor de ficheros. Te comes otro Cucharón. Lo arreglas. Tu competencia tiene los precios que los ha sacado mediante una vulnerabilidad RFI (Remote File Inclusion) que les ha permitido meter una Shell. Recuperas del sistema de copias de seguridad (pendrive) otra vez tu web.
Cambias la arquitectura del sitio y realizas unas comprobaciones meticulosas. Tu Jefe Profident sube ficheros al servidor y resulta que tiene un Troyano Reverso adjuntado: alguien se dedica a tirar tu web cada tres minutos y te toma una foto con la Webcam (esa que tu Jefe Profident instaló en el servidor como Sistema de Seguridad del CPD – compuesto por un ordenata clónico con un monitor en blanco y negro
“qué como nadie va a trabajar ahí da lo mismo”-) y aparece publicada en un foro con el siguiente mensaje
“POWNED” junto con un tutorial de cómo usar el Posion Ivy.
Fase 4: El finHan pasado tres meses, no has conseguido sacar el proyecto adelante en tiempo pero al final rula, has sudado tinta china, has recibido mil palos y tu Jefe Profident saca conclusiones.
“No has estado a la altura, pero claro, es normal, solo eres un desarrollador informático”. Decide que para el siguiente proyecto lo mejor es cambiar el lenguaje que no se te ha visto suelto.
ConclusionesEs evidente que una buena herramienta con una buena tecnología ayuda a tener buenos desarrollos. Es fácil encontrar buenos ejemplos de desarrollos grandes con JSP o ASP.NET o con otra cantidad de lenguajes. Creo, encarecidamente que el verdadero problema de los proyectos está en quien los gestiona. Una buena gestión de un proyecto, incluso con recursos mediocres puede dar buenos resultados. Conoce y explota lo que tengas y apóyate en profesionales. Y por favor… ¡¡Huye de los Tecnicoless!!