Submitted by joaovwfreire
https://github.com/code-423n4/2024-03-taiko/blob/main/packages/protocol/contracts/L1/libs/LibProposing.sol#L108 
https://github.com/code-423n4/2024-03-taiko/blob/main/packages/protocol/contracts/L1/libs/LibProposing.sol#L213 
https://github.com/code-423n4/2024-03-taiko/blob/main/packages/protocol/contracts/L1/libs/LibProving.sol#L121
The proposeBlock at the LibProposing library has the following check to ensure the proposed block has the correct parentMetaHash set:
However, there are no sanity checks to ensure params.parentMetaHash is not zero outside of the genesis block.
Malicious proposers can propose new blocks without any parentMetaHash.
This can induce a maliciously-generated block to be artificially contested as the final block relies on data held by the meta_ variable.
Snippet 1:
This also generates issues for independent provers, as they may not utilize the proposed blocks data to attempt to prove it and utilize the correct parentMetaHash, which will make the LibProving:proveBlock call revert with an L1_BLOCK_MISTATCH error:
Also, according to the documentation, If the parent block hash is incorrect, the winning transition wont be used for block verification, and the prover will forfeit their validity bond entirely. If a maliciously proposed block with zero parent block hash is contested and a higher-tier prover ends up proving the proposed block, then he/she loses its own validity bond.
The test suite contains the TaikoL1TestBase:proposeBlock that creates new block proposals with a zero parentMetaHash. This is called multiple times at tests like testL1\verifyingmultipleblocksonce and testL1_multipleblocksinoneL1_block at the TaikoL1.t.sol test file, demonstrating the lack of reversion if the parentMetaHash is not zero outside of the genesis block.
Make sure to check the parentMetaHash value is not zero if it isnt at the genesis block, otherwise users are going to be able to wrongly induce contestations.
adaki2004 (Taiko) confirmed
