Au détour de la configuration de mon proxy je me suis rendu compte d'une chose plutôt étrange .... Sans épiloguer sur ma soirée et son déroulement, j’étais en train d'échanger avec un ami à travers mon client Pidgin. J'ai configuré ce dernier pour qu'il puisse utiliser mon compte facebook et ainsi accéder, sans utiliser l'interface, à la liste de mes contacts( pour faire plus court, j'utilise le service XMPP de facebook à travers mon client :)). J'avais donc une conversation que nous pourrions qualifier de privée. Je précise tout cela pour avoir une idée du contexte.
Au détour de la conversation je lui envoie un lien pointant vers un des sites que j’héberge sur un serveur.
Il se trouve que j'avais un fichier de log ouvert en arrière plan, je vois donc la trace de la requête de mon interlocuteur déclenchée au clic du lien que je lui ai écris précédemment.
Et là très grosse surprise... Le lien ne correspondait absolument pas à celui que j'avais renseigné...

ainsi, là où j'avais indiqué une adresse de type http://domaine.com, mon interlocuteur a reçu pour sa part ce lien http://domaine.com (l'idéal étant de copier/coller les 2 liens dans un bloc-note pour apprécier la différence).
Il est à noter que pour mon exemple j'ai utilisé un champ h aléatoire ne sachant pas à quoi il correspond mais semblant lié à mon profil personnel. Pour cette raison le résultat ici, est d'être redirigé vers une alerte facebook vous informant d'un rebond vers un autre site. Dans le cas d'un champ h valide; la redirection se fait en totale transparence. le premier champ u correspondant à l'adresse du site à atteindre, h semble correspondre à une sorte de hash entre le profil et quelque chose d'autre (ou pas). Il semble même possible de réutiliser la variable "h" en modifiant le contenu de "u".
C'est à s'y méprendre les mêmes me direz-vous. Et pourtant, l'un pointe directement chez moi, tandis que l'autre fait un petit détour par facebook pour enfin revenir chez moi. Tout ceci je le rappelle se passe sans utiliser l'interface web de facebook.
. Voici ici le protocole de tests utilisé :

Test 1

Objectif :
  • identification et tentative de localisation d'une réécriture
Contexte :
  • Les 2 clients utilisent l'interface web facebook
Validation du test :
  • client A écrit manuellement un lien et l'envoi à client B
  • client B copie/colle le lien au format texte pour visualiser le lien présent dans le href généré
  • client A copie/colle le lien au format texte pour visualiser le lien présent dans le href généré
Résultat attendu :
  • le lien reçu par client B est réécrit.
  • le lien affiché par client A n'est pas réécrit.
interprétation si le test est valide :
  • Il y a réécriture des url au travers du service Facebook semblant intervenir au moment de la réception de par client B. En effet le lien affiché dans la fenêtre de conversation du client émetteur du message n'est pas modifié.

Test 2

Objectif :
  • localisation de la réécriture.
Contexte :
  • Client A utilise un client XMPP et accède au service avec son compte Facebook.
  • Client B utilise l'interface web facebook
validation du test :
  • Client A envoie un message a client B
  • Client B envoie un message a client A
Résultat attendu :
  • le lien reçu par client A n'est pas réécrit
  • le lien reçu par client B est réécrit
interprétation si le test n'est pas valide :
  • Il y a réécriture des url et ce uniquement au travers de l'interface web facebook.

MITIGATION : Il suffit donc d'utiliser directement le service XMPP sans passer par l'interface web facebook pour ne plus subir cette réécriture d'URL.

Bien évidement, il s'agit la de collecter une fois de plus des données, on ne sait pour quel usage. Mais bon comme dirais l'autre : "t'as signé, c'est pour en chier !" :). Une des implication de la pression de la touche "Accepter" en bas de page d'inscription de votre fournisseur de service préféré...
Personnellement, ce qui me dérange ici le plus c'est qu'il s'agit clairement d'une manipulation de mon message pour en réécrire la substance... Bref encore un truc qui m’énerve ! Méchant ! Méchant facebook! Pas beau va !

Pour la solution de contournement, elle est simple :) : chiffrez vos échanges ! on ne le répétera jamais assez. Il ne s'agit pas là d'une quelconque psychose ou je ne sait quel autre argument en bois, (ah j'oubliais l’éternel "j'ai rien à cacher" ou l'excellent "tu fais des trucs pas clairs"), mais belle et bien d'une réelle alternative à toutes ces problématiques de protection des données, ou encore le respect de la vie privée ou je ne sais quoi.
Il s'agit ici de s'assurer que le service effectue son travail de fournisseur en toute neutralité, et que nous conservions la maîtrise de notre contenu. Notez bien que le principe s'applique de façon relativement transparente sur les mails ainsi que la messagerie instantané.
Utilisons donc le service que nous souhaitons, qu'il s'agisse du numéro un mondial ou de votre serveur dans votre placard, mais arrêtons de dépendre de la faiblesse de ce fournisseur. La mise en place prend certes un poil plus de temps, mais le gain est immense !
Pour faire cela,avec les outils de messagerie instantané, j'utilise le client multi protocole Pidgin avec son excellent plugin pidgin-encryption. ça prend 5 minutes à installer et c'est transparent dans l'usage quotidien. Foncez !! :D

Liens connexes :