Flow Port access a FLOW account from a seed different from the currently unlocked seed of the Ledger!!!
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 361
- Forks
- 159
- PR merge metrics
- No merged PRs in 30d
Description
Instructions
Flow Port, when it connects to a Ledger, produces the account that was previously created with the same ledger unlocked with a different BIP39 seed (i.e. a seed different from the seed from which the account was originally derived).
The ledger device can have different seeds unlocked. The default seed corresponds with the BIP39 24-word mnemonic. A secondary seed can be attached to a secondary PIN, and derived from the same 24-word mnemonic plus a BIP39 passphrase.
Any number of other seeds can be unlocked by using "temporary passphrases". There is no limits to the number of temporary passphrases (other than the number of arbitrary 100-character strings, which is astronomical). So the seed unlocked in the ledger should be considered previously unknown, and nothing derived from any previously unlocked seed on the same ledger should be cached.
Flow Port ignores the BIP39 seed that is currently unlocked, if a Flow account was previously created using the same Ledger device (with another seed).
Sound to me like the FLOW app caches the account address and assumes the a Ledger device always has the same BIP39 seed unlocked, which is NOT the case. The account address (or private key) should always be derived from the currently unlocked seed, and it should not be cached by the FLOW app. Two different seeds should never lead to the same FLOW account address.
Problem
It seems that Flow Port assumes that the Ledger is always unlocked with the same BIP39 seed, which is NOT the case!
The account displayed is the same that I created previously from another BIP39 seed, different from the one currently unlocked in my Ledger.
This is a VERY SERIOUS / CRITICAL bug!
Steps to Reproduce
Set-up a ledger with 2 seeds (i.e. add a passphrased-seed with ledger > settings > security > passphrase. PIN1 (the default PIN) unlocks the non-passphrased seed, while PIN2 unlocks the passphrased seed.
Unlock the Ledger with PIN1. Create a Flow account.
Now re-lock the ledger and unlock it with PIN2 (i.e. it will have a completely different BIP39 seed).
Now sign-out from Flow-Port, then connect to the Ledger with Flow-Port, Use either Sign-in or Sign-up. It will show the account that was derived from the previous BIP39 seed, i.e. the one attached to PIN1, which is not the seed currently unlocked by PIN2 in the Ledger.
This is NOT GOOD AT ALL, as the account shown by Flow Port is unrelated with the seed currently unlocked in the ledger device.
I would rate the bug as CRITICAL.
Acceptance Criteria
Context
Using Flow-Port to access a Flow account derived from my Ledger's unlocked BIP39 seed.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Flow Port Ledger sign-in and sign-up flow described in the reproduction steps, focusing on account derivation and any cached account state. Reproduce the behavior with two Ledger seeds, then verify that the displayed Flow account is derived from the currently unlocked seed and changes appropriately after switching seeds.
Written by the indexing model from the issue text.
Assessment
- Domain
- authentication, blockchain, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100