Venus: [bug] determined miner actor address - preLaunch mining attack

Created on 28 Aug 2019  Â·  8Comments  Â·  Source: filecoin-project/venus

Describe the bug
In the current implementation (as of 0.4.6), the miner actor address creation depends on the creator address and its message nonce. See the code here.
Since an owner (wallet) address could be generated or imported, and the nonce itself could be anticipated, one could use a specific address and send createStorageMiner message at the specific nonce time to create a determined miner actor address.

The problem of a determined miner actor address is: one could prepare storage power before network launch, because the sector proofs only depend on content of data, miner actor address, sectorID, parameters. Yes, this is pre-launch mining attack.

Expected behavior
A miner actor address should not be determined, even other parameters are the same. That means, a verifiable randomness should be introduced for a miner address creation process.

Version information
go-filecoin use-devnet 0.4.6

Additional context
See some discussion here

C-bug I-security

Most helpful comment

This is not part of the upcoming api changes, as the spec is not clearly defined on this. We should be able to include it __iff__ we have a spec and it is clear how to implement.

All 8 comments

@whyrusleeping @sternhenri could you comment on whether this is as it sounds? It probably needs to be addressed at the spec level.

You can precompute your miner address, but you can't precompute the chain randomness that is an input into sealing and PoSt.

This is probably a bug in the current go-filecoin if seals do not take in chain randomness, but as far as I know this is handled by the seal construction

@whyrusleeping , No, the current sealing process does not take any chain randomness. As I mentioned, only content of data ingested into a sector, minerAddress, sectorID and parameters are used, I believe.

Ok. @dignifiedquire @porcuquine we probably need this in the proofs FFI. Is this already part of the upcoming Rational PoSt implementation?

@laser — what's the status of this? I remember we discussed this in London and that @sternhenri gave some input. My assumption then was that this would be facilitated by API changes related to PoSt. The issue is here: https://github.com/filecoin-project/specs/issues/56

It’s stuck on me specing right now. Can prioriti: if blocking.

On Wed, Aug 28 2019 at 19:52, < [email protected] > wrote:

@laser ( https://github.com/laser ) — what's the status of this? I remember
we discussed this in London and that @sternhenri (
https://github.com/sternhenri ) gave some input. My assumption then was
that this would be facilitated by API changes related to PoSt. The issue
is here: filecoin-project/specs#56 (
https://github.com/filecoin-project/specs/issues/56 )

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub (
https://github.com/filecoin-project/go-filecoin/issues/3308?email_source=notifications&email_token=AAZUC23ZHWL7FBHIKOIH7NLQG42WRA5CNFSM4IQYDPK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5NB22I#issuecomment-525999465
) , or mute the thread (
https://github.com/notifications/unsubscribe-auth/AAZUC25UHE6QFLZGFGCAGB3QG42WRANCNFSM4IQYDPKQ
).

This is not part of the upcoming api changes, as the spec is not clearly defined on this. We should be able to include it __iff__ we have a spec and it is clear how to implement.

Obsolete (sealing now includes unpredictable chain randomness)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

phritz picture phritz  Â·  7Comments

ZenGround0 picture ZenGround0  Â·  6Comments

ZenGround0 picture ZenGround0  Â·  6Comments

ZenGround0 picture ZenGround0  Â·  5Comments

jscode017 picture jscode017  Â·  6Comments