Fuente: Hispasec
Autor: Sergio de los Santos
Publicación realizada con autorización de la fuente.

Creo que no soy el primero que se ha dado cuenta, pero no he visto demasiada información al respecto. Tampoco que se le haya dado la importancia que pienso que merece. En estos momentos y desde hace tiempo, borrar un twitter es “inútil”. O lo que es lo mismo: cuando envíes algo a twitter, mejor no te arrepientas..
Tengo una cuenta que uso exclusivamente para pruebas. Ensayando, escribí unas instrucciones para la botnet en forma de tweets, y los borré. No estuvieron más de unos minutos colgados. Algunos tweets estuvieron online segundos, literalmente.

Dos días después, descubro que todo el mundo puede acceder a esos tweets de prueba borrados 48 horas antes… y se quedaron ahí una semana.

Lo descubrí porque por casualidad, busqué mi cuenta en el iPhone y me devolvió los resultados con todos los tweets borrados. No estaba registrado con esa cuenta en ese momento. Volví a la web a buscar lo mismo. No aparecían.

Volví al iPhone. Allí estaban de nuevo. Al alcance de cualquiera. ¿Por qué en el iPhone me encontraba tweets borrados y en la web no? La diferencia es que el programa del iPhone utiliza la API de búsqueda que twitter pone al alcance de los desarrolladores. No conocía la URL exacta así que hice pasar el tráfico por un proxy. La petición devuelve un json con los resultados.

Obviamente, consultando esa URL con la cadena de búsqueda deseada desde un navegador cualquiera, devuelve el mismo resultado: los tweets borrados están ahí para el que los busque desde cualquier punto, sin necesidad de tener conocimiento de la API ni usarla específicamente en un programa.

Afortunadamente, no se puede “formar” una URL típica de acceso directo a los tweets.

Poco después tuve la oportunidad de volver a comprobar este comportamiento “involuntariamente”. Escribí con una errata en el nombre de un compañero. Apenas un segundo después de enviarlo, borré el erróneo, y lo corregí en un nuevo tweet. Cuatro horas después, una búsqueda con la API devolvía la entrada borrada. Esta estuvo menos tiempo accesible. No fue una semana pero sí unos tres días. Tampoco estuvo disponible “inmediatamente” después de borrarla, pero sí unos minutos después.

La segunda entrada en la imagen, fue borrada un segundo después de enviarse, pero sigue disponible horas después. Lo que puede estar ocurriendo es que twitter indexa (y “cachea”) en su base de datos los tweets nada más ser enviados. Luego, los marca como borrados para no mostrarlos. Pero el contenido de los tweets queda almacenado. El sistema de búsqueda de la API, parece ignorar este punto y muestra todo, incluso los marcados como borrados. Aunque supongo que será por razones de rendimiento es, a mi juicio, un error.

¿Y durante cuánto tiempo? Pues no lo sé. Las búsquedas de tweets, por lo que veo, suelen devolver aproximadamente hasta una semana. Por tanto, sospecho que los tweets borrados dejarán de aparecer al ser buscados con la API como máximo, cuando pase ese tiempo. Otros (como el ejemplo de la imagen) parecen estar disponibles menos tiempo. Según tweetbackup.com: “[?] Tweeter API bug; only your most recent 3200 tweets are searchable either via the Tweeter API or the Tweeter website.”

Para empeorar el asunto, existen numerosos robots que buscan en twitter con la API (con el propio tweetbackup), cacheando resultados a su vez en sus bases de datos. Con el comportamiento actual, si escribes y envías algo que se queda en el servidor aunque sea un segundo, se mantendrá como mínimo unas horas en las búsquedas de la API. Tiempo más que suficiente para que cualquier crawler (por muy perezoso que sea) llegue a ese contenido y lo almacene a su vez en su base de datos.

Por poner un ejemplo análogo, imaginemos que la caché de Google funcionase igual. Cualquier contenido colgado en Internet, aunque fuera durante un segundo, aunque fuese una errata cometida al escribir en un foro, aunque se tratase un error de maquetación borrado un minuto después… quedaría almacenado en su caché y por tanto accesible por todos durante unos días. ¿No sería injusto?

Como conclusión: piensa bien antes de escribir en twitter. Sus búsquedas son traicioneras.