Description
On the event of a security vulnerability in Bloom, we need to alert users to update.
The user shouldn't be able to log in until he updates the patched version.
This was done in Trinity with a blacklist (S3 Bucket). Some more info can be found here:
Version listing: https://github.com/iotaledger/trinity-wallet/blob/develop/src/shared/libs/versions.json
Trinity force update: https://github.com/iotaledger/trinity-wallet/blob/639c9f81eb7a1287cfbdf85af6cd7feeb7408e0f/src/desktop/src/ui/Index.js#L253
Threat Model
A critical vulnerability is exposed. A user has to update his wallet, otherwise he risks losing his funds. A malicious actor has no access to the S3 server and cannot execute a DOS attack on the S3 server.
Security Requirements
- Only Bloom Labs can post to S3 Server
- Observed trafic doesn't give information about user's version
- Non-blacklisted version cannot be tricked into thinking it's blacklisted (no false positives)
- Blacklisted version cannot be tricked into thinking it's not blacklisted (no false negatives)
Implementation
The implementation consists of the following tasks: get version list,
make a decision whether or not to block Bloom, show an alert if update is needed and provide a mechanism to update it to the latest version.
1. Get version list
Upon start-up Bloom has to make a decision based upon a version blacklist stored remotely to show an alert and disable login. The remote blacklist (JSON example) can be maintained on an Amazon S3 Storage server.
Dev Tasks:
Q: Should the version list be signed by Bloom labs? If yes, we have to check signature.
2. Block
Login functionality has to be blocked, otherwise the user could be exposed to vulnerabilities.
Dev Tasks:
3. Show alert
If login is blocked an alert has to be created with a cancel button and an update to latest version button. Potentially, we might need to add an option to reopen the model if the user clicks on cancel.
UI Task:
Dev Task:
4. Update Bloom
This step does not require anything new in particular, since we already have the function in place to update Bloom. Potentially, we might need to adapt something UI-wise.
Dev Tasks:
Requirements
TBD
Checklist