Los hackers del Senado

El Senado estrena web y salta la noticia: la nueva web del Senado ha sido hackeada… ¿O no? La nueva web del Senado no ha sido hackeada… ¿O sí? Se trata de una vulnerabilidad de tipo XSS no persistente de los dolores… ¿Qué ha pasado en realidad? ¿Por qué es tan difícil entender a los informáticos? ¿Quién nos quita esa sensación de “se lo llevan crudo mientras me dicen que sonría”? Salvo por la última pregunta, que tendréis que contestar vosotros solos, hoy me pongo el gorro de comando de emergencia informática para explicar:

  • qué ha pasado,
  • por qué ha pasado y
  • por qué debe importarnos lo que ha pasado (aunque no sea tan grave, en realidad).
Senado en obras
El edificio del Senado de España, en obras. Foto de tripu.

Empecemos por el principio

Hubo una gran explosión —desde dentro, no desde fuera; ¿qué es fuera hablando del Universo?— y el espaciotiempo empezó a existir. Trece mil y pico millones de años después, un humano inventó la Web: una red de páginas de texto con una dirección —como la de una casa, para entendernos— y una forma de especificar enlaces entre ellas usando esas direcciones.

El humano que pensó en estas cosas quiso que las páginas web se pudieran escribir a pelo, es decir, sin ningún tipo de traducción entre letras humanas y código de ordenador. De esta forma el contenido de las páginas y el lenguaje que describe su estructura podría escribirse en cualquier soporte y con cualquier programa editor de textos. Esto, señoras y señores, es democracia. Solo había que resolver un pequeño problema: separar el lenguaje de la estructura de las letras del contenido.

La estructura de la web

Problema que, afortunadamente para nuestro inventor, ya estaba resuelto tiempo ha gracias a una convención de lo más trivial que se remonta a los primeros tiempos de la informática. Escribimos con letras (a, b, c, d…), números (0, 1, 2, 3…) y otros símbolos. ¿Por qué no reservar algunos de los menos usados para separar el lenguaje de estructura del contenido?

Por otra parte, usamos paréntesis para destacar o hacer un aparte con nuestros textos. ¿Por qué no generalizarlos? Si tuviéramos diferentes tipos de paréntesis, podríamos usarlos para indicar cuando estamos marcando una palabra para que aparezca en negrita, una frase para que sea un titular…

Esta es la base de todos los lenguajes de marcas, y en particular del de la web —llamado HTML. Malditos acrónimos de cuatro letras (AD4L…) Unos caracteres especiales: <> y algunos más, para escribir paréntesis de diferentes tipos: <p>hola, mundo</p>. El contenido, “hola, mundo”, enmarcado por una marca de tipo p (párrafo) que se abre y se cierra. El cierre lleva una barra “/” para diferenciarse de la apertura para poder meter marcas iguales unas dentro de otras sin que el ordenador que va a mostrar la página se vuelva mico. ¿Para qué querríamos hacer eso? Bueno, los programadores somos así; hacemos cosas por si acaso las usamos luego y porque queda elegante. Somos unos estetas.

El argumento se complica

Más adelante, otros seres humanos pensaron que las páginas eran algo muy aburrido y que tendrían que poder mostrar muñequitos en movimiento. Pese a la existencia de la Declaración Universal de los Derechos Humanos, a nadie le pareció una mala idea. Pronto se creó un completo lenguaje de programación para intercalar con el contenido de las páginas.

Estos programas formarían parte de la página. Cómo no. Por tanto tendrían que estar escritos también en un lenguaje legible por humanos. El programa que muestra las páginas —el navegador— ya no se limitaría a mostrar contenido siguiendo las directrices de las etiquetas que lo rodean: también ejecutará instrucciones. Se puede hacer de todo porque si no, no sería lo suficientemente útil y no lo querríamos para nada. Ajá.

Para liarla de verdad hace falta un ordenador

Con los ordenadores pasa lo mismo que en arquitectura y que en otras muchas disciplinas: a mayor complejidad, más probabilidad de fallo. Cuantas más piezas tienes, mayor es tu capacidad para cargártela. Se rompe antes un cacharro con cien mil botones que un plano inclinado. La web ya era un invento muy complejo.

Pero, además de complejo, el invento era abierto. Es —al menos teóricamente— posible interpretar una página de la web de cabeza. Yo confieso que escribo en HTML del tirón, así que muy difícil no puede ser. Ya tenemos los ingredientes ideales:

  • un sistema abierto por definición,
  • con una gran complejidad
  • y capaz de ejecutar programas que hicieran cosas.

Era cuestión de tiempo que los programas empezaran a “hacer cosas” de mayores, como colgar ordenadores, robar contraseñas, reproducirse a sí mismos y otras lindezas. Eso es lo que hacen los hackers. ¿Verdad?

Un error de página no encontrada en la web actual del Senado.

Lo que hacen los hackers

No. Los hackers no son mala gente. ¿Los pintores son mala gente? Pues los hackers tampoco. Un pintor es una persona que realiza tareas con útiles de pintura (gorda, fina, no es nuestro problema en este momento). Un hacker es un ser humano que usa su creatividad para encontrar hacks: soluciones no previstas a problemas no previstos. Soluciones originales, interesantes y —para un hacker— divertidas. Un hacker, sin la ‘k’, se dedica a hacer (esta forma de traducir podría considerarse un hack poco ingenioso).

Claro que los hackers se dedicaron a explotar un sistema tan goloso como la web para “hacer cosas”. Cómo evitarlo. Pero insisto: los hackers no son mala gente, o al menos no lo son por principio. Existía en los tiempos heroicos de las pantallas de fósforo verde, los módems y los discos de 8 pulgadas un código de “ética hacker” que impedía usar los conocimientos hallados para hacer el mal.

Sí, y en los años 50 se podía jugar en la calle. Hoy tenemos que distinguir entre “white hat hacking”, los buenos, y “black hat hacking”, los malos. Y las hordas de hackers regulares, como la chavalería de Anonymous. Que serán legión, pero que muy brillantes —en general, hay excepciones— no son.

Los puntos débiles

Así que tenemos, de un lado, un sistema complejo y abierto por diseño. Del otro, muchos pares de ojos sujetos en cabezas de gente con tiempo y ganas de divertirse. Uno de los más habituales es el fallo de XSS —malditos acrónimos de tres letras (A3L)… Un error de XSS (Cross Site Scripting, o “programas de un sitio web que se ejecutan en otro”, puesto en claro), es un tipo de vulnerabilidad. Un sospechoso habitual en el posible catálogo de puntos débiles de una web. Un agujerito que permite al hacker insertar en una página cosas que sus creadores no pusieron ahí.

Los errores de XSS vienen, como los helados y los quarks, en varios sabores. Por un lado tenemos los errores no persistentes: el problema no deja huella en la web hackeada. Eso no significa que no pueda, potencialmente, dañar su imagen ante un usuario. O aprovechar errores adicionales en los sistemas de los usuarios para infectarlos con virus más problemáticos. Mucha gente —profesionales del ramo incluidos— afirman que si la web que sufre la vulnerabilidad no se ve alterada, entonces no ha sido hackeada: esto no es así. Se está confundiendo el hackeo (una actividad general) con ataques más particulares, como el defacing —que consiste en cambiar la apariencia o el contenido de una web, con fines de denuncia, parodia o daño comercial, pero para todos sus usuarios a la vez.

Por otro lado, una vulnerabilidad XSS podría ser persistente: es decir, puede realizar cambios permanentes en el contenido de la web. Este tipo de agujero es más serio, ya que abre la posibilidad de infectar no solo al usuario, sino también al propio programa que se ejecuta en el servidor de la web.

Hay trampa porque hay ley

Notad que sin la capacidad de añadir a ciertas webs contenidos que sus creadores no previeron las seis quintas partes de nuestra moderna Internet se convertirían en algo más aburrido que un saco de cantos rodados (salvo para un geólogo; los geólogos de la sala, haced el favor de imaginar otra metáfora). Twitter, Facebook, Youtube, Hotmail… Todos dependen, para su éxito, de que completos extraños puedan “subir cosas” para diversión del respetable. El reto consiste en que esas “cosas”, ese contenido, se coloque donde debe y solo ahí.

Si lleváis un tiempo en Twitter tal vez recordéis como hace un par de años alguien descubrió cómo esconder en un mensaje de Twitter un programita que, solo pasando el ratón por encima del tweet infectado, lo reenviara a todos nuestros contactos. Un gusano en toda regla, como los que llevan recorriendo servidores de Internet desde los años 80, cortesía de una inteligente inyección de código que estaba donde no debía estar.

¿Qué ha pasado en el Senado?

La nueva web del Senado de España tenía un pequeño problema de este tipo: era posible modificar la dirección de una de sus páginas para que mostrara rótulos a voluntad. Te pasan un enlace en un correo, por Facebook o de cualquier otro modo diciendo “mira lo que se han comprado en el Senado por 430000 eurazos” y te encuentras el sitio auténtico mostrando el inmortal clásico de las pintadas: “tonto el que lo lea”.

¿Es la nueva web del Senado insegura? ¿Hemos pagado casi medio millón de nuestros escasos fondos para que unos hackers vietnamitas modifiquen la constitución y hagan a Rambo jefe del Estado español —para echarse unas risas? Hasta donde sabemos, este fallo no ha permitido ejecutar código —ni maligno, ni de ninguna otra clase. Solo mostraba rótulos que debían estar pegados en una dirección “especial”, donde podían verse si se miraba con un poco de detenimiento. La web en sí no se vio alterada. Es una versión particularmente inocua de vulnerabilidad XSS no persistente.

¿Importa?

No, mientras nadie encuentre algo más grave. El problema concreto parece ser una soberana tontería, que sin duda podrá corregir un becario —o un programador senior de salario equivalente. Lo que no es ya nimio es que la calidad del código de la web sea tan pobre. Que se haya optado por desarrollar componentes en lugar de usar otros que ya existen en el mercado, incluso sin costes de licencia. Que todo el contenido del Senado anterior a la nueva web haya desaparecido de los buscadores. Que exista en la web una directiva que prohíba a esos mismos buscadores indexar sus nuevas páginas. Que, según las condiciones de uso, un usuario no pueda alterar la apariencia de la web —ni siquiera para usar tecnologías de accesibilidad para discapacitados. Que no se haya optado por tecnologías abiertas y auditables por cualquier interesado en una de las instituciones públicas más visibles del Estado (iba a escribir “importante”, pero me ha dado un calambre).

Todo eso es subsanable. Me gusta decir que en informática todo tiene solución: solo hay que echar horas y euros. Desgraciadamente, el Senado de España se comporta como si le sobraran los euros. Cualquiera diría que eso no se ajusta a la realidad. ¿Le sobrarán también muchas horas?

19 Comentarios

Participa Suscríbete

Ender Wiggins

una puntualización:
esto ni siquiera es XSS no persistente/indirecto, si somos estrictos:

“XSS, del inglés Cross-site scripting es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte inyectar en páginas web vistas por el usuario código JavaScript o en otro lenguaje script similar ”

Lo que se inyecta no es código de script. Es una frase de texto corriente y moliente. de hecho, si intentais poner cosas en javascript, la página las filtra sin problemas.

Un XSS indirecto es esto:

XSS indirecto (wikipedia)

El caso del senado es un parámetro GET en el que se les ha olvidado limitar la lista de posibles valores a las letras del abecedario. Ni más, ni menos.

Si fuese un XSS, se podrían hacer barbaridades; redireccionar al usuario a una tercera página, modificar cookies…que sí es un verdadero problema de seguridad. Y si el XSS fuese persistente (=se pueden insertar valores en BBDD, por ejemplo) no te cuento.

En resumen:

XSS no persistente:hackeo que se ve solo en tu ordenador. puede ser peligroso.
XSS persistente: hackeo que se ve en todos los ordenadores, no solo en el tuyo. peligroso y vergonzoso.
esto del senado: el equivalente a poner un post-it en la pantalla de tu pc con una frase y decir que lo has hackeado.

Iván Rivera

El fallo está ya parcheado, por lo que no podremos comprobar si no existía alguna forma de burlar el filtro de la página para ver si no se podían inyectar scripts. De momento puedes echar un vistazo a la web del Congreso, que tiene el mismo error en un sitio muy similar y, según parece, permite al menos incluir CSS e insertar imágenes externas.

Ender Wiggins

(de hecho, me apostaría dinero a que la solución ha sido, si usaban expresiones regulares, limitar ese parámetro a longitud 1, y si no, hacer un substr :-))

Ender Wiggins

hm, ya veo la vulnerabilidad del congreso…aparentemente, no admitirá scripting (voy a investigar más); la vulnerabilidad consiste en que escriben el parámetro en el src de una imagen

voy a ver si se puede meter javascript en el src de las imágenes >:-)

Ender Wiggins

por cierto, gracias al usuario de twitter < href=”https://twitter.com/polpitart”>polpitart, que me ha pasado otra vulnerabilidad de texto, se pueden hacer cosas graciosas en la web del senado todavía:

los senadores, ganándose un sobresueldo

Yo diría que tienen un sanitize centralizado para los intentos de inyectar javascript (que sigue sin funcionar, tampoco en esta ocasión), pero claro, si usas parámetros del GET para escribir directamente en pantalla…

Francis

No lo he comprobado, pero si es verdad que la web del Senado no permite el uso de “tecnologías de accesibilidad para discapacitados” entonces la página web es ilegal según la Normativa de la CEE y es denunciable.

Y debe ser denunciada.

jo_mateixjo_mateix

¿pero que decis? es un fallo garrafal inaceptable. Esto solo demuestra el chapucerismo general, y probablemente el amigismo y desvio de fondos publicos. Y mas considerando que ha costado medio millon de euros la paginita.

¿que es la primera web que hacia la empresa a la que se lo han encargado?

Un programador cualquieraUn programador cualquiera

Bueno, los programadores somos así; hacemos cosas por si acaso las usamos luego y porque queda elegante. Somos unos estetas.

Que risas me he echado. Gracias por el artículo, me encanta como escribes.

Foro Vietnam

Una pena la cantidad de dinero perdido digo invertido. Si todos las personas que hacen páginas web cobraran la mitad de ese dinero, bastarían 2 webs para comprarse un chalet en la moraleja y un ferrari.

TudTud

Este es un fenómeno que realmente merece un poco de investigación, y no lo digo en coña:
-Página de <1.000€: bodrio (la hace alguien con el Dreamweaver y un tutorial de PHP en unos días).
-Página de 1.000€ a (pongamos) 50.000€: buena (la hace un grupo mayor o menor de profesionales).
-Página de >>50.000€: bodrio (la hace una empresa tipo cárnica).

Supongo que estará muy relacionado con, por ejemplo, las máquinas de billetes media distancia de Renfe, que están estropeadas más de la mitad del tiempo (si, no exagero en absoluto, de hecho podria ser hasta 2/3 del tiempo).

baztunbaztun

Parece que lo de ponerlo sin www está ya arreglado, al menos hacen caso y van arreglando los fallos, eso si, ahora está caida (DDOS???).
Me recuerda al soft en general, que últimamente parece que por las prisas de ser el primero sale en fase “beta” y luego ya lo arreglarán (con suerte).
Claro eso en mi pueblo se conoce como chapuza, pero en fin.

pablopixelpablopixel

Lo más escalofriante sin duda es: … que podrá corregir un becario —o un programador senior de salario equivalente …

SergioSergio

Es solo a mi o la pagina del senado a las 7:24 no funciona??
LO SENTIMOS
La página que ha pedido no existe o ha sido borrada del servidor.
500.000€??!!!!!!!!

¡Ánimo en la huelga desde el extranjero!

la_we_mal_mundola_we_mal_mundo

Yo he trabajado haciendo sitios web y otras cosas para privado y público.
Después de haber mirado la página me puedo imaginar por mi experiencia lo que ha pasado.

El sitio hay que reconocer que tiene un estilo bien parecido. aunque no he examinado ni su código ni su accesibilidad. No se que tipo de backend tendrá.
Pero todo empieza cuando una persona(del senado) que sabrá de leyes pero de informática ni puta idea se le ocurre hacer una web. ….
Seguramente no habrá pedido ni presupuesto y desde la empresa habrán empezado a trabajar.

Seguramente después de haber hecho algo un un cms y mostrárselo más o menos con los parámetros que les han dado, seguramente, habrán empezado a liar las cosas, porque ellos tienen una manera absurda de ordenar la información, que no es válida para un informático, pero el cliente manda. Y por el camino se le habrá ocurrido la idea de hacer una visita guiada y seguro que algún tipo de sistema de administración de contenidos interno para su tienda virtual.

Pero para que una visita guiada?
Para que una tienda en un senado?
Para que una web para niños?

Sin embargo los datos de transparencia son bastante flojos…

Y como seguro que nada encajaba dentro del paradigma del CMS y el jefe de la empresa quería avanzar lo más rápido posible, por presiones, al programador no le habrá quedao otro remedio que empezar de cero y programarse desde 0 un CMS particular cosa que se dilata en el tiempo.

Pero además para la visita virtual quieren unas panorámicas, entonces habrán contratado un buen fotógrafo bien caro que habrá sacado fotos de todo eso.

Y después de acabar todo, seguro que el estilo y el diseño no le gusto a cierto senador o a otro y vuelta a cambiar. Y después de todo eso, se les ha ocurrido la genial idea de meter una mini web para niños con juegos en flash . Porque los niños seguramente quieran dejar sus consolas e interesarse por el senado(Ironía), y solo se puede conseguir a través de otra web a parte con otro estilo.

Y me imagino para el pobre programador que después de haberse currado todo y que cobrara 1000 eurazos al mes , después de leer este articulo se ira deprimido y frustrado a su casa.

Y seguramente habrán ido añadiendo cosas al buen tun-tun. Porque los políticos no se toman en serio el trabajo de los demás y cuando les puedes dar a elegir se comportan como niños con los reyes magos, quieren todo lo que ven. Y claro depués viene la dolorosa después de un año de trabajo y agotamiento emocional. Y desde el punto de vista de una empresa estoy seguro que realmente le ha costado ese dinero. Pero como a los señores senadores nunca han visto el precio normal de un sitio y el tiempo medio de realización pues se la ha pelado. Total no es su dinero….

Además seguro que el empresario sera amiguete, pero no barato.

Tienen consejeros para todo, menos para esto….

la_we_mal_mundola_we_mal_mundo

Aún así…manda huevos 500.000 da para mucho. Creo que lo máximo que he visto cobrar en web han sido 24000…

Las empresas suelen cobrar por hora invertida, si no hay presu que delimite.

8€ h del programador (suponiendo que controla de todo, eso pasa mucho en este país)
8€h del diseñador
30€h que se lleva la empresa a parte.
fotógrafo???

No estoy contando, reuniones con los senadores y esas cosas….ni las horas del jefe y otros empleados necesarios

46€h
horas=500000/46=10869 horas
10869/8horas diarias= 1358 días de curro
1358 dias de curro / 365=3,7 años de trabajo…..

Es una estimación, conociendo el tejido explotador de este país.

Pobre programador, encima se llevara todas las ostias….

2 Trackbacks

Deja un comentario

Tu email nunca será mostrado o compartido. No olvides rellenar los campos obligatorios.

Obligatorio
Obligatorio

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <p> <q cite=""> <strike> <strong>