Tapioca — disclosed vulnerability reports and payouts

Every publicly disclosed and closed bug bounty report we hold for Tapioca, with our own summary of each finding and a link to the original disclosure.

Reports indexed
47
Total paid
$0
Critical
0
Largest payout
$0

This page collects the 47 closed, publicly disclosed Tapioca reports indexed on CoinBuggie. Nothing here is active or unpatched — every entry was published by the programme or the researcher after remediation.

The findings concentrate in Logic error, Access control, Front-running / MEV, Bridge exploit, Price manipulation, across EVM-Solidity. Reading a single protocol end to end is the fastest way to see which assumptions its codebase repeatedly gets wrong, which is usually a better predictor of where the next finding lives than the category alone.

Use the vulnerability class links below to compare these findings against the same bug class in other protocols.

What reviewers look for

  • Logic error findings disclosed against Tapioca
  • Access control findings disclosed against Tapioca
  • Front-running / MEV findings disclosed against Tapioca
  • Bridge exploit findings disclosed against Tapioca
  • Price manipulation findings disclosed against Tapioca

Curated highlights

The largest disclosed payouts in this group, with our own summary of each. Every report links back to the original disclosure.

mediumLogic errorEVM-Solidity$0

Tapioca: User Can Claim More Than totalAmount Due to Lack of Max Return Amount Check in _vested Function

Tapioca's Vesting contract has an accounting defect in its `_vested` function: the initial-unlock time offset is subtracted from the vesting start before computing the linearly vested amount, and the partial-vesting branch is never clamped to the total allocation. Because the offset shifts the linear curve forward, the computed vested value can overshoot `_totalAmount` before the fully-vested branch is reached, letting a beneficiary claim more than the total vest. The reporter's Foundry PoC shows that a 500,000-token vest with a 50,000 initial unlock lets a user claim roughly 549,000 tokens (~49,000 above the total) by claiming just before the nominal duration expires. This is a pure arithmetic edge-case flaw rather than a reentrancy or access-control issue.

TapiocahatsJun 5, 2024Open
mediumLogic errorEVM-Solidity$0

Tapioca: DoS in BBLeverage and SGLLeverage due to using wrong leverage executor interface

Tapioca's leverage modules BBLeverage and SGLLeverage call their leverageExecutor contract through an interface that does not match the executor's actual function signatures. The modules invoke getAsset() and getCollateral() with six arguments, but BaseLeverageExecutor — the base contract for all leverage executors — exposes those functions with only four parameters. Because the extra arguments force the calls to decode against selectors and calldata the executor cannot interpret, every buyCollateral() and sellCollateral() transaction always reverts, permanently disabling the leverage buy/sell functionality across both the BigBang lending and Singularity vault markets. The issue was found independently by five researchers, adjudicated as a medium-severity DoS, and fixed by updating the interfaces to pass the correct parameter sets.

TapiocasherlockMar 15, 2024Open
mediumLogic errorEVM-Solidity$0

Tapioca: Balancer using safeApprove may lead to revert.

Tapioca's Balancer._routerSwap() approves the Stargate router for an amount using OpenZeppelin's safeApprove but never clears the allowance afterward. Because Stargate's router rounds the transferred amount down by the source pool's convertRate (1e12 for the DAI pool), the approved allowance typically exceeds the actual transfer, leaving a positive residual. Since safeApprove reverts when changing one non-zero allowance to another nonzero value, any later swap through the function permanently DoSs the cross-chain swap path for that token.

TapiocasherlockMar 15, 2024Open
mediumLogic errorEVM-Solidity$0

Tapioca: `getCollateral` and `getAsset` functions of the AssetTotsDaiLeverageExecutor contract decode data incorrectly

In Tapioca's AssetTotsDaiLeverageExecutor, the getCollateral and getAsset entry points decode a caller-supplied payload into an SLeverageSwapData struct and forward only the inner swapperData bytes to the internal _swapAndTransferToSender helper. That helper abi-decodes the received bytes again as another full SLeverageSwapData, so the payload is reinterpreted with misaligned layout. The redundant decode causes the leverage operations to revert rather than execute their swaps. The protocol team confirmed the bug and fixed it by having the executor pass data through unchanged, mirroring SimpleLeverageExecutor, disabling the asset-to-sDAI leverage path until patched.

TapiocasherlockMar 15, 2024Open
highLogic errorEVM-Solidity$0

Tapioca: TOFTOptionsReceiverModule will have the user lose the whole output TAP when requested to exercise all eligible options

Tapioca's TOFTOptionsReceiverModule, which forwards the TAP proceeds of exercised option positions back to users, silently loses the entire award when a user exercises with `_options.tapAmount = 0`. This zero value is the standard way to request exercising the full eligible oTAP position, and TapiocaOptionBroker honors it by minting the full TAP payout to the module as payer; however, the module computes the user's outgoing transfer from the raw caller-supplied tapAmount rather than the realized balance change, so it forwards nothing. Because the eligible amount is consumed by the full exercise, the awarded TAP remains permanently frozen on the module balance with no rescue path. The confirmed high-severity Sherlock finding was patched in Tapioca-bar PR #366 and TapiocaZ PR #183.

TapiocasherlockMar 15, 2024Open
highLogic errorEVM-Solidity$0

Tapioca: BBLiquidation::_liquidateUser liquidator can bypass protocol fee on liquidation by returning returnedShare == borrowShare

Tapioca's BigBang and Singularity lending markets grant the full seized collateral, including the liquidation bonus, to the liquidator during the collateral-to-asset swap, and only compute the liquidator's callerShare and the protocol fee from the surplus the liquidator returns afterward. Because that surplus is the entire basis for both fees, a liquidator can return exactly the borrow amount, zeroing the protocol fee while keeping the full bonus captured during the swap. This requires no special precondition and works on any liquidation, so the protocol loses its share of the bonus (at least 10%, up to 20% worst case) on every such liquidation. Sherlock adjudicated it High severity with duplicates after an accepted escalation, and Tapioca fixed it in the referenced pull request.

TapiocasherlockMar 15, 2024Open

All reports in this group

Vulnerability classes disclosed here

Related protocol pages