Archivo del Autor

Desde que conocí, hace un par de semanas o tres, la nueva radio por Internet Aragón Radio 2, es mi onda habitual en el trabajo. Reúne unas cuantas características que me resultan atractivas: música agradable, posibilidad de ver la programación de canciones, abundantes podcast, informativos breves y, especialmente interesante y novedoso, una web bien desarrollada e integrada con lo que debe ser la Web hoy en día. Y, como no podía ser de otro modo, con una bitácora interesante.

Y me comunica Rosa Pellicero (¿de dónde ha sacado mi dirección?) que el jueves 12 nos la presentan a nosotros los bitacoreros. Pues nada, que intentaré sacar un ratito para tomar una cerveza, ver amigos, conocer a la gente de la radio y visitar las instalaciones.

Buena iniciativa, por otra parte coherente con la alta calidad de servicios caracterizada por la Corporación Aragonesa de Radio y Televisión, tanto en radio como en televisión. Y no es coba, que en eso no me prodigo.

Etiquetas: , , ,

Comments No Hay Comentarios »

El lunes y martes (9 y 10 de junio de 2008) han realizado una muestra de danza los chicos del Conservatorio Profesional de Danza de Zaragoza en el Teatro Principal. Esto sirve como botón de muestra del encomiable trabajo que realizan estos niños que sacrifican buena parte de su tiempo libre en esta actividad artística.

Entre todos ellos, mi hija Lucía de 12 años, para mí, claro, es un ejemplo. Su capacidad de sacrificio me admira cada día y se empeña en continuar pese a todos los pesares. Compartimos esas calamidades pero una vez al año se nos “cae la baba” viendo a las artistas.

Dejo la actuación de ayer de 3º de Educación Elemental (donde está Lucía):

Disculpad la falta de calidad pero sirva como simple homenaje.

Etiquetas: , , , , ,

Comments No Hay Comentarios »

La semana pasada era atacado un sitio Web alojado por nosotros y, para colmo, realizado también por nuestro equipo. El ataque era trivial, como siempre, mediante inyección SQL (SQL-injection) y había seguido los procedimientos habituales.

Para quien no esté familiarizado, describo a continuación la técnica, bien explicada y masivamente difundida (demasiado, a buen seguro) por Chema Alonso:

Generalidades

Los ataques de inyección SQL se realiza mediante el envío de una sentencia SQL hacia un parámetro o campo de formulario que va a ser leído por una aplicación web para su procesamiento. En otras palabras, los atacantes intentarán completar una instrucción SQL especialmente “maligna” cuando ofrezcamos en una página web un formulario o un parámetro dentro del encabezado (del tipo, por ejemplo, http://midominio.com/listado.asp?id=23).

Esto es empleado, generalmente y menos mal, para cambiar datos en las bases de datos que almacenan la información que se presenta en la web. Y digo “menos mal” porque también podría ser utilizado para borrar una tabla, conseguir un usuario de la base de datos, etc.

Usualmente el fin consiste en cambiar de cara (defacement) de la web para colocar otro texto o imágenes identificando al hacker o con un mensaje alusivo. Estos delincuentes “menores” (ha habido ataques hace muy poco de este tipo que han limpiado webs tan concurridas como la Jazztel, Izquierda Unida y otras; han sido pillados -lee la crónica de Chema Al talego o a por talegos-) parece que pretenden ser los primeros en el top de Zone-h o cosas por estilo, no les da para mucho más. El problema es que los que están detrás sufrimos y mucho.

Técnica

La técnica no es muy complicada y suele ser parecida a la siguiente:

  1. Lo primero es buscar una víctima, pero para eso qué mejor que Google, para eso está. Introducimos una cadena que pueda representar una vulnerabilidad (por ejemplo una búsquda del tipo “inurl:listado.asp?id” y a ver que nos dice el buscador (para comprender mejor esto recomiendo el libro “Hacking Google” de Johnny Long
  2. Una vez localizada una posible víctima, se suele probar a ver si es vulnerable. Las pruebas suelen hacerse intentando romper una cadena y ver lo que canta.
  3. La técnica se basa en romper la sentencia SQL que haya programado el desarrollador y anexar otra sentencia maliciosa.
    Imaginemos que presentamos un formulario para buscar un nombre que presenta un campo llamado “apellido”. El valor introducido por el usuario lo tratamos por una página que tendrá una sentencia del tipo "SELECT * FROM usuario WHERE usr_apellido='" & apellido & "' ".
    Si un hacker nos introduce “algo de SQL” en el campo “apellido” puede hacer romper la sentencia SQL y realizar otras acciones. En este ejemplo, se podría introducir algo similar a:
    Apellido: kk' or 1=1 --
    Con esto la sentencia quedaría:
    "SELECT * FROM usuario WHERE usr_apellido='kk' or 1=1 -- ' "
    Observad que esa condición (con el “or 1=1”) se cumple siempre y, por tanto, devolverá algún registro (seguramente el primero aunque no exista el apellido “kk”, ideal para romper formularios de validación). El doble guión medio es usado para que el resto de la sentencia se entienda como comentario (según MS SQL Server, en otros SQL es parecido) y no produzca errores.

  4. Siguiendo así, seguramente probarán distintos valores para conocer nombres de campo, tablas, usuarios, etc. En esto les ayuda nuestro generoso sistema que le va diciendo dónde está el error, con su nombre de campo, tabla, etc. En el ejemplo del ataque sufrimos la semana pasada, el hacker incluso hizo:
    www.miweb.com/listado.asp?id=Convert(int,(select+user));--
    en la URL y nuestro sistema, amable de verdad, le contestó:
    Error de sintaxis al convertir el valor nvarchar 'usuario_de_la_bd' para una columna de tipo de datos int.
  5. Siguiendo así, al final realizará una sentencia:
    UPDATE tabla SET campo='Hacked by SuperHackilistico'
    y todos los valores tendrán esa cadena, que a buen seguro se lucirá flamante en la página de inicio de nuestra web.

El problema

El problema está en el desarrollo, no en el sistema que alberga la web ni en el de base de datos. Hace tiempo la gente ni se planteaba hacer cosas así, por lo que se programaba sin seguridad de ese tipo, pero hoy en día es muy frecuente este tipo de ataques.

En concreto, el día 28 del mes pasado, recibía un mensaje de Jorge Chinea del INTECO-CERT advirtiendo lo siguiente:

Estimados colaboradores,

En los últimos días se han detectado ataques masivos contra sitios web con el objetivo de manipular su funcionalidad y contenido. Una vez comprometidas, las paginas Web manipuladas redirigirán a sus visitantes a sitios web maliciosos expresamente diseñados para descargar e instalar todo tipo de códigos maliciosos en el ordenador que podrán permitir al atacante su control.

Desde INTECO-CERT se alertó en anteriores ocasiones la existencia de este tipo de ataques para comprometer los sitios web. Se trata de ataques de tipo inyección SQL, aprovechando una vulnerabilidad en el Internet Information Server (IIS), provocada por una errónea programación del código ASP (Active Server Pages).

Estos ataques masivos están apoyados en herramientas automáticas con las que logran infectar gran número de sitios web en poco tiempo. El número total de páginas comprometidas a día de hoy ronda los 1’5 millones, aunque muchas de ellas ya han sido o están siendo corregidas.

Recomendamos a todos los webmasters que tengan sus páginas ASP alojadas en servidores IIS comprobar, lo antes posible, si sus páginas web han podido verse afectadas. Un síntoma claro de la infección puede ser la existencia de código javascript externo desconocido y que apunte a alguno de los dominios indicados en el siguiente listado (y que iremos actualizando):

Listado de dominios maliciosos

De cara a los usuarios finales, para evitar infecciones, aconsejamos seguir las recomendaciones básicas que siempre se deben adoptar ante incidentes de seguridad:

* Utilizar software de seguridad como antivirus, cortafuegos, antiespias, etc.
* Tener actualizadas todas las aplicaciones de nuestro sistema, sobre todo sistema operativo y navegador, con los últimos parches de seguridad.
* Utilizar por defecto cuentas limitadas de usuario -no de administrador- con lo que limitaremos en gran medida los efectos de una posible infección.

Usuarios con conocimientos técnicos más avanzados pueden optar por deshabilitar el javascript en el navegador de manera temporal o instalar alguna extensión, como NoScript, que permita tener un control más exhaustivo sobre la ejecución de secuencias de comandos.

Es evidente que los desarrolladores deben prestar más atención en el código y poner filtros que anulen algunos caracteres y sentencias peligrosas.

En nuestro caso, ahora lo hacemos de forma usual, pero es cierto que siempre quedan desarrollos antiguos no actualizados que pueden ser vulnerables.

Contramedidas

Ya que conocemos el problema, solo nos falta ponerle solución. Esta se encuentra “simplemente” en filtrar lo que nos venga a páginas que admiten parámetros (ya sea por GET o por POST). Y digo “simplemente” porque hay que completar código y eso a veces da más que pereza.

El mismo Jorge Chinea planteaba la cuestión de la forma siguiente:

Con respecto a los ataques masivos contra sitios Web de los últimos días hemos estado viendo diferentes soluciones:

1.- La solución definitiva, que sería revisar todas las paginas asp verificando la entrada de datos para que no permitan inyecciones de SQL.
2.- El parche para las inyecciones que modifican datos: Usar un usuario para las consultas genéricas de la base de datos con permisos de solo lectura en las tablas y otro para la administración de la web, añadir/modificar contenidos… Con esto ya no se podrían modificar datos en la web

Pero me parece mucho más elegante otra solución que se planteó en el mismo foro (denominado RESCATA -Red Nacional de Sensores Antivirus- en la que colaboro) ofrecida por Juan Cascón de Vocento-ABC y que incluyo a continuación:

Function ControlSQLInjection(texto)
  ' Autor: Juan Cascón:  xxx@abc.es
  on error resume next
    Dim res
    res = LCase(texto)
    res = Replace(res, "[", "[[" & Chr(0))
    res = Replace(res, "]", "[]]")
    res = Replace(res, "< ", "")
    res = Replace(res, ">", "")
    res = Replace(res, "script", "")
    res = Replace(res,"select","")
    res = Replace(res,"table","")
    res = Replace(res,"create","")
    res = Replace(res,"insert","")
    res = Replace(res,"update","")
    res = Replace(res,"delete","")
    res = Replace(res,"drop","")
    res = Replace(res,"exec","")
    res = Replace(res,"declare","")
    res = Replace(res,"alter","")
    res = Replace(res,"union","")
    res = Replace(res,"null","")
    res = Replace(res,"schema","")
    res = Replace(res,"execute","")
    res = Replace(res,"-","")
    res = Replace(res,";","")
    res = Replace(res,"""","")
    res = Replace(res, "[[" & Chr(0), "[[]")
    res = Replace(res, "'", "''")
    res = Replace(res, "%", "[%]")
    res = Replace(res, "_", "[_]")
    res = Replace(res, "#", "[#]")
    res = Replace(res, CHR(13), "")
    res = Replace(res, CHR(10), "")
    res = Replace(res, CHR(0), "")
    res = Replace(res, "=", "")
    res = Replace(res, "&", "")
    res = Replace(res, "$", "")
    res = Replace(res, "@", "")
    res = Replace(res, "(", "")
    res = Replace(res, ")", "")
    res = Replace(res, "\", "")
    res = Replace(res, ",", "")
    res = Replace(res, "\'", "")
    res = Replace(res, "+", "")
    ControlSQLInjection = res
End function

Invocando a esta función en cada recepción de datos de un formulario o enlace, podemos considerar que estamos protegidos frente a este tipo de amenazas.

Etiquetas: , , , , , ,

Comments No Hay Comentarios »

El personaje de este capítulo quinto no cumple uno de los adjetivos de su título, al no ser desconocido debido a la celebridad otorgada por algunos artículos de prensa, libros y, sobre todo, en una canción del abuelo José Antonio Labordeta. Pero aun con todo, no me resisto a dejar de comentar alguna cosa, probablemente debido a tres grandes razones: la primera por su excentricidad en el ejercicio de su profesión; la segunda por ser un gran representante del surrealismo aragonés; y, por fin, la tercera por ser otro de los personajes que mi padre comentaba entre risas.

Ilustración de Berta Lombán en el libro \"El baulero y otros personajes\" de Raimundo Lozano

El baulero, cuyo nombre real era Pedro Díaz Layús (aunque en la canción de Labordeta le denomina “Mariano Elías el Baulero”, creo entender), vivió en la Zaragoza de posguerra. Dicen las crónicas que de joven fue banderillero y rejoneador, y eso le marcó su afición taurina. Su profesión era la de fabricante y transportista de baúles y lo curioso era que las entregas las realizaba montado en bicicleta.

La Zaragoza de entonces, años 40 y 50, no era la del tráfico actual, pero aún con todo ya había cierto trajín que era esquivado y driblado con la habilidad propia de un artista circense. Me hubiera encantado observar su presencia erguida y orgullosa por las calles del barrio de San Pablo toreando automóviles y tranvías con su mercancía (uno o dos baúles) en la parte trasera de la bicicleta.

Pero probablemente lo más curioso fue su conjunción de bicicleta y toreo. Dicen que llegó a rejonear en la plaza a un toro desde su bicicleta y a mi me resulta absolutamente surrealista la escena. Fiel discípulo y colega de Buñuel, a buen seguro.

Mi padre contaba, entre risas de recuerdos, como todos los transeúntes de la calle General Franco (actual Conde de Aranda) le aplaudían a su paso, mientras el gritaba “Soy el Baulero, el mejor torero”. Decía que era querido y reconocido, que toreando coches era mejor que con la capota y que su muerte, tan paradójica como su personaje al ser atropellado por un coche cuando iba andando, fue muy recordada.

Otros artículos y sonidos lo recuerdan y aconsejo su consulta:

Clip de audio: Es necesario tener Adobe Flash Player (versión 9 o superior) para reproducir este clip de audio. Descargue la versión más reciente aquí. También necesita tener activado Javascript en su navegador.

Etiquetas: , , ,

Comments No Hay Comentarios »

Hacía un tiempo que buscaba un gestor de archivos para WordPress para incluirlo en el sitio web de AragónGen, con el fin de mantener los ficheros que generamos, tanto públicos como privados, de forma sencilla, con control de acceso y estadístico.

Así que el otro día me puse y encontré uno que no está mal. Se llama Downloads Manager y permite lo que pretendía: establecer categorías, hacerlos públicos y privados y gestionar las descargas. Lo podéis encontrar en la página de Giulio Ganci.

Lo puse en marcha y, ya puestos, lo traduje. Y como no podía ser de otro modo, aquí dejo los archivos de traducción (mo y po).

Downloads Manager (fichero .mo)
Downloads Manager (fichero .po)

Gracias a Giulio Ganci, autor del plugin.

Etiquetas: , , , , ,

Comments 3 Comentarios »

Hace ya unos días me enteré de la celebración de una jornada sobre Business Intelligence en Zaragoza (“Introducción al Business Intelligence con MicroStrategy“) y, ni corto ni perezoso, decidí inscribirme. Tras alguna duda por parte de la organización (en mi calidad de consultor y de posible integrador era competencia de ellos, o al menos eso creían) me reservaron plaza y ahí he estado todo el día.

La razón de inscribirme es que tenía curiosidad en conocer el producto (MicroStrategy) mas que el propio concepto (“Introducción al Business Intelligence”). Y la verdad es que en ese sentido no ha estado mal el día.

Lo que no me acaba de convencer es esa tendencia actual (desarrollada y promovida por corrientes de lo que yo denomino MarkeTIC) de poner nombres grandilocuentes (por supuesto, anglosajones) a cosas que en informática y comunicaciones conocemos desde hace ya mucho tiempo con nombres más simples o incluso sin necesidad de ellos. Me refiero a que yo hace ya más de diez años ya hacía lo que denominamos ahora Business Intelligence (vaya nombrecito, por cierto) solo que le llamábamos informes basados en consultas (vale, a veces decíamos query) accesibles mediante herramientas externas contra objetos de datos (aquí si empleábamos la terminología OLAP). También creábamos tablas temporales o almacenes de datos vinculados (no les llamábamos Datawarehouse, claro) y, en el fondo, intentábamos el acceso, explotación y sacar conclusiones de los datos de forma no evidente (o sea, Data Mining)

Pero claro, así no vendíamos. Al fin y al cabo lo que hacíamos era informes sobre consultas (algunas de las cuales podía medirse en metros o más) y eso no era “inteligente”, por lo visto. Se ve que mi condición de viejo cascarrabias aflora a la menor oportunidad.

En cualquier caso he de reconocer que el tema ha avanzado sobremanera, sobre todo en comodidad y flexibilidad. En la presentación de hoy (más flojita, en mi opinión, la de la mañana sobre el aspecto usuario y mejor la de la tarde en desarrollo y administración) he visto claramente esa evolución, permitiendo que con dos clics tengamos esos informes que tanto gustan a nuestros gerentes y financieros. Y todo en Flash, claro…

Pues sí, buen producto. Por poner objeciones, que evidentemente las hay, nombraré la dificultad práctica que tiene para muchos el enlazar el propio MicroStrategy con los datos que a buen seguro procederán de un ERP o similar que los propios informáticos desconocerán en su estructura. Y es que veo que una vez identificados los objetos de negocio (basados en, como no, el propio modelo de negocio a analizar) la cosa está bastante tirada, pero la dificultad de ese paso previo a veces resultará insalvable. Claro que de eso viven muchos, cosa no fácil en estos tiempos.

Bueno, pues gracias a Belén Ortega de A Smart Data, como organizadora, y a Jordi Pujol, preventa de MicroStrategy, como interesante ponente.

Etiquetas: , ,

Comments No Hay Comentarios »

A principio de esta temporada 2007-08 ya comenté varias cosas en Diferencias de velocidad, ¿o será otro juego?: mi pasión por el baloncesto, mi opinión positiva sobre el CAI Zaragoza de esta temporada y mis deseos de dejar la LEB y empezar a jugar al baloncesto en serio, o sea, en la ACB.

Fin de partido CAI Zaragoza - Hospitalet

Pues bien, parece ser que, al fin, mis deseos fueron cumplidos ayer, en una de esas noches mágicas, llenas de los famosos 15 minutos de gloria y en el que las pasiones irracionales salen a flor de piel: el CAI ganó, quedó campeón de liga ACB y, por tanto, según las reglas de este año, asciende directo sin play off a la ACB.

Enhorabuena a todos, al equipo y, más todavía a los sufridos seguidores que llevamos 12 años sin baloncesto ACB en Zaragoza y 6 en el infierno LEB.

Dejo algunas fotos del momento (partido y celebración en Plaza de España).

Etiquetas: , ,

Comments No Hay Comentarios »

Bajo el título Jornada Profesional de Comunicaciones ProCOM ARAGÓn 2008 y subtítulo Integración, banda ancha y servicios avanzados y organizado por el Colegio Oficial de Ingenieros de Telecomunicaciones de Aragón, el Centro Politécnico Superior de la Universidad de Zaragoza, la Asociación IDiA y el Gobierno de Aragón, se ha desarrollado en el Campus Río Ebro de la Universidad de Zaragoza un interesante conjunto de ponencias, con grandes altibajos, con un eje central en las TIC.

Presentación de la Jornada ProCOM Aragón 2008

Antes que nada es preciso felicitar a Julio Fernández de SAMCA, gracias a quien esta jornada ha existido y sin cuyo empeño no hubiera tenido sentido.

Bajo mi punto de vista ha sido de contenido irregular, o así me lo ha parecido. Tras un principio absolutamente institucional (presentación por parte de Enrique Masgrau del CPS, Luis Armenteros del COIT, Antonio Novo de IDiA y Fernando Beltrán Viceconsejero de Ciencia y Tecnología del Gobierno de Aragón) se ha pasado a tres conjuntos de ponencias (más que mesas redondas) temáticas.

La primera, siempre bajo mi opinión personal, ha sido soporífera. Se ha centrado en las presentaciones de las operadoras de telecomunicaciones. Por allí han pasado Telefónica, Vodafone, Orange y Embou. Las tres primeras, operadoras de carácter nacional han repetido lo mismo, más o menos, sobre grandes velocidades y servicios mil veces descritos. Repito, soporífero. Lo más interesante ha sido lo más breve, es decir, los comentarios de Jorge Blasco de EMBOU sobre la conectividad en el medio rural y los esfuerzos desplegados en los últimos tiempos por el Gobierno de Aragón.

Tras un pequeño receso y presentado por Julio Fernández se ha hablado de plataformas de integración. Más interesante. Se ha hablado de control y servicios por hardware de conexión (interesantes productos de Enterasys), soluciones de videoconferencia y colaboración de DIALCOM (me lo apunto para mirar su integración con nuestra plataforma e-learning) y telefonía IP de Ovvoe (esto lo miraré más para ver qué amplía en funcionalidad a lo que tengo montado con Trixbox y Asterisk). Bastante mejor.

Otro descanso y hora de hablar de conectividad: Alvarion de WiMAX y su despliegue, Telnet R.I. de su hardware de fibra para la implantación de Telefónica y Teltronic de su nuevo desarrollo TelMAX para comunicación móvil de servicios profesionales. Este último me ha resultado curioso por mi propio desconocimiento de estos servicios de conectividad críticos (policía, bomberos, etc.)

Bueno, en general, bien, al menos un poco útil. Y es que el nivel actual en las ponencias y presentaciones es muy bajo, y en esta jornada se ha vuelto a repetir. Se echa en falta esos oradores y comunicadores que antes aparecían. Pero el esfuerzo de organizar la jornada y el desarrollo y contenido han cubierto mis expectativas.

Reitero la felicitación a Julio por la organización y espero que se repita, demandando una mejor preparación de los ponentes y un enfoque más divulgativo que comercial, para evitar algunos momentos en los que el horario de siesta nos ha invadido.

Por cierto que el horario de esta jornada y las obligaciones, como siempre, familiares, me han impedido ir al XI bloggellón. Leo la crónica de Gaby y me da envidia. Espero que otra será…

Etiquetas: , , ,

Comments 6 Comentarios »