{"action":"opened","issue":{"url":"https://api.github.com/repos/GlacierProtocol/GlacierProtocol/issues/20","repository_url":"https://api.github.com/repos/GlacierProtocol/GlacierProtocol","labels_url":"https://api.github.com/repos/GlacierProtocol/GlacierProtocol/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/GlacierProtocol/GlacierProtocol/issues/20/comments","events_url":"https://api.github.com/repos/GlacierProtocol/GlacierProtocol/issues/20/events","html_url":"https://github.com/GlacierProtocol/GlacierProtocol/issues/20","id":297272292,"number":20,"title":"During test withdrawal, not all keys properly validated","user":{"login":"bitcoinhodler","id":31543633,"avatar_url":"https://avatars3.githubusercontent.com/u/31543633?v=4","gravatar_id":"","url":"https://api.github.com/users/bitcoinhodler","html_url":"https://github.com/bitcoinhodler","followers_url":"https://api.github.com/users/bitcoinhodler/followers","following_url":"https://api.github.com/users/bitcoinhodler/following{/other_user}","gists_url":"https://api.github.com/users/bitcoinhodler/gists{/gist_id}","starred_url":"https://api.github.com/users/bitcoinhodler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitcoinhodler/subscriptions","organizations_url":"https://api.github.com/users/bitcoinhodler/orgs","repos_url":"https://api.github.com/users/bitcoinhodler/repos","events_url":"https://api.github.com/users/bitcoinhodler/events{/privacy}","received_events_url":"https://api.github.com/users/bitcoinhodler/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-02-14T22:44:21Z","updated_at":"2018-02-14T22:44:21Z","closed_at":null,"author_association":"NONE","body":"The Glacier Protocol's deposit protocol recommends a test deposit and withdrawal using all N keys (instead of the minimum required M), to ensure that all N keys have been correctly transcribed. Unfortunately it does not actually verify that they are all good -- they get passed in to `bitcoin-cli signrawtransaction` which will happily accept keys that don't belong to this address.\r\n\r\nNote: it will reject any keys that are not in proper WIF format, which will catch most transcription errors since the checksum will not match.\r\n\r\nBut if a user enters a valid WIF key from a different address, for example, it will happily accept it as long as at least M of the keys correspond.\r\n\r\n# Expected behavior\r\nDuring the test withdrawal, if the user enters a valid WIF key that doesn't belong to this address, the withdrawal should fail with an appropriate error message.\r\n\r\n# Actual behavior\r\nAs long as M of the N keys belong to this address, glacierscript.py reports success.\r\n\r\n# Impact\r\nThe user could have a false sense of confidence in the transcribed keys, and later when attempting to withdraw with only M keys, will discover that the key doesn't work. This could lead to **loss of funds**.\r\n\r\n# Fix\r\nI will submit a PR soon that will test each key independently to ensure it matches the cold storage address entered, and give a nice error message if not."}}
{"actor":{"display_login":"bitcoinhodler"}}