Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Feb 27 2020 15:09
    ordian labeled #11527
  • Feb 27 2020 15:09
    ordian opened #11527
  • Feb 27 2020 15:09
    ordian labeled #11527
  • Feb 27 2020 14:57
    niklasad1 closed #11508
  • Feb 27 2020 14:57
    niklasad1 commented #11508
  • Feb 27 2020 14:56
    niklasad1 labeled #11508
  • Feb 27 2020 14:38

    ordian on ao-github-actions

    initial github actions (compare)

  • Feb 27 2020 13:07
    s3krit synchronize #11525
  • Feb 27 2020 13:07

    s3krit on mp-de-parityify

    sed magic find . -type f -exec… (compare)

  • Feb 27 2020 12:57
    ordian labeled #11514
  • Feb 27 2020 12:57
    ordian unlabeled #11514
  • Feb 27 2020 12:56

    ordian on perf

    (compare)

  • Feb 27 2020 12:56

    ordian on master

    Faster kill_garbage (#11514) *… (compare)

  • Feb 27 2020 12:56
    ordian closed #11514
  • Feb 27 2020 11:22

    ordian on na-engine-signer-dont-use-msg-only-zeroes

    (compare)

  • Feb 27 2020 11:22

    ordian on master

    [EngineSigner]: don't sign mess… (compare)

  • Feb 27 2020 11:22
    ordian closed #11524
  • Feb 27 2020 11:22
    ordian closed #11521
  • Feb 27 2020 10:58
    niklasad1 synchronize #11524
  • Feb 27 2020 10:58

    niklasad1 on na-engine-signer-dont-use-msg-only-zeroes

    forgot formatting change (compare)

Tienus
@Tienus
Minus the ?, apologies. Does that look like another blackhat adress?
Jonathan Dahan
@jedahan
default wallet created by parity is not multisig, correct?
like even if i create sub-wallets based on the regular one?
boarddavid
@boarddavid
Correct Jonathan
Oleksii Matiiasevych
@lastperson
@Tienus I think it is parity tech guys, trying to save the day
boarddavid
@boarddavid
This is to do with an actual contract issue, i.e. you can make a contract with a multi-sig function I think
Oleksii Matiiasevych
@lastperson
@Earlz it should, but there is a:
// gets called when no other function matches
  function() payable {
    // just being sent some cash?
    if (msg.value > 0)
      Deposit(msg.sender, msg.value);
    else if (msg.data.length > 0)
      _walletLibrary.delegatecall(msg.data);
  }
Woodman
@btcmacroecon
priv key is cyphertext or salt?
oh what the hell i try both
Tienus
@Tienus
@lastperson Are you sure? Maybe someone can confirm? The tokens balances are massive.
Jonathan Dahan
@jedahan
(ideal-pragmatic?) future scenario: parity uses the exploit to proactively vacuum up all the vulnerable accounts, then sends back the money?
can't imagine anything better now that this is out in the wild
hard forks are :(
Oleksii Matiiasevych
@lastperson
@Tienus initial attack was 8 hours ago. Current one 2 hours ago, I'm almost certain that it is a white hat.
they are sending tx's to all matching contracts
Woodman
@btcmacroecon
id like to be the ethereum version of dog the bounty hunter
Jonathan Dahan
@jedahan
hehe
Oleksii Matiiasevych
@lastperson
initial attacker made only 3 attacks. Probably to not steal too much, so there won't be any forks this time.
Jonathan Dahan
@jedahan
100k+ ETH 'not too much'
Woodman
@btcmacroecon
is the UTC file basically the JSON?
Oleksii Matiiasevych
@lastperson
@jedahan assuming that there is ~100M ETH, it is 0.1%
so it is absolutely not much
Jordan Earls
@Earlz
So basically initWallet is suppose to be internal, but because of the delegatecall in the fallback function, any internal function is possible to call from within the wallet contract
it won't be listed in the ABI, but if you hash it yourself you can call it as you would any other function
Oleksii Matiiasevych
@lastperson
yes
Woodman
@btcmacroecon
i know i try in MEW with chrome! then utc!
Chase
@ChaceHunter
WhiteHatMultiSig
KurtKnudsen
@KurtKnudsen
Is there any proof they are whitehat?
Besides etherscan saying so?
Jordan Earls
@Earlz
What was the original purpose of the delegatecall function in the fallback function? I'm not clear why that is even necessary
Micah Zoltu
@MicahZoltu
Likely to reduce the upload costs.
Jorge Izquierdo
@izqui
@Earlz that claim about delegatecall is incorrect afaik. You cannot delegatecall to an internal function, the problem here is that initMultiowned is an external function it is delegatecalled to
try this snipped, it will fail because a delegatecall fails for going out of gas
contract Test {
    function a() internal {}

    function () {
        require(address(this).delegatecall(msg.data));
    }
}
a() is never called externally (neither from a external address nor from a smart contract external call, even if itself)
Jordan Earls
@Earlz
Well I mean shouldn't this tx end in error since initWallet is internal? https://etherscan.io/tx/0x7ccab31c96aa35022e516ef10c4df8b9b1e3af103eb2f4c94e1d54f8987eb37f
Santiago Palladino
@spalladino
initWallet is not marked as internal, hence the issue
Jorge Izquierdo
@izqui
all functions by default are public
Jordan Earls
@Earlz
Wait, does Solidity default to public? The documentation is misleading in that case
Jorge Izquierdo
@izqui
where is it misleading?
Santiago Palladino
@spalladino

http://solidity.readthedocs.io/en/develop/contracts.html#visibility-and-getters

Functions can be specified as being external, public, internal or private, where the default is public

Jordan Earls
@Earlz
yea, I see that now. I was thinking of state variables
Jorge Izquierdo
@izqui
i don't think it is a very good idea tho (a debate will probably start now)
Jordan Earls
@Earlz
heh I won't touch that topic, but I'd definitely say forgetting something should result in a more secure configuration rather than less so
KurtKnudsen
@KurtKnudsen

Note: The White Hat Group were made aware of a vulnerability in a specific version of a commonly used multisig contract. This vulnerability was trivial to execute, so they took the necessary action to drain every vulnerable multisig they could find as quickly as possible. Thank you to the greater Ethereum Community that helped finding these vulnerable contracts.

The White Hat account currently holding the rescued funds is https://etherscan.io/address/0x1dba1131000664b884a1ba238464159892252d3a.

If you hold a multisig contract that was drained, please be patient. They will be creating another multisig for you that has the same settings as your old multisig but with the vulnerability removed and will return your funds to you there.

According to etherscan.io
Jordan Earls
@Earlz
This is crazy that such an obvious (well, hindsight is 20/20 but still) flaw made it past who knows how many reviews by very experienced solidity devs