← All talks

Introducing Man In The Contacts attack to trick encrypted messaging apps

BSides Lisbon · 201650:51339 viewsPublished 2016-11Watch on YouTube ↗
Speakers
Tags
CategoryTechnical
TeamRed
StyleTalk
Mentioned in this talk
About this talk
Mobile messaging applications have recently switched to end-to-end encryption. With debates at the government level to ask for backdoors, those tools are perceived as unbreakable. Yet, most of the implementations trust the contact information stored in the smartphone. Given that end-users hardly know a few phone numbers and that modifying contacts is easy, we will introduce a new type of attack: Man In The Contacts (MITC). Without studying any cryptography, we will examine how WhatsApp, Telegram and Signal behave when an Android application is tampering with the contacts in background. For some scenarios, the end-user can be fooled in talking to the wrong person and a MITM proxy can be implemented. Finally, we will discuss about countermeasures both at the technical and usability levels. About the Speaker: Jérémy Matos has been working in building secure software over the last 10 years. With an initial academic background as a developer, he was involved in designing and implementing a two-factor authentication product with challenging threat models, particularly when delivering a public mobile application. As a consultant he helped in the security requirements definition and implementation, including cryptographic protocols, for applications where the insider is the enemy. He also led code reviews and security validation activities for companies exposed to reputation damage. In addition, he participated in research projects to mitigate Man-In-The-Browser and Man-In-The-Mobile attacks.
Show transcript [en]

Okay, so let's start. Good evening everyone, can you hear me? Yeah, that's fine? Yeah. So, we are gonna talk, thank you for being there so late before we can. So we are going to talk about encrypted chat and privacy and I hope you will enjoy the show. First, a few words about me. I'm not a hacker, used to be a developer, now really focused on security. Je préfère dire que je n'ai pas de bain. C'est un nom portugais, mais je suis français. J'ai travaillé les 10 dernières années en Suisse. Nous parlons de privacité. Suisse est vraiment privacé, surtout pour les banques. Il y a des concerns sur la crypto. J'ai vraiment fait focus sur le mobile depuis 2010. Maintenant, je travaille à mon

propre compagnie. Je peux dire ce que je veux. C'est cool.

And my job is helping people writing less insecure code, let's call it like that. And also helping a bit on everything that's Bitcoin blockchain because there is really, really lots of bullshit nowadays on those technologies. So it's not secure by magic. So trying to help here. So there's been really a lot of fuss this year on encrypted messaging app. Signal, WhatsApp, Telegram, toutes ces grandes entreprises ont changé de l'end-to-end. C'est cool car il y a eu vraiment de bonne communication. Tous les newspapers parlent de ça. Et ça signifie que maintenant, si vous voulez être en chat, vous devez mettre la privacité au centre. C'est vraiment bon pour les droits humains et les gens. Mais peut-être qu'il y a eu trop de publicité autour de ça.

All the governments now are talking about that, they are going dark, they are complaining because they can't have access to all the messages. And especially with all those terror attacks, especially in France, you hear the guys like the government say, hey, we're gonna go and change the law and ask Telegram to give us all our messages and whatever. So it really has lots of traction those days. And for most people, if you listen to the governments, if you listen to the FBI or if you listen to the journalists, you think that it's totally unbreakable because even FBI says well we had to ask Apple, we had to ask WhatsApp, we couldn't get anything so that should be really really super secure. So indeed there is

really really good crypto. I talked later about formal crypto paper on that.

Little diagram that shows all the crypto that's being used a really brilliant algorithm used by Signal. Don't worry, we are not going to dive in details into this kind of stuff. I don't want to lose my time. So clearly for me, I won't try to find something there. There are lots of academic people that have time to do lots of math around it, and most of the time they don't find anything meaningful to attack the system. But it's something quite intriguing to me. I remember four years ago when I installed WhatsApp, You just install it and you don't need any login password or whatever. You get automatically an account that's created. For the history, four years ago, WhatsApp, it used as a user ID your phone

number and then as password it used the reverse of your phone number and an MD file of that. That was really, really a bad password scheme and within two minutes of reverse engineering the Android application, people figured it out and you could connect as anyone. So that's good now that WhatsApp has end-to-end encryption, but yet a few years ago they had really shitty authentication stuff. Did they really change everything when they had set up all their back-end and they were scaling to 1 billion users to add this end-to-end encryption? So it's an open point for me. Something bad also that's proved, yeah, you have programming is done via SMS. SMS is proved to be insecure. So somehow clearly you have, yeah, quelque chose qui n'est pas parfait du

début du design. Quelque chose qui est aussi très clair, vous ne savez jamais comment votre compte est créé. Est-ce lié à votre numéro de téléphone, à votre appareil ? Qu'est-ce qui se passe quand vous changez votre appareil ? Quand vous faites un backup de l'appareil ? C'est vraiment difficile d'avoir une réponse. Et aussi, oui, qu'est-ce qui se passe quand vous changez votre numéro de téléphone ? D'ailleurs, vous avez un téléphone, un numéro mobile, vous laissez la compagnie, vous donnez le numéro de téléphone à quelqu'un d'autre avec WhatsApp, On a tous les collègues qui sont en train de dire à l'autre. Et ils ne le connaissent pas si ils ne changent pas. C'est clair qu'il y

a des choses qui ne sont pas bien faits ici. Et une question d'extra. Et qu'est-ce qu'en contact ? Vous voyez, vous avez un spam. Chaque fois qu'il y a un nouveau contact, en vendant Signal, Telegram, Whatsapp, etc., vous obtenez une notification. Donc à un moment, il est regardé à un contact et il fait quelque chose avec ça, mais vous n'avez pas vraiment de contrôle. Let's say well take Skype or version while you have to explicitly approve an invitation from someone when someone is adding you with WhatsApp and go nothing happens it's like magic and you have no control on it. So that's why I wanted to dig a little into that. So now I propose a really really simple threat model. What's really important is centered on

the mobile and only on the mobile. So the center of the view is mobile here. So if I do it really, really high level, what do you have? So you have your mobile OS here. Let's say you have your messaging app. You have another app like a game. OK, so now what does the messaging app? It communicates to the back end, back and forth. Tout cela est en train de être super sécurisé sur Internet. Même si l'insécriture est ici, ils ne peuvent pas lire tout ce qui est possible. Quelque chose qui est provenant de mal, si vous avez des vidéos sur les attaques, sur les télégrammes, etc. C'est quand vous pouvez ajouter les SMS, au temps de l'installation, si vous pouvez obtenir ce code initial,

vous pouvez appréciper être quelqu'un d'autre. C'est devenu un flou, mais il est toujours comme ça. Vous avez super bon crypto ici, mais ici vous avez quelque chose qui n'est vraiment pas bon. Et encore, rien n'est pas proposé pour l'improuver. Mais ce qui m'intéresse, c'est que si vous regardez le mobile OS, en comparant à un système d'opération d'opération, vous avez vraiment bon de la sandboxing sur le mobile. chaque app est en son contenu et chaque app peut seulement voir son appareil et ne peut pas seulement appeler les choses sur la nette, mais ne peut pas voir les réseaux de la nette. Donc c'est bien fait, excepté pour Contacts. Contacts est clairement comme une barbe. En plus que l'application a permis de faire la permission,

elle peut lire sur ce que elle veut. Donc il n'y a pas de sandbox pour Contacts. Je veux attirer ce point. Donc, accession à contact est super facile. Pour Android, vous avez une API pour cela. L'unique problème est de trouver la documentation de Google. C'est un challenge d'avoir un code de fonctionnement, parce que vous avez tellement de codes de fonctionnement sur Stack Overflow, mais dans quelques lignes, ça devrait fonctionner. Si vous appelez la version bonne. Et l'unique nécessaire, c'est que vous avez juste de déclare la permission de lire et les contacts. Donc, il est restriqué par les permissions dans le manifeste. Et c'est tout. Et puis, du point de vue d'opérateur, dès que vous avez donné

les permissions et l'installation, l'app peut lire et écrire les contacts qu'il veut. Ce qui me dénonce, c'est que ce contact est utilisé pour des données authentiques pour voir qui vous parlez et comment il est important. So there's something clearly that smells bad here. So that's why for me, I clearly thought, yeah, there's room for a side channel attack here. So I decided to call it Man in the Contacts. What happens if someone is playing with your contacts in the background? And my point is, it's going to be really important for the end of this presentation. Please keep in mind, it doesn't require a rooted device. It's not like a super malware that can control everything on the US. Il peut être, par exemple, juste un jeu basique qui a

accès à des contacts. Je ne vais pas utiliser d'un exploit comme le tool de rammer, un 0day ou un autre. Je vais juste utiliser les API qui sont proposées pour un purpose légitime. Alors, allons-y parler d'Alice, Bob et Yves, comme le tout le temps. On a Alice à la gauche, Bob à la droite, Yves à la milieu. You will see lots of diagrams. Bob will always be there. Alice will always be there. This time, Eve, the bad guy, is on iOS. So, yeah, that's why it's cheaper to play with those devices. I still tested end of October. It was still working. You will see a chronology later on for the disclosure. And you will see with the answers of the vendor why it's still working. So

I'm playing with the most popular apps that are supposed to be end-to-end and created apps, WhatsApp, Telegram and Signal. So latest version of OS, latest version of mobile apps. So let's start playing. Old joke. You know when I used to be a teenager, it makes me laugh. I took the phone of a friend and I switched the contact name of his mother and his girlfriend and then you just wait and see what happens. Well at some point you see there's something that's not normal. Let's do it now with WhatsApp or whatever and see what happens. So let's suppose Alice and Bob start talking and then I have my... So I created a really simple Android app. So this one is

visual but you think it can run in the background as a game service or whatever. And so what we're going to do at some points, well Eve will swap his number with Alice on Bob's device and then we see what happens. So let's see with WhatsApp. So we are here, so it's Bob talking, Bob writes to Alice. Alice gives an answer, whatever, and then Eve decides to switch the contact. and sends a message. So here you are in the discussion between the real Alice and the real Bob. You get a notification. The message is this is Eve, but you see it seems to come from Alice. But it's not on the current conversation. There's something strange. OK, so now let's suppose I ignore the notification and now I

see, wow, now I, it's like I'm talking to Eve. That's strange. mais je obtenais un message qui dit que tout est super secure car il est un un-encrypté. Je clique sur la push notification, je vois qu'il vient d'Alice, mais en fait, c'est Yves qui parle. Avec Telegram, exactement la même chose. On obtient un push qui semble venir d'Alice. The only difference is that there is some kind of synchronization on the back end of Telegram. So depending on how fast you switch contacts, you don't have the same behavior. But otherwise you get exactly the same stuff. With signal. The Android apps you cannot make screenshots for security reasons. Sometimes you will see dirty photos of the screen. Don't worry, that's because of that. Mais c'est

exactement le même comportement que WhatsApp. Donc vous avez ce push ici. Et ça semble être confirmé. Pour celui-ci, je peux faire un screenshot. Parce que ce n'est pas le signal. Donc ici, vous voyez le message. Donc clairement, vous voyez que vous avez quelque chose qui est en train de faire. Vous ne voulez pas faire un screenshot parce qu'il pourrait y avoir des données sensitives dans le sujet. Mais encore, dans le push, vous voyez tous les messages et vous pouvez toujours faire un screenshot. Donc c'est un peu clumpsy. Donc ici vous avez cette capture de dirty, donc c'est exactement comme pour WhatsApp et Telegram. La seule différence est que vous avez un numéro de téléphone qui est displayé, et bien sûr le numéro de téléphone n'a pas de

match avec votre contact, donc ça peut sembler très étrange à vous.

Mais dans la vue principale, vous ne voyez pas le numéro de téléphone, donc vous avez Alice ici et Yves ici, et vous ne savez pas qui est Alice et Yves ici. I just want to show you something. So now I stay in this view just to show you what happens. I switch contacts in the background and you see what happens. So you have Eve and Alice at some point, a few seconds after, this is not deterministic, so there is also some kind of synchro, whatever. You have the name of the conversation that's switching.

So first results. Wow. we can't really trick Bob within an existing conversation because we saw there was a push and it drives to a new conversation but here we could trick him what we saw, and for me that's really important you have really different implementations regarding push notifications and how conversations are handled depending on the app so they don't agree on what name should be in the notification it's something that ça peut sembler évident mais ce n'est pas. Donc, supposez que je suis Bob et je vais envoyer un message à Alice. Pour Alice, peut-être qu'Alice m'a appelé super cool friend 1. Et le back-end ne peut pas savoir ça. Donc à un moment, le back-end doit

envoyer un message à Bob. Mais peut-être que Bob, pour Alice, ne signifie rien. Donc ce qu'ils font parfois, Ils prennent tous les noms de contact, les différentes vies, et ils essayent de reconcilier ça dans le back-end et puis dire « Hey, Bob est envoyé à Alice, donc je dois mettre ça dans la notification » et tout ça. Ça peut être déchiré. Et ils ne le font pas de même manière. Pour moi, ce qui signifie c'est qu'il n'y a pas de bon moyen de le faire. Oui, vous devriez toujours faire des trucs et des trics, donc ce n'est pas clean. Et nous aussi voyons que, grâce à cela, il y a une sorte de synchronisation pour

les contacts. il prend un peu de temps, donc il n'est pas aussi pas si clean. Mais bien sûr, même si Bob est fait en parler dans cette nouvelle conversation, après quelques messages, il va se souhaiter que ce n'est pas Alice, car c'est bizarre, c'est comme la mère et la fille qui ne fonctionnent pas bien. Donc, maintenant, allons-y un peu plus loin. Je fais la même chose, mais plutôt que de changer Alice et Yves, Je crée un nouveau contact sur le dispositif Bob et je l'appelle « Space Alice » avec le numéro de téléphone. Et on voit comment cette espace est installée et qu'est-ce que l'utilisateur voit ? Des scénarios que d'abord. Il semble vraiment arriver d'Alice. Ici vous avez

la vraie Alice, « Push Message » et puis vous avez la faite Alice, « Eve ». Vous ne voyez pas de différence. Bien sûr, le blanc est streamé par défaut. Dans la vue principale, il se fait confusant. Il y a deux discussions avec le même nom de contact qui ressemble à l'honneur. Vous ne voyez pas de différence.

Vous commencez une nouvelle conversation avec la faim Alice, mais elle est toujours écrit Alice. C'est une vraie et une vraie. Vous ne voyez pas de différence. And then you have this super message that says, hey, don't worry, you're starting a new conversation. It's super secure because it's totally encrypted. Brilliant choice. We'll discuss about that later.

Telegram, of course, same stuff. Can't see any difference.

Main view, same stuff. Exactly same stuff. Can't see the difference. Signal, capture that. Of course you don't see any difference, so at least they are consistent on some parts. Real Alice, so there is phone number one, in fact Alice, it's deplace as Alice, but you have the other phone number, so you could have some int here that there's something wrong, but this is only for the Android version. On iOS, the guys that developed Signal didn't find useful to display the phone number C'est vraiment drôle. C'est la même compagnie, la même app, et ils ne font pas les mêmes choix de UI. C'est un genre de... Pourquoi ? Pourquoi il devrait être différent ? Pour moi, c'est une vraie sécurité pour l'exprimer. Et si on veut

aller plus loin, si je vous demande combien de numéros de téléphone vous connaissez par cœur, si vous avez des contacts, si vous ne vous rendez pas de l'Hermenia, je pense que beaucoup de gens peuvent être tricotés par ça. Donc, la main vue, bien sûr, la même chose. Deux conversations d'Alice. C'est un bon. Ce que nous avons vu, c'est que si nous créons un contact fake avec un espace devant lui, c'est vraiment plus discrète car vous avez deux contacts. Si la vraie Alice est appelée Bob, il va s'en servir avec un numéro de téléphone et ça va fonctionner. Nous allons le faire avec une nouvelle conversation et un nouveau contact. Donc SMS ne sera pas un

problème ou quelque chose. La seule chose qui rend l'attac un peu plus difficile, c'est que nous devons conduire l'end-utilisation à cette nouvelle conversation. Mais de l'utilisation, de ce que je vois, dès que les gens ont poussé les notifications, ils cliquent sur ça et ça ouvre l'app. Et puis vous êtes conduit à cette nouvelle conversation et c'est tout. Pour moi, c'est quelque chose que je disais vraiment. Pourquoi ça ne fonctionne pas ? Ils me disent que tout est end-to-end, ils ont super cryptos et on peut toujours, avec un truc de malade, on peut fooler les gens. Donc, je suis responsable pour ça. Pour moi, ils utilisent un numéro de téléphone comme identifié. C'est vraiment une bonne chose

de sécurité. Ils disent qu'ils valient la privacité. Ils ne mettent pas les numéros de téléphone en clé sur le back-end, mais ils mettent un hash. Mais les numéros de téléphone sont juste un peu de millions. Donc, trouver le numéro de téléphone de téléphone est super facile parce que vous savez qu'il va y avoir 10 d'égalités. C'est ça, donc c'est pas bon. Et aussi, ce qu'ils font, il y a eu une discussion cette soirée. Ils utilisent TOFU, qui est « trust on first use ». Vous savez quand vous sshz une machine pour la première fois, vous avez un message annoncant qui dit « Hey, please check the key, that's not like that » et en fin, vous cliquez

« Yes ». Ils ne voulaient pas ça pour l'end-useur. Donc, ils disent « Ok, la première fois, no one is going to check or whatever, so approve it » et « Juste the first time » et « Later on, we will check it » Qu'est-ce que ça veut dire ? Quand vous avez un nouveau contact, vous avez une nouvelle « public key » et celui-ci est « trust » de default. So that's why here I have a good paper called Formal Security Analysis of the Signal Messaging Protocol, which was published this week. And they prove that Signal is formally secure. And you've seen that before. That's a bit strange. So now I just take a few sentences out of

it. Signal, which is the name of both an instant messaging app and a cryptographic protocol, In the rest of this paper, we will be discussing the cryptographic protocol only. So they don't give a damn about the mobile app. They're just focusing on crypto. And only crypto. What does it mean? It's here. So they don't care about what's happening to the end user, to his smartphone, whatever. They are just afraid of what's happening on the network on the back end. So basically, they are afraid of NSA. What's happened if someone controls the network passively? What happens if someone controls the network actively? what happens if the cops in the US enter the data center and steal all the data. That's it. So really the

threat model is, okay, we'll protect, again, government agencies. Which means that all side channel attacks with social engineering or whatever is out of scope. Another sentence here in the middle of the paper. I will sleep in the plane this morning while reading it, but it's important. le signal spécifie le méthode mandatrice pour les participants pour vérifier les identités de l'autre dans un out-of-band. Ce qui signifie aussi que dans le protocole, dans la partie crypto, ce qui a été formé vérifié, il dit que, en tant que joueur, vous devriez vérifier les clés par ce que vous voulez dire avec votre contact. Mais la plupart des implementations ne nécessitent pas une vérification de vérification. to take place before messaging can

occur. Without it, an untrusted key distribution server can of course impersonate any agent. So that's obvious, but in the middle of the threat model that, yeah. So clearly so. It's a really good paper from a critical point of view, but really in the middle of it, they say, well, they should do that. It's our mathematical hypothesis, but no one does. So what are the conclusions for me? Just use this. C'est pourquoi il fonctionne. Mais avec ça, Bob peut voir après quelques messages qu'il n'est pas vraiment parlant de la real Alice parce qu'il n'est pas la grammaire correcte. Donc, on va le faire encore plus loin. I think you can have really many attacks with this kind of stuff, but I will talk about an easy exploitation scenario, so that's

why it's called introducing manager contacts attack. So clearly, if you spend some time having a look in detail at the mobile applications implementation, you will see our contacts are handled really in detail, whether it's WhatsApp, Telegram or whatever. So for those two, yeah, well, just Reverse engineering should be easy because for the Android app, I guess they are just using the Java API. So within a few minutes or hours, you see when they synchronize and whatever. So you have more knowledge to know when you can hack. And for SignalWideSopenSource, you can just have a look at the source code and you know what they are doing with it. And there is also something where you can be really, really

nasty. What does this messaging do app? they store their own information in the contacts. For example, you have your phone number, Bob, and it creates in the Bob entry, it creates a signal entry with the phone number of Bob, and then they just use it when you are in the contacts, so in your address book, so that you have a shortcut to send, to have a phone call directly via signal or whatever. So they are actively using contacts themselves. Mais on a vu que les contacts, quelqu'un peut faire ce qu'il veut. Ils sont en app app, mais ils restent ce qu'ils ont besoin et ils ne demandent plus de questions. On va voir ce qu'ils sont plus tard. Donc, ok, on va être vraiment

mal. Avant, on a juste Bob qui a été tricqué parce qu'il a installé un jeu populaire qui a accès à contacts, comme Pokémon Go, par exemple. Bob a été tricqué. the other games that can change these contacts. Now also suppose Alice also has downloaded this game because this is super popular or something different because Bob installed it. So then you could because Bob installed it, the app knows all its contacts so then he can try to spam all the contacts and convince the other user to download the game because yeah you need to be two to play social game or whatever. So let's suppose that so you have the

I will try to do a man in the middle, which for me is really killing the goal of end-to-end encryption, because if someone in the middle can see anything, you lose. So what I would do, I could try to instrument the mobile application whatever, but I'm a bit lazy, so what I do, I can do a lot of things, Je utilise la version web de ces appels, car si je dois faire un mec dans le milieu, tout dans le browser, on écrit juste une simple Chrome ou Firefox extension, et dans quelques heures, vous obtenez quelque chose qui fonctionne. Je l'utilise, je l'utilise dans la version web comme Yves, dans le milieu, et ensuite je crée un Space Alice et un Space Bob sur les appels.

Donc, ici, je l'ai. Je suis le mec dans le milieu comme si je envoie un message à Alice qui vient de Bob. Alice pense que ça vient de Bob. À la même temps, je envoie le même message à Bob qui vient de Alice. Ici, ce qui est important, c'est qu'il faut commencer une nouvelle conversation. Il faut que ces deux gars puissent parler ensemble avec quelque chose qui, en fait, fait quelque chose qui n'a pas de sens, qui ne ressemble pas tellement bien, et dès qu'ils vont parler dans cette discussion, ils vont l'écouter de leur discussion qui est à un autre endroit dans la UI. Donc ce que je fais, je vais envoyer le même message. Donc cette photo. Et à des fois,

il y a Bob qui dit « Hey, what's up Alice ? » Bien sûr, il ne parle pas à Alice, il parle à Eve. Donc je obtenais cette message ici quand je parle à Bob. Je fais une copie-paste avec l'extension ou quelque chose. pour que je l'envoie à Alice. Et vous voyez ici ce message ? Tout est super-encrypted, etc. Ok. Et puis je réponds à quelques trucs, je l'ai reçu comme Alice, je le copie et il arrive. Donc, c'est possible de partager une conversation entre Bob et Alice via Eve. So now let's say I'm a government agency, for example. Yeah, for me that's cool. They would be chatting there and because it's written it's end to end encrypted. If

there are terrorists or whatever, they won't take any precautions, especially if every day at the newspaper they say that it's super secure. So the only thing to do is you have to convince those contacts to switch to a new conversation. But because you get a push, it's really tempting to just click on the push and then vous êtes conduit dans cette conversation. En Telegram, vous obtenez le même truc, excepté pour le synchro, vous avez des lags. Signal, exactement le même truc, je ne vais pas vous montrer les screenshots. Le seul truc qui peut vous sauver est le numéro de la version Android, mais pas sur iOS. Donc maintenant, est-ce que c'est mauvais ou est-ce que c'est vraiment un mauvais question ? Parce que, vous savez, parfois, vous avez

beaucoup d'attacks, ou quelque chose, ça semble être fou, mais vous ne connaissez pas vraiment les impacts. Donc, je voudrais donner des really simple risk evaluation to know how bad it is. So for me, a really simple framework, I say how easy is it to attack and what's the user impact. And then I multiply those two and then we can discuss. So is it difficult to do this attack? For me, from a technical point of view, it's really basic. It's really super low. You just need like two days of Android development skills and then that's done. So easy accessing two contacts. And what's really really important, this application is going to get approved because you are not hiding any exploits in it, you

are not trying to jailbreak the phone or whatever. You are just writing a game that has access to contacts and that can store data in contact like WhatsApp does, like Signal does. So it's totally clean from that. So no one can complain about it. No one at Google or whatever that will use app. we'll see that there's something malicious because all that's malicious would be running in the back end. From a logistics, I'd say it's medium difficulty. You need to convince many users, so you need to have some popular game at some point if you want to have a massive impact. But as we said, if you convince once, then you have access to like thousands of contacts, so then because you have those dozens of contacts, you

can try to spread it and have something viral out of it. Donc c'est la difficulté, mais la simple partie est super cheap. Vous avez juste besoin d'une carte SIM. Vous voyez Yves ici, Yves était en train de faire un homme au milieu entre Alice et Bob, mais Alice peut faire ça pour 1000 contacts, ça va fonctionner. Il y a juste un numéro de téléphone, c'est juste un nouveau contact sur toutes ces personnes attaques. Donc c'est juste super cheap, vous avez juste besoin d'une carte prépaire et c'est ça. Vous êtes en train de faire. Pour moi, la difficulté est comme un petit peu de l'autre, et l'impact. Pour moi, ce qui veut dire que vous pouvez

avoir des milliers d'usagers qui peuvent être spieds. Et quel est le seul cas pour un message secure ? C'est discuter avec la sécurité. Et quand vous pouvez avoir un homme au milieu, vous aurez tu as tué le but de l'application. Si les gens connaissent ça, à un moment donné, ils peuvent simplement changer la compétition et oublier votre app. Donc pour moi, l'impact le business est vraiment haut et le joueur est vraiment haut. Et oui, et ce qui est magique aussi, vous savez ? Parce que WhatsApp, Signal, Telegram, ils gardent extra info dans les contacts. Du jeu, vous pouvez savoir si le joueur a installé WhatsApp, Telegram, Signal, ce qui normalement est totalement impossible parce que votre app est sandbox, mais parce

qu'ils ont leaké des données dans les contacts, vous pouvez savoir si vous avez besoin de ces gens avec Telegram, Signal ou ce que vous avez besoin. So this is really, really pretty intrusive. And of course, I didn't push it further, but it should work as well on iOS, so you can do cross-platform attack and whatever. So with this simple risk matrix, for me, it's really like between high and very high. So for me, it's really a big deal. So I showed that this summer at Defcon in Las Vegas. I didn't want to disclose it before, to the vendors because nobody would have answered me, I guess. I wanted to talk to it at something with a famous name and then see now what they do to fix

that. Telegram, they have a level one support that's really brilliant. Within one or two minutes, they give you feedback. Problem is that they say, yeah, you have to write your security telegram.org and this is really a black hole. No one never answered, you contact, you recontact, whatever. They just never answer. They just don't care. So that's annoying for those who are using Telegram and who trust it and say it's end to end encrypted or whatever. So they've made some email address for that, but they just don't care. WhatsApp. So WhatsApp now is part of Facebook. So it's part of the Facebook security program. So you have some kind of form to submit and then you get a ticket.

mais il n'y a pas encore de réponse, donc vous devez être poushy, et quand vous êtes poushy, vous obtenez des feedbacks. Je vais le lire. C'est un peu grand. Je garde le layout comme est, je mets juste dans la base ce que je pense est important. Le gars me répond et me dit que l'ultimement, avec le Mandelaire, nous avons perdu. Of course, I agree with that. If you have a big virus, you have rooted your device or whatever, you can't do anything secure. For me, it's not a malware. I'm just talking about a normal game accessing contacts. OK, but we may discuss about that. WhatsApp conversation remained properly bound to the phone number that the messages were sent to. Yes, that's true.

We had to push the user to a new conversation. And because of that, we don't care, we won't make any change. We just don't care. And there is a super feature, you can choose your own local alias for the contact name. But this is stored in the contact so I can just change it. That's really stupid. And then please let us know if you feel we've misunderstood something. Yes, so I answered two, three times. trying to expand my point and I say okay maybe I think this is important and maybe the only thing you have to do is just change this message and say you don't risk anything this is super secure maybe just give a warning to the user never got feedback from

it signal now which is supposed to be the best one so I thought I would have some challenging feedback from them while you don't really know how you should do if you have some security issues That's kind of strange. It's open source, it's well known, it's famous because it's supposed to be good work and there is no official channel for that. So what I did, yeah, I went in the Android app bug tracking tool. Never got answer and never got answer, open ticket again, whatever. I just get like automatic answers, but then really no feedback. So I tried to make some noise on Twitter. For Telegram it didn't work. For Signal it worked. They answered me.

Someone is going to talk to you. Then of course no one talks to you, so then you start making a bit more noise and then you get the answer. And the conversation started. First answer.

So what the guy tells me is, yeah, well, you missed something. Signal, you have the safety numbers. What safety numbers? Basically if I switch contacts so in an existing conversation, if the public key of the user changes, you get a big notification and you have to re-approve it. So that's a really good security feature, but it only applies for existing conversation. It doesn't work for new conversation. So here he says, basically you can do mine in the middle with it because you will have to bypass that. So I answered correctly and in detail, I said, okay, Je conduis une nouvelle conversation, je suis abusant le tofu. Avec ça, je peux faire un homme successeux dans le milieu d'attache. Si il n'y

a pas d'une réponse, j'ai essayé de pousser deux ou trois fois. La conférence était fermée, donc j'ai vraiment voulu avoir des feedbacks. Et ici, ce que j'ai obtenu, le signal n'est pas déguérait pour protéger votre device contre la malwaire. Je sais que ce n'est pas une anti-malwaire ou une anti-virus, mais ce qui est un genre de roud, dix-honnête ou quelque chose. let's take a step away from it. What does it mean in practice for you? Signal is secure as long as you're just using signal on your smartphone and that's it. If I read it like that, to be a bit more precise, you can use signal securely on your smartphone as long as you don't have any other application accessing two contacts. That's

quite restrictive, but then in this case, This paper works and this is true. It's kind of you have a smartphone you don't want to have 10 smartphones for that. So that's kind of dishonest for me. So what we can do? Well I'm not hoping anything from the vendors. They just don't care you see. Academic world they don't care also because they want to do math. They don't want to do stupid stuff like that. So what should be done from the mobile apps point of view? La première chose, ils peuvent juste faire un design et ne pas perdre ce contact automatiquement, synchronisation et pas de password login. Ils peuvent juste faire ça de l'ancien façon. Vous créez un compte et

vous avez à remettre à tout le monde qui vous aurez. Ce n'est pas cool d'une expérience utilisateur, mais c'est sécurisé. Nous devons demander si vous utilisez un message sécurisé, voulez-vous vraiment avoir quelque chose de sécurisé ? ou que vous voulez avoir une app de commodité. C'est un problème. Mais vous pouvez prétendre être super sécurisé et faire ce type de compromis. Ou, quelque chose qui pourrait être fait, si vous ne voulez pas laisser la place de contact, vous pourrez vous warner le utilisateur. Premièrement, ce que je montre dans ce scénario, quand une nouvelle conversation commence, c'est clairement le système de la qualité. There's something strange happening. Someone new is talking to you and this guy has never talked to you before. So it's kind of unusual, uncommon. So

at this point, you can really try to notify the user. So within the conversation rather than this stupid message that says it's super encrypted. And ideally also in the push notification, if it's new, you could just add some flag in it. And at least on a user, we say, hey, there's something abnormal coming. and also, next to the contact name, if you've never spoke to this guy or whatever, just clear color or whatever that tells you that it's not normal. So that's if you're, let's say, developing an app. Now, from the mobile OS also, for me, they've missed something. So they did a really good job at sandboxing the apps, but the contacts, like five years ago, it was no problem, it was

just used by the l'application de l'application de l'application pour lire les contacts. Puis ils ouvrent l'API et ils ne se sont pas réalisés que les gens étaient, petit par petit, en mettant des données d'authentication dans cette information de contact. Ils ont aussi des responsabilités avec ça. Et pour moi, ils devraient le faire. WhatsApp devrait être capable de placer des données dans les contacts, mais seulement WhatsApp devrait être capable de lire ces données. Ce qui fait quelque chose de sens car ils le font pour le placer ou ce que ce soit. So now for you, what can you do except not using those apps? Well, maybe you can have a look at your contacts and if you see like double contacts you may be worried or maybe it's just

a Google Mail Synchro bug or whatever. Yeah, kind of always recommendation for me that doesn't really make sense. Yeah, well, yeah, you just have to be careful at the permissions. quand vous installez l'app. Mais, regardez le signal, la liste est utilisée comme ça, et vous devez juste accepte que vous n'avez pas utilisé. Donc, ça ne fonctionne pas. Et pour moi, oui, et si les gens qui développent ces apps disent « Hey, vous devriez être cautious avec leurs permissions », pourquoi est-ce que vous gardez beaucoup de données dans les contacts, si vous dites que vous ne devriez pas être confiés ? Sinon, si vous êtes vraiment, vraiment paranoïde, il y a une bonne app ici, called FIMA, there are other apps also.

What it does, you have a manual ID, so like standard login account by default. You can sync the contact if you wish. There is a trust level and really for me when we are talking about confidence, when we are talking about privacy. vous voyez, il y a deux mois pour obtenir une réponse, car j'ai parlé avec Defcon et j'étais pushy, j'ai parlé sur Twitter, etc. Ici, j'ai juste envoyé un email, à l'unique public, et le prochain jour, j'ai obtenu une réponse comme ça, de l'engenieur de l'engenieur qui m'a expliqué tous les détails, les choix de design, ce qu'ils ont fait, ils connaissent qu'ils ne sont pas bons, ils connaissent qu'ils sont mieux que la compétition, etc. Je vois clairement que

si vous parlez, vous voulez You know that people in some countries can go to jail or even worse if they say some stuff. You cannot say something like that. It's just, yeah, pathetic for me. So, what it means? End-to-end encryption is not magic. If you don't know, if you're not sure who you are talking to, well that's useless for me. Well, some NSA on the network cannot see anything, but if you are worried about active attacks, of course NSA can create those face contacts if they want. I guess they can add everything they want in Pokemon Go if it's needed. I guess they can add anything they want in the Google Play Store. No one's going to stop them. So, for me, it's...

It can be even worse if you display a message to an end user that says that's super secure because you have a false sense of security and for me it's more like lying than really a progress. The security model around contacts is really really really bad. It's something I would like to be discussing with Android team and iOS team. Clearly with a better restriction on contacts this kind of attack can be forgotten and yeah, something that vous ne devriez jamais l'oublier. La première chose que vous devriez faire, c'est d'authenticiser l'autre partie. Et ça devrait être le début. Vous ne devriez pas se tromper des traits de réseaux en milieu ou en milieu. Si vous ne savez pas qui vous

parlez, vous perdrez. Mais c'est vraiment difficile et le défi de provisionner est très difficile. Il peut être très utile, vous pouvez faire le mal ou quelque chose.

vous devez mettre tout votre effort en premier. Et pour moi, si vous voulez avoir quelque chose de sécurité, à un moment, la vie humaine est vraiment bonne à détecter des choses abnormales. Donc, à ce point, quand vous êtes vraiment bootstrapping votre crypto, vous devriez mettre le client en route, si il y a quelque chose qui est juste une fois de la suite. 1000 ou quelque chose. Et si vous avez une mobile app, vous pouvez faire des payements mobile et vous pouvez envoyer des dollars à contacts. Imaginez ce qui se passe, je change mes contacts et je obtenais des dollars. Si vous avez une application qui a accès aux contacts, pensez-vous. Commencez une session de modélisation

bientôt parce que, je ne sais pas, peut-être que ça est déjà dans le monde, ou que quelqu'un qui a un slide ou un programme qui a un programme ou un programme qui peut l'appliquer. I'd be happy to have any questions.

Yeah? Yeah. No, basically they're just copy-pasting your phone number and whatever so that you can directly have a text message or a WhatsApp call from it. But then they trust it blindly. I wonder what other types of contact information about genetics is there for other applications that implicitly trust in treating contact with a foot? I guess thousands, I would say. It's just people putting blind trust in it and everyone thinks it's sandboxed so it's not risky at all and there is no integrity check and whatever. And clearly for me they are doing the same mistakes like the web did 10 years ago. with those SSL certificates that have strange domain names and whatever. They just proceed by default. At the beginning I thought

I was going to use strange encodings and UTF-8 cheats and whatever. No, no, just put a space and it's working. Also, does it make sense to have a contact starting with the space. So if you create it manually with a GUI it's not working, but with the API you can do whatever you want. This is really bad input validation. This kind of mistakes like we did in the web 10-15 years ago and it's still done today. What I see also is it's clearly not the same kind of developer population working on mobile. And clearly from the answer you get here from this guy I can tell you after what it is from Signal. You clearly have the big good guys that are doing the crypto

and backend stuff and then you have the ugly parts. Let's just do the UI, the GUI, the mobile app. This is for the young people. We don't really care. You just have to put two sexy accounts and that's it. As long as you will have this split, you're going to have lots of problems on the mobile apps.

Pour moi, il y a des produits de management et ils veulent vendre adhérents. Si quelqu'un de la business de WhatsApp dit « je ne veux pas la sécurité des end-users, je veux faire des bords » il n'y a pas de problème. Ici, je obtenais l'envie de quelqu'un de la sécurité. Il lui a pris deux minutes pour le faire. Je pense qu'il n'a pas lu ma présentation. Le gars de Signal n'a pas lu, car il est clairement hors. Le product management peut décider ce que ce qu'ils veulent. C'est leur société qui est en train de faire leur business. Et si ils ont tué leur business parce que de mauvais choix de sécurité, c'est pas mal pour eux. Mais ici, on dirait que le sécurité de l'équipe est

décidée que nous ne pouvons pas changer de chose. Maybe I'm paranoid or whatever, but what I don't like is, yeah, please let us know. And if we've misunderstood something, another ticket is closed and you cannot reopen it and then that's finished. So that's really bad.

And when you read those papers, they clearly say, of course, that's in the protocol. You should verify the public key identities out of band. Et ce n'est pas fait. Et ce n'est pas honnête pour moi, d'un point de vue, surtout de la Signal. Vous êtes construisant un très bon protocole, vous savez que vous avez besoin de faire quelque chose de robuste, et vous ne le faites pas sur le mobile. Et vous dites que ce n'est pas anti-malware, mais vous êtes prudents de annoncer, comme la semaine dernière, que vous avez un gif search dans l'app. Pour moi, le business est driving the change, but come on, your signal, you don't care about some security problem, but you say now you

have a GIF search engine in it. No.

But you can test manually, it's not that long. You don't need to have the footer, you just need to find the correct code to create, to have access to the API in Android, and then within Like one hour, you can test really strange scenarios and whatever and you will be surprised. And they all use Tofu now because they want it smooth from a user experience.

But it's really, really difficult to tie an identity to a real user. It's not user friendly because you have to do something with it.

it.