What happened
In Kryfo, your three words and your face are how people recognise you. They never proved who someone is, and they could be copied. Someone could put your three words into an invite link, a QR code or a profile page that led to their own keys. A person who added that saw what looked like a chat with you, but it was a chat with someone else. If that someone also wrote to you in their name, they could sit between the two of you and read what passed through.
On 0.4.1 and older it went further: a copied name could also take over a chat that already existed. 0.4.2 fixed that part.
We are not aware of this being used against anyone.
Who was affected
Anyone on 0.5.0 or older who added someone by a link, a handle, a pairing code, a request, or a QR code they did not scan off that person’s own phone.
Not affected:
- Contacts you added by scanning the QR code on their own phone, in person.
- The safety number. It is made from the keys a chat really uses, so it always showed the difference.
What we changed
In 0.5.1:
- Pairing codes show a key number on both phones, made from the key the chat will use.
- Chats added any way other than an in-person scan show a card asking you to compare the safety number.
- When an introduction or a group names someone you already have, but with a different key, Kryfo keeps the two apart.
- The safety number page asks you to compare all 12 groups.
0.5.2 replaced the “Not checked” mark with the compare card and a This isn't them button. If the safety numbers don’t match, it removes that contact from your phone and blocks its key.
What to do
- Update to 0.5.2. It is on kryfo.app and GitHub now, and reaches F-Droid within a few days.
- Compare the safety number with your important contacts, in person: open their page, tap Verify keys, and check all 12 groups.
- If the numbers don’t match, tap This isn't them. Then add the person again from a link or QR code they give you in person, and compare the number in the new chat.
What comes next
The full fix comes with the identity redesign in 0.6, built on Signal’s official library. Even then, the safety number stays the real check.
Earlier fix
0.3.2 and 0.4.1 fixed a notification tap that could open a chat past the app lock on an unlocked phone.
Thanks
Thank you to Ami (SleepingAmi) and sooox (sooox-cc), who found this, checked it on their own phones and told us privately.
If you find a problem, please tell us privately first: kryfo.app/security.