- We have discovered and addressed a security breach.

Tags: #<Tag:0x00007fcf38e97398> #<Tag:0x00007fcf38e971e0>

As we had to log out all users from, if you do not have backups of your encryption keys you will not be able to read your encrypted conversation history. However, if you use server-side encryption key backup (the default in Riot these days) or take manual key backups, you’ll be okay.

This was a difficult choice to make. We weighed the risk of some users losing access to encrypted messages against that of all users’ accounts being vulnerable to hijack via the compromised access tokens. We hope you can see why we made the decision to prioritise account integrity over access to encrypted messages, but we’re sorry for the inconvenience this may have caused.

That sucks for folks. But it wasn’t over!

At around 5am UTC on Apr 12, the attacker used a cloudflare API key to repoint DNS for to a defacement website ( The API key was known compromised in the original attack, and during the rebuild the key was theoretically replaced. However, unfortunately only personal keys were rotated, enabling the defacement. We are currently doublechecking that all compromised secrets have been rotated.

Oh wow!

The defacement confirms that encrypted password hashes were exfiltrated from the production database, so it is even more important for everyone to change their password . We will shortly be messaging and emailing all users to announce the breach and advise them to change their passwords. We will also look at ways of non-destructively forcing a password reset at next login.


Once things are back up and running we will retrospect on this incident in detail to identify the changes we need to make. We will provide a proper postmortem, including follow-up steps; meanwhile we are obviously going to take measures to improve the security of our production infrastructure, including patching services more aggressively and more regular vulnerability scans.

Looking forward to it!