01
#74620 · Audit Comp | Base Azul · about 2 months ago
Unbounded Snappy decompression in Base gossip message-id computation increases node resource consumption
Base consensus gossip computes message IDs by fully Snappy-decompressing inbound gossip message data. The configured gossip size limit is applied to the compressed wire payload, but the decompressed output is not bounded before allocation.
StatusSubmitted
ImpactIncreasing network processing node resource consumption by at least 30% without brute force actions, compared to the preceding 24 hours
BaseP2PPoC
02
#76470 · Audit Comp | Base Azul · about 2 months ago
Short ZK range proof can be accepted as a full AggregateVerifier interval and trigger global ZK verifier nullification
The ZK proof client can stop early after EndOfSource, but still publish public values that claim the full target range was proven. AggregateVerifier accepts this as a valid ZK proposal because the claimed ending block/root and intermediate roots are not tied to the actual block reached by execution.
StatusSubmitted
ImpactA bug in the respective layer 0/1/2 network code that results in unintended smart contract behavior with no concrete funds at direct risk
BaseZKPoC
03
#78724 · NUVA · about 1 month ago
Premature timeout sweep in DedicatedVaultRouter can permanently strand later redemption payouts
DedicatedVaultRouter.sweepUserRedemption() finalizes a redemption proxy based only on its current asset balance. A third party can transfer a dust amount of the asset token to a pending redemption proxy before the legitimate async payout arrives. If the user then calls the 7-day timeout sweep, the router sweeps the dust and deletes the proxy-to-user mapping. Any later payout to that proxy is no longer reachable through either the user sweep path or the keeper sweep path.
StatusSubmitted
ImpactPermanent freezing of funds
NuwaPoC
04
#79921 · Sei · 24 days ago
Gov precompile submitProposal undercharges repeated parameter-change validation and delays block production
Sei's EVM governance precompile exposes submitProposal(string) at 0x0000000000000000000000000000000000001006. The precompile charges a fixed 50,000 precompile gas for submitProposal, but the call can create a Cosmos SDK ParameterChangeProposal and run the full proposal ValidateBasic() path.
StatusSubmitted
ImpactBlock production delay exceeding 2.5 seconds on realistic validator hardware, caused by crafted transactions or messages (excluding malicious proposers)
SeiP2PGas / FeesPoC
05
#80076 · Sei · 23 days ago
Malformed CW1155 receipt hook can make failed transactions commit prior Bank and IBC state changes
Sei runs an EVM receipt hook after successful Cosmos message execution to project CosmWasm events into EVM logs. A malformed CW1155 batch event can make this post-message hook panic after earlier messages in the same transaction have already been committed. DeliverTx then returns a failed transaction response, but prior state changes remain finalized; in local PoC tests, a failed transaction still commits a Bank MsgSend, and another failed transaction still escrows IBC funds and stores an IBC packet commitment.
StatusSubmitted
ImpactBug in layer 0/1/2 network code that causes deterministic unintended smart contract execution, with no funds directly at risk
SeiGas / FeesIBCPoC
06
#80459 · Sei · 19 days ago
EIP-7702 empty SetCode authorization bypass allows zero-realized-cost high-priority canonical data injection and fee-market abuse
Sei's EVM CheckTx path accepts EIP-7702 SetCode transactions with an empty authorization list, while the DeliverTx path rejects the same transaction before gas is purchased. As a result, an attacker can submit failing EVM transactions that are still included in canonical blocks, have transaction hashes and receipts, increment the sender nonce, and permanently store calldata on-chain, while reporting gasUsed=0, effectiveGasPrice=0, and leaving the sender balance unchanged. By setting high maxFeePerGas and maxPriorityFeePerGas, the attacker can also obtain high mempool/proposer priority without ever paying the a...
StatusSubmitted
ImpactManipulation of transaction fee calculation resulting in fees outside protocol-defined bounds
SeiGas / FeesPoC
07
#80561 · Sei · 18 days ago
Pending nonce promotion overcounts sender balance, allowing ordinary EVM calldata tails to be included with zero gas charged
Sei v6.5.1 incorrectly promotes future-nonce EVM transactions from the pending nonce set into the ready/proposable mempool without cumulatively reserving the sender's balance across the promoted nonce range. Sei does perform nonce-continuity checks and single-transaction balance checks. The missing check is narrower: after accepting one pending transaction from a sender, promotion does not subtract that transaction's gas/value liability before evaluating the sender's next pending transaction. An attacker can first queue many future-nonce calldata transactions while nonce 0 is missing, then submit nonce 0 to fi...
StatusSubmitted
ImpactManipulation of transaction fee calculation resulting in fees outside protocol-defined bounds
SeiGas / FeesPoC
08
#82021 · Sei · 3 days ago
Unbounded server-side JS tracer allocation in default `debug_traceCall` crashes Sei RPC nodes
Sei's default full-node/RPC-node EVM JSON-RPC configuration exposes the debug namespace, including debug_traceCall, with an empty deny list. debug_traceCall accepts a user-supplied JavaScript tracer that is executed server-side inside the seid process through the go-ethereum JS tracer and goja runtime. The JS runtime has no per-request memory cap, so a single unauthenticated RPC request can allocate a very large ArrayBuffer from the tracer's result() function and cause the full seid process to be killed by the kernel OOM killer. I reproduced this against sei-node-0 in a full local 4-node Docker cluster without...
StatusSubmitted
ImpactCrash of RPC nodes running default configuration via direct unauthenticated network access to RPC/gRPC endpoints
SeiGas / FeesPoC
09
#82172 · Sei · 2 days ago
Default gRPC-Web keep-alive connections can exhaust file descriptors and crash RPC/full nodes
Sei full/RPC nodes enable the gRPC-Web HTTP server by default, but the server is created without an IdleTimeout, a connection cap, or disabled keep-alives. A remote unauthenticated client that can directly reach the default gRPC-Web listener can open many normal HTTP/1.1 gRPC-Web keep-alive connections and leave them idle, consuming file descriptors in the shared seid process. On a full 4-node local Sei cluster, this exhausted the default seid process file descriptor table (Max open files was 524287/524288) and caused sei-node-0's seid process to crash with a consensus/WAL panic caused by too many open files.
StatusSubmitted
ImpactCrash of RPC nodes running default configuration via direct unauthenticated network access to RPC/gRPC endpoints
SeiP2PPoC
10
#223 · Monad
Invalid StateSync completions can indefinitely stall the global StateSync response pipeline
monad-statesync/src/ipc.rs refreshes the active WipResponse client timeout for every received StateSyncNetworkMessage::Completion, even when the completion does not match the active response nonce or active requester.
StatusDuplicate
SeverityHigh
ImpactImpact: High
MonadP2PPoC
11
#227 · Monad
Underpriced 8 MiB RETURN data enables full-block execution amplification
MIP-3 makes the maximum 8 MiB EVM memory/output case very cheap. A child contract can RETURN 8 MiB for about 131k gas. A parent contract can then call that child many times with ret_size = 0: the parent does not copy the output into its own memory, but the execution client still creates and stores the full child return data.
StatusConfirmed
SeverityHigh
TargetReward
ImpactImpact: Medium
MonadGas / FeesPoC
12
#417 · dYdX
Single proposer can forge CLOB order removals and delete third-party stateful orders
dYdX Chain lets the current block proposer include a MsgProposedOperations transaction with CLOB operations. Honest validators execute those operations after proposal validation.
StatusDuplicate
SeverityCritical
ImpactImpact: High
dYdXPoC
13
#391 · dYdX
Permissionless market creation can erase global funding samples and distort the next funding settlement
MsgCreateMarketPermissionless creates a new perpetual through the permissionless listing flow. During that flow, the perpetuals keeper clears PremiumSamples and PremiumVotes.
StatusDuplicate
SeverityHigh
ImpactImpact: High
dYdXGas / FeesPoC
14
#379 · dYdX
Same-block stale oracle price withdrawals can convert trader losses into insurance fund bad debt
dYdX Chain executes normal user transactions before the same block's tail MsgUpdateMarketPrices transaction. MsgWithdrawFromSubaccount validates account health against the currently stored oracle price, but does not account for the pending price update that is already included later in the block.
StatusDuplicate
SeverityHigh
ImpactImpact: High
dYdXGas / FeesIBCPoC
15
#394 · dYdX
Isolated position switch bypasses cross-pool withdrawals locked after negative TNC
dYdX blocks withdrawals and transfers for 50 blocks after a negative-TNC subaccount is observed in a collateral pool. The block is keyed by collateral-pool suffix: cross-collateral markets use CrossCollateralSuffix, while isolated markets use the isolated perpetualId.
StatusIn review
SeverityHigh
ImpactImpact: High
BasedYdXIBCPoC
16
#409 · dYdX
Block-sync accepts invalid vote-extension signatures and crashes catching-up dYdX nodes on consensus switch
dYdX Chain runs the dYdX fork of CometBFT with vote extensions enabled. During block sync, a catching-up node accepts BlockResponse messages containing both a block and an ExtendedCommit.
StatusIn review
SeverityHigh
ImpactImpact: High
dYdXP2PPoC