In 2016-17 the Ethereum Foundation hired @cure53berlin for a security Audit of Mist. The process was eye opening and contributed to the discontinuation of the project. The report was never publicized but it might still be valuable for builders today: drive.google.com/file/d/1LSsD9g…
Mist was a brainchild of Gavin and Jeff but I took the lead of it when I joined the foundation in 2014. We had grand plans for it being the realization of all web3 technologies we were building and it was planned as the main software release of Metropolis
However the first 2 years I worked on Ethereum we were mostly focused on the Wallet app, so it started being released as a beta in 2016 and we started a security audit at the same time. The Foundation contacted Mario Heiderich from Cure53.

It was a great piece of humble pie.
As a designer I had spent a lot of time working on small things that I was really proud of, for instance instead of the URL being a simple text field we wanted to show all the url elements in a proper hierarchical order. But turns out Meteor’s SafeString wasn’t that safe.
We would then build our own sanitizers and then they would come back to us with “actually, this isn’t enough, there’s a bug in Webkit using this particular character so we were able to execute javascript code by encoding it in a token’s name”
A lot of the exploits were abusing long strings to hide information that could be used to phish the user, or things that didn’t even cross our minds, like “we can actually make a draggable object from your site overtake elements from the UI”. We were impressed.
At this point everything was fixable. But at some point they started going deeper into our tech stack: you could force an error in Node.js to reveal information about the user’s folder names. You could abuse our injected provider and override the native JSON parser functions.
And then the really scary things started popping: the found out how to abuse electron to access privileged commands not even Mist should have access to. At some point a POC was able execute *any* app in the computer. This is scary for a normal app, but fatal for a crypto wallet.
The whole process took over a year of back and forth, where they would find issues, we would fix and come back to them. At some point issues started escalating to Electron team, Chromium and Webkit. Cure53 itself said it was out of our hands and they couldn’t have predicted it.
This was fundamentally the end of the project. We explored different approaches, using other frameworks, building our own, starting from scratch on a completely different language. We saw Brave pop up and eventually abandon Electron too. In a year Mist would be discontinued.
I wouldn’t have thought about the report again, if it wasn’t for @Jordancoin pinging me about it, wanting to learn more what we learned ourselves and it made me realize these lessons could be applied to more people building desktop wallets in crypto.

So I’m sharing it now.
I hope this is useful for some people. Thanks Jordan for pinging me about it, @Silverhair72 for digging it out again and of course my former team mates @feindura , @evertonfraga , @mhswende, @MaiaVictr, @Philipplgh, @wolovim for working so hard to dig us out.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Alex Van de Sande (avsa.eth)

Alex Van de Sande (avsa.eth) Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @avsa

18 Aug
This text is not really about the game “Dark Forest" as much as it's a general description of the principles I use when approaching User Experience design, which just happens to apply to the zksnarks ethereum game for anyone interested in improving UX: medium.com/@avsa/a-dark-f…
But since I'm not paid anything to get you to click medium links I'll make a short summary in this thread. Anyone can "redesign” something that it already simple to use. The most interesting work happens when you see a software the is compelling concept but terribly confusing.
Also, never mistake "redesign" for "restyling”. The game developers describe their UI as “Hacker aesthetic" and that's a completelly valid stylistic choice you can respect. Software (specially games!) should have different flavors. UX work is fixing things underneath the "skin”
Read 9 tweets
22 Mar 19
This is a bitter post to announce, but we are discontinuing Mist. You can read the full post here but for your convenience I will try to summarize in a few tweets: medium.com/@avsa/sunsetti…

There are mainly two reasons a good and a bad one: ecosystem and security
Security is the bad one: there's no way around electron security, it was never meant to run arbitrary code. Brave has long moved past it, we tried alternatives but they were all underwhelming. We feel we can't recommend anyone running a crypto browser on electrum at this moment.
Ecosystem is the good one: with aforementioned Brave, Opera etc, we feel browser vendors are now very close to having full web3 support than we were of building a secure browser framework. We didn't want to do redundant work.
Read 6 tweets
7 Feb 18
So, about the Petro..
Venezuela released a white paper.

elpetro.gob.ve/Whitepaper_Pet…

And it’s sooo good.
First of all it was inspired by Chavez, the first person in history to think that currencies should be backed by things. Screw capitalist pig Satoshi, Chavez basically invented crypto. I mean really crypto: Diffie-Helman plagiarized him. He probably invented all currencies too.
Read 13 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!