Live data from Hacker News

153k Ether Stolen in Parity Multi-Sig Attack

etherscan.io

251–260 of 754 posts

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#251

Earlier quoted context omitted.

Why is it very hard? Can't one simply use Coinbase? > And then the IRS will want to know where you are suddenly getting a huge amount of money from. In my experience, the IRS is largely unconcerned with where you are getting money from. They just want you to declare it, and pay taxes on it. If you treat Bitcoin as ordinary income and pay taxes on it at the highest available rate, the IRS will largely be satisfied. If…

You're saying you could declare "I now have $30 million in assets" on your IRS forms and it wouldn't trip any alarms? I mean, I don't personally know which alarms would be tripped, or what effect that would have. But that just seems so unlikely. It'd be fascinating if this were true, though, so any info would be appreciated. Re: coinbase, it'd be foolish to use them because they have a history of disabling accounts f…

>You're saying you could declare "I now have $30 million in assets" on your IRS forms and it wouldn't trip any alarms?

Technically, it's illegal for the IRS to do so without third parties coming to them or suspicions of terrorism. In practice, they probably rat people out to LE agencies regularly.

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#252
post #248

Earlier quoted context omitted.

For the same reason every variable in JavaScript is global by default... I.e. I don't have a clue how that could seem like a good idea.

That's not how JavaScript works. Variable declarations are hoisted to the start of the enclosing function scope and only undeclared variables are global by default. But yes it seems pretty asinine to use global by default for (not so) smart contracts.

And even that undeclared-are-global thing is gone in modern js. It's explicitly an error in strict mode.

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#253
post #25

Here's the root error I believe: https://github.com/paritytech/parity/blob/master/js/src/cont... The initWallet function should have been marked internal, but was instead not marked. Unmarked functions default to public in Solidity, so anyone can call that function and reinitialize the wallet to be under their control

> Unmarked functions default to public in Solidity What kind of brain-dead apes designed this language? This would be a stupid decision in any language, never mind one specifically intended for high-value transactions.

This is the design of most high-level scripting languages (e.g. Javascript, PHP, Python, Ruby)...

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#254

Earlier quoted context omitted.

I would add one more point: even if both participants in a contract fully understand and agree to the contract, the contract could still be thrown out under contract law for many reasons -- unconscionability, agreement to commit a crime, etc. If Ethereum becomes popular enough, one day the participants in an Ethereum contract are going to sue each other, and the judge is not going to be impressed by arguments that th…

Right. Ethereum is just a medium for recording a contractual agreement. Using ethereum should not make contracts any more enforceable in the eyes of the law. In many cases I would assume the opposite will occur: plaintiffs will claim that there was no contract formation because because the technical mumbo-jumbo of computer code is incomprehensible to a layman. I suspect that courts will react quite favorably to this…

The legal mumbo-jumbo of written contract is also incomprehensible to lay people..

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#255

Earlier quoted context omitted.

> With the insane decision to use a Turing-complete language, the contract's behavior undecidable. OTOH, if the language isn't Turing-complete, there will almost certainly be things you'll want a contract to do that it can't. You can have generality or decidability, but not both.

Right. It will take time, but eventually Solidity (or some other alternative smart contracts approach) will likely be very trustworthy and secure.

No, being Turing complete makes it impossible to be 100% secure and trustworthy, by definition.

It is possible to have trusted contracts, iff their logic is (mathematically) proven. But the VM can't make contracts more secure by itself.

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#256

Earlier quoted context omitted.

Absolutely. A critique one could also point at TCI/IP before anyone running servers began to load balance their websites and other services. Would you blame the the steel (or the concept of bridges in whole) for the Tacoma Narrows bridge waving in the wind?

The whole point of TCP/IP was understanding that networks are unreliable, and introducing schemes check for the receipt of packets, handling lost ones, and changing connection parameters dynamically so fewer packets would be lost in the future. In essence, TCP/IP is engineers trying their utmost to design a system where a single flaw doesn't result in the whole data stream being corrupted. Add HTML browsers into it,…

That is until somebody writes a simple script to utilize the protocol to overload an end server with requests, then a server not equipped to handle such a load will fail due to an exploit that wasn't immediately obvious (of course it is now. It's an assumed part of best practice for any large project.)

The protocol doesn't offer any recourse itself, and the end user who might suffer because of such an attack has no defense. They rely on the ability of the engineers involved and some technical voodoo they don't understand to keep everything safe and working for them. That's my point -- I wasn't comparing the technologies directly, but their roles in a larger system.

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#257
post #170

Earlier quoted context omitted.

> do things that are technically allowed, but have unexpected downsides Unexpected downsides for whom? Smart contracts cease to be smart if we have to rely not on the VM but on a small group of human overlords. If a smart contract exists and you don't know clearly how many times it has been used and what percentage of the parties who used it are pleased with its functioning, you really should not use it unless you fe…

> personally reviewing the code. With the insane decision to use a Turing-complete language, the contract's behavior undecidable . You don't even know if the contract will halt . Limited "gas" (execution time) isn't the solution, because the lesson of the Halting Problem isn't that a program might not terminate. Even if the program halts within a finite time (or "gas"), the behavior of the program on the current inpu…

These are good points. What if the default behavior of a contract was to reset the world to its previous state if the program does not terminate within 30 seconds?

Arguably unclear termination semantics would be a good reason not to trust a contract. Ideally trust mechanisms would exist such that closed source contracts were trustable via a pure insurance-based mechanism.

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#259

From the post mortem (1) -=> - A hacker managed to exploit a ICO multisig wallet vulnerability and drain 44,055 ETH - $9,119,385 at present. - A white hat showed up and "saved" 377,000 ETH - $78,039,000 !!! - by draining other accounts. I get the "see cryptos are too insecure / it's a pyramid / it's a bubble / ICOs are scams / etc" arguments. But holy shit turning a world currency into the wild west - for better or w…

The real lesson is: don't store your coins on a third party anything . This was a third-party wallet. Everyone used it because everyone else used it. Exactly like Mt Gox. There was no reason to store coins on Mt Gox, just like there was no reason to use this wallet. A moment's reflection would have prevented this foolish decision.

Parity does not appear to be an online service. It's local.

Re: 153k Ether Stolen in Parity Multi-Sig Attack

#260
post #25

Here's the root error I believe: https://github.com/paritytech/parity/blob/master/js/src/cont... The initWallet function should have been marked internal, but was instead not marked. Unmarked functions default to public in Solidity, so anyone can call that function and reinitialize the wallet to be under their control

Poking around in that project, I don't see any specific tests of the Wallet contract... would be interested to see what UTs/STs were included if anyone knows where they are -- or was it just manually tested on the testnet? It seems that a basic set of UTs for this contract should have caught this issue. It's not even in the category of weird timing attacks or complicated internal states allowing unexpected state tran…

I've been writing some smart contracts over the last couple weeks and have learned a lot from OpenZeppelin's solidity repo–you can either use them directly (importing and extending off of them) or use them as a good resource for building tokens, crowdsales, etc–can't recommend them enough.

https://github.com/OpenZeppelin/zeppelin-solidity

Post reply on HN