fix: types: error out on decoding BlockMsg with extraneous data #10863
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes the OSS-fuzz finding 48208: lotus:fuzz_block_msg.
The error being that invalid CBOR encoding of BlockMsg can lead to decoded values that do not re-serialize as is. Not necessarily a security issue, but making sure we're not decoding invalid representations shouldn't hurt and prevents us from having to worry about having multiple CBOR representation of the same thing (our CBOR decoder requires canonical CBOR).
Related Issues
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=48208
Proposed Changes
This reads the remaining bytes in the reader provided to
UnmarshalCBOR
and if it still contains data, errors out.Additional Info
The oss-fuzz testcase boils down to:
0x83F6808020
which contains an extra byte after the data items: https://cbor.me/?bytes=83(F6-80-80((20
Checklist
Before you mark the PR ready for review, please make sure that:
<PR type>: <area>: <change being made>
fix: mempool: Introduce a cache for valid signatures
PR type
: fix, feat, build, chore, ci, docs, perf, refactor, revert, style, testarea
, e.g. api, chain, state, market, mempool, multisig, networking, paych, proving, sealing, wallet, deps