Bitácora de fernand0 Cambiando de aires

Tiempos complicados, malos comportamientos y vigilancia

Expo. Máscara

Vivimos tiempos verdaderamente complicados. Aunque no entraremos en los detalles más técnicos, este verano fue noticia el casi conseguido ataque a un conjunto de programas desconocidos por la gente menos técnica, pero muy importantes en muchas distribuciones de Linux (xz utils). La cosa tiene casi las características de una película de intriga, porque el análisis posterior de la cosa nos muestra como alguien se infiltra en un proyecto de software libre, con tácticas de ingeniería social (esencialmente dar la lata, presionar, …) consigue hacerse con el control del proyecto e insertar código malicioso; pero no de cualquier manera, porque lo esconcía en alguna parte de la batería de pruebas, despistando a cualquier examinador que intentara encontrar algo raro. Pero algo raro había, porque un desarrollador de Microsoft se da cuenta que una determinada operación tarda más tiempo de lo que debería y, tirando del lío, descubre el problema. Justo cuando esos programitas ya habían empezado a entrar en las actualizaciones de las distribuciones, pudiendo ser un peligro muy importante.

En Jia Tan and SocialCyber ilustran el caso desde una perspectiva interesante, que es la actividad de las personas que contribuyen a este tipo de proyectos. No sólo desde el punto de vista puramente ténico, sino a través de otras señales que se pueden observar.

Jia Tan era el nombre de este contribuidor (seguramente un equipo) que estuvo a punto de liarla gordísima.

Pero aquí nos queremos centrar hoy en el punto de vista de los indicios cuando algo va mal, porque en el desarrollo de los programas hay una parte técnica y tecnológica, claro, y otra parte que podemos llamar ‘social’. Esto es, están las instrucciones y las líneas de código, la interacción con los repositorios donde se pone el trabajo en común…. pero también están los mensajes que se intercambian, la red social de personas que se relacionan directamente con el trabajo de desarrollar …

..., and that software includes both the technical artifacts (aka, the commits) and the social artifacts (messages around software, and the network of people that build the software), holds true to this day, and has not, in my opinion, received the attention it deserves.

En el caso del tal Jia Tan, si prestamos atención a los detalles podíamos ver:

  • Problemas en la línea de tiempo (fechas/horarios que no son compatibles/razonables).
  • Medidas de la actividad del usuario en cuestión.
  • Modificaciones en ‘zonas’ del código que normalmente no tocan.
  • Amistades ‘peligrosas’.
  • Verificación de las direcciones de correo electrónico utilizadas, a través del análisis en los sitios de divulgación de incidentes relacionados con ellas (ahora resulta que si tu dirección de correo no aparece en ningún indicente hay bastantes probabilidades de que sea peligrosa).
  • Comparación de similaridades con otros programas maliciosos
- Time zones (easily forged, but often forgotten), sometimes you see "impossible travel" or time-of-life anomalies as well - Pagerank (measures "importance" of any user in the global or local scope of the repo). "Low" is relative but I just pick a random cutoff and then analyze from there. - Users committing to areas of the code they don't normally touch (requires using Community detection algorithms to determine areas of code) - Users in the community of other "bad" users - Have I Been Pwned or other methods of determining the "real"-ness of an email address - especially email addresses that come from non-corpo realms, although often you'll see people author a patch from their corpo address, and commit it from their personal address (esp. in China) - Semantic similarity to other "bad" code (using an embeddings from CodeBERT and Neo4j's vector database for fast lookup)

Podemos estar de acuerdo en que no siempre es muy sencillo hacer estas comprobaciones y menos todavía si no somos personas de perfil técnico; pero también lo estaremos en que podemos detectar situaciones ‘raras’ prestando un poco de atención y haciendo las preguntas o las indagaciones correctas. Y eso está en la mano de casi todo el mundo.

Apasionante.

Sobre el ataque se puede leer en The Mystery of ‘Jia Tan,’ the XZ Backdoor Mastermind.

Los modelos de lenguaje, los datos y las instrucciones

Velas

Uno de los problemas fundamentales en la seguridad informática aparece cuando por el mismo canal de comunicación aparecen información y datos de control (instrucciones): aunque los marques para diferenciarlos, alguien lo hará mal alguna vez o alguien encontrará una forma de saltarse las medidas que pongamos.

Cuando hablamos de inteligencias artificiales estos días casi siempre nos referimos a los modelos gigantes de lenguaje (large language models, LLMs) y Bruce Schneier nos hablaba del problema en LLMs’ Data-Control Path Insecurity.

Comienza recordando que las primeras centralitas telefónicas eran vulnerables al problema y cómo alguna gente enviaba tonos especiales que les permitían llamar gratis.

Back in the 1960s, if you played a 2,600Hz tone into an AT&T pay phone, you could make calls without paying.

El problema era el que comentábamos: por la misma línea iban los datos (el sonido de la llamada) y la información de control (esos tonos y otros que se usaban).

This general problem of mixing data with commands is at the root of many of our computer security vulnerabilities.

Es el mismo problema que la inyección de SQL, los desbordamientos de memoria… que son un poco técnicos para ponerlos aquí.

Cuando han llegado los modelos de lenguaje, se ha empezado a hablar de la inyección de preguntas (prompt injection) y la idea vuelve a ser la misma: el mismo canal que nos sirve para interrogar al modelo, permite controlar determiandas formas en que responderá. Por lo tanto, alguien podrá engañar al modelo para que proporcione información que no debería.

Prompt injection is a similar technique for attacking large language models (LLMs). There are endless variations, but the basic idea is that an attacker creates a prompt that tricks the model into doing something it shouldn’t.

Es relativamente sencillo tratar de evitar estos ataques cuando se conocen, pero el problema es que hay muchas formas en las que esto puede suceder y esto es, en sí mismo, un problema.

Individual attacks are easy to prevent once discovered and publicized, but there are an infinite number of them and no way to block them as a class.

Además, y a diferencia de los sistemas previamente mencionados, no es posible separar en estos sistemas los datos de las instrucciones, porque justo esa es una de sus características: queremos que los datos cambien el comportamiento de la cosa.

But unlike the phone system, we can’t separate an LLM’s data from its commands. One of the enormously powerful features of an LLM is that the data affects the code. We want the system to modify its operation when it gets new training data. We want it to change the way it works based on the commands we give it. The fact that LLMs self-modify based on their input data is a feature, not a bug. And it’s the very thing that enables prompt injection.

Muy interesante.

La inteligencia artificial y algunos argumentos alrededor de ella

Decoración galería comercial

Me gustó escuchar la intervención de Simon Willison en la PyCon US sobre inteligencia artificial. Ha puesto a disposición del que quiera verlo una transcripción con imágenes que creo que puede ser muy interesante: Imitation Intelligence, my keynote for PyCon US 2024. Se puede escuchar/ver en Keynote Speaker - Simon Willison.

Empieza desde los oríenes de la IA (eso me gusta) allá por el año 1956 (desde que tenemos computadoras hay gente pensando en que podrían pensar) y reformula el término de inteligencia articial de los modelos grandes de lenguaje (LLMs) como inteligencia emulada. Y no para despreciarla, sino para poder trabajar a partir de ese concepto.

When discussing Large Language Models, I think a better term than “Artificial Intelligence” is “Imitation Intelligence”. It turns out if you imitate what intelligence looks like closely enough, you can do really useful and interesting things.

Pero sin olvidar que no son inteligentes, sino que simplemente imitan lo que se les ha mostrado previamente.

It’s crucial to remember that these things, no matter how convincing they are when you interact with them, they are not planning and solving puzzles... and they are not intelligent entities. They’re just doing an imitation of what they’ve seen before.

Habla un poco de los diversos aspectos que pueden preocuparnos de la IA (licencias, sesgos, las preguntas -prompts- y sus riesgos de seguridad, da algún ejemplo …

Finalmente, hace otra reformulación cambiando lo de inteligencia artificial generativa en inteligencia artificial transformativa, porque considera que la aplicación más interesante es justamente esa: proporcionar grandes cantidades de texto y utilizarlo para evluar y hacer cosas con ello.

I think the most interesting applications of this stuff when you feed large amounts of text into it, and then use it to evaluate and do things based on that input.

Termina hablando de ética, desde la procedencia de los datos de entrenamiento (que no le preocupa demasiado) pero también cómo se utiliza para generar contenidos y, si estamos en ese lado, la pregunta sería si estamos generando algo valioso con la IA o simplemente aumentando el contenido automáticamente sin proporcionar nada de valor. Esto es, ¿la usamos de manera responsable?

I love this term. As a practitioner, this gives me a mental model where I can think, OK, is the thing I’m doing-is it just slop? Am I just adding unwanted AI-generated junk to the world? Or am I using these tools in a responsible way?

También habla del fraude (cheating), en particular entre los estudiantes. Nos dice: es malo porque les hace daño (si eres un estudiante y estás usando estas herramientas para que parezca que sabes algo que realmente no sabes, eso es un problema) y, además, es malo porque les puede estar dando una ventaja frente a otros.

I think there are two reasons. Firstly, it hurts them. If you’re a student who cheats and you don’t learn anything, that’s set you back. Secondly, it gives them an unfair advantage over other students. So when I’m using this stuff, I try and bear that in mind.

También habla de compartir las preguntas (al estilo de compartir código) y lo interesante que son estas herramientas a la hora de programar (es un foro de programadores, al fin y al cabo) por la sencilla razón de que la sintáxis y la gramática de los programas es muchísimo más simple que la de los lenguajes naturales y eso hace que funcionen bastante bien.

It turns out language models are better at generating computer code than they are at generating prose in human languages, which kind of makes sense if you think about it. The grammar rules of English and Chinese are monumentally more complicated than the grammar rules of Python or JavaScript.

Y se pregunta si habremos llegado al punto donde no es necesario ser un ingeniero para automatizar tareas aburridas.

This offends me. You shouldn’t need a computer science degree to automate tedious tasks in your life with a computer.

Pero esto también es una responsabilidad: que nadie se quede atrás, que tenemos que ayudar a otros a aprender, comprender y manejarse razonablemente en este nuevo mundo.

I think that means we have a responsibility not to leave anyone behind, to help pull other people up, to understand the stuff and be able to explain it and help people navigate through these weird (and slightly dystopian at times) waters.

Muy interesante.

Willison es un viejo conocido por aquí, aunque veo que no lo he enlazado apenas. Por ejemplo, en 2008, Sitios para visitar en Londres (para geeks).

Abundancia de información, difusión, y granularidad

Me llevan los demonios cada vez que veo a una organización compartiendo información de alguna actividad (en formato visualmente muy atractivo, o no, pero bastante inútil de imagen; muchas veces) en redes sociales, pero buscas información en la web (su web, en muchos casos, abandonada y triste porque la última actualización es de hace meses o años) y no la tienen. Así que me pareció casi de ciencia ficción leer The Fediverse of Things que habla de instituciones que no sólo tienen buena información, sino que además la difunden en medios abiertos y con una granularidad máxima porque además resuena con algunas ideas de cosas que se podrían hacer por aquí.

Nos cuenta, por ejemplo, el caso del Museo de San Francisco (Holding Hands with the “Fediverse” – ActivityPub at SFO Museum) que han lanzado unos cuantos bots informativos en el ‘fediverso’ (mastodon y otras plataformas) que van publicando de manera automatizada diversas informaciones sobre objetos del museo. Información como: cosas que han ocurrido recientemente relacionadas con objetos de la colección de aviación del museo, hechos ocurridos con relación a las terminales, y finalmente, hechos relacionados con vuelos que llegan y se van de San Francisco.

As mentioned these are automated, low-frequency, accounts and, currently, only a limited set of interactions are supported: Accounts can be followed or unfollowed, individual posts can be “liked”, “boosted” or replied to but those replies will not be answered (yet) or published on the SFO Museum websites. To get started we’ve created three “groups” of accounts. They are: Things which have happened recently involving the SFO Museum Aviation Collection; Things which have happened in the terminals (new and old) and; Things from the collection which are related to flights in and out of SFO.

También nos recuerda el caso del ‘correo arbóreo’ (The Melbourne treemail phenomenon) donde nos contaban cómo se asignó un identificador a cada árbol gestionado por el ayuntamiento y una cuenta de correo asociada, donde se podían mandar mensajes sobre su estado (está perdiendo hojas, se ha estropeado, …). Incluyendo fenómenos emergentes como cuando la gente empezó a usar esos correos para ‘hablarle’ a los árboles. Algo como ‘cuando me iba del colegio, me quedé parado, no por una rama, sino por tu belleza radiante…’

"As I was leaving St Mary's College today I was struck , not by a branch, but by your radiant beauty. You must get these messages all the time. You're such an attractive tree,"

Por cierto, que sin ser exactamente eso, me gustó mucho saber hace algún tiempo que existía Huesca ciudad entre jardines, que es un catálogo de los árboles de la ciudad.

También nos cuenta sobre Twitter y @uktrains (I invented tweeting trains (probably) que también es inspirador. Se comparten (se compartían) diversas incidencias en los ferrocarriles británicos.

In 2009 I built @uktrains, the first (to my knowledge) service to share rail travel disruption alerts on Twitter. It covered the whole of the UK, using official data sourced from the BBC that rail operators weren’t (yet) sharing.

Al final, si tienes información disponible puedes divulgarla utilizando diversos mecanismos. El autor nos recuerda el concepto de la Internet de las cosas (Inernet of Things, IoT) y la versión ‘cercana’, la intranet de las cosas (porque podría ser útil para nosotros, pero poco adecuado para el resto conocer, por ejemplo, el estado de nuestras bombillas).

Y, claro, se pregunta (y nos podemos preguntar) si no podrían los responsables de los servicios dotarles de cuentas informativas, algo como @parada23@ayuntamiento_de_ciudad.es y similares.

On the one hand, it would be nice to be able to follow @Yellow_Line@Transit_Authority.gov - or even @Bus_Stop_1234@bus_company.biz - that would allow for hyperfocused data getting to the right people.

Es cierto que existen aplicaciones (ay, aplicaciones, que tenemos que instalar, configurar, …) y otros sistemas más o menos afortunados.

Es un tema que me provoca mucho interés y algunas ideas he tenido, que ya he llevado a cabo, y otras que no termino de ver la forma de enfocar (es importante la información, pero también es importante la forma en que se presenta, los momentos, …). Me permito aquí recordar la existencia de algunos proyectos en esta línea que voy manteniedo, como:

  • medalleroESP (está en otras redes también, pero sigamos con el fediverso), que va publicando las medallas que ganan en las olimpiadas los deportistas españoles.
  • botelectrico, que va publicando cada hora la tarifa PVPC de electricidad en España.

¿Se os ocurren otras ideas de proyectos que podríamos realizar? A mi me parece interesante el tema del transporte (trenes, tranvía, autobuses, aviones,… ) pero a lo mejor hay otros temas que podrían considerar.

Por cierto, que empieza hablando de las dificultades que tuvo uno de los autores al intentar hacer los bots en Twitter (un número verdaderamente, grande, claro) y me recuerda las sucesivas dificultaes que ha ido poniendo Facebook para hacer este tipo de cosas (sin evitar en absoluto que los ‘malos’ hagan sus cosas malas).

I was out with a friend who worked for Twitter and I asked them whether it would be possible for the museum to “create 200,000 Twitter accounts, one for each object in the Cooper Hewitt’s collection”. My friend looked at me for a moment, laughed, and then simply said: No.
2024-09-01T21:03:02.360810 image/svg+xml Matplotlib v3.9.1.post1, https://matplotlib.org/

Podcasts y oportunidades... ¿Perdidas?

Auriculares. Después. Opá yo vi a escuchar un podcast.

Llevamos una temporada en la que la palabra podcast es de uso habitual, curiosamente, en un momento en que muchos dejaron de serlo. No es que yo vaya a ponerme a dar carnés de lo que es o deja de ser, pero lo cierto es que en muchos casos se llaman podcasts a grabaciones de audio (algunas incluyen vídeo) encerradas en alguna plataforma (Spotify, Amazon, …). Tampoco digo que la gente no tenga derecho a encerrar sus ‘programas’ donde mejor le parezca y traten de ganar dinero con ello (‘monetizar’), pero la cosa va quedando cada vez más coja y ‘desinternetizada’.

Por eso traigo aquí el texto de Anil Dash, “Wherever you get your podcasts” is a radical statement que habla un poco del tema y de cómo la posibilidad o no de escuchar estas grabaciones donde y cómo más nos convenga puede ser relevante, porque podemos terminar con la cosa en manos de unas pocas empresas, que puedan decidir qué escuchamos y qué no:

But here's the thing: being able to say, "wherever you get your podcasts" is a radical statement. Because what it represents is the triumph of exactly the kind of technology that's supposed to be impossible: open, empowering tech that's not owned by any one company, that can't be controlled by any one company, and that allows people to have ownership over their work and their relationship with their audience.

Nos recuerda que el podcasting nació con la web social, y con la idea de crear sistemas abiertos, interoperables con herramientas de otras plataformas…

See, podcasting as a technology grew out of the early era of the social web, when the norms of technology creators were that they were expected to create open systems, which interoperated with tools by other creators and even other companies.

Lo contrapone con otras plataformas como YouTube, TikTok, Twitch, donde los creadores viven a merced de los cambios que puedan hacer estas empresas, dándoles o quitándoles visibilidad. La audiencia no es del creador, es de la plataforma.

Contrast this to other media formats online, like YouTube or Tiktok or Twitch, which don't rely on open systems, and are wholly owned by individual tech companies. On those platforms, creators are constantly chasing the latest algorithmic shifts, and are subject to the whims of advertising algorithms that are completely opaque.

Dash cree que los podcasts resisten mejor estas tentaciones gracias a los formatos abiertos y su portabilidad.

What podcasting holds in the promise of its open format is the proof that an open web can still thrive and be relevant, that it can inspire new systems that are similarly open to take root and grow.

Yo no soy tan optimista porque cada vez veo más sitios que se van dejando características, y llamando podcasts a cosas no tan abiertas. También veo que muchas veces favorecemos la comodidad frente a la apertura y que contribuimos a que estos modelos se amplíen y consoliden. Tampoco me engaño porque ese tipo de modelos son los que trajeron la normalización del término, y seguramente eso le da riqueza. Así que veremos si se cumplen las predicciones de Dash y, efectivamente, sigue siendo un formato más abierto que cerrado, o no.