Krystal DeFi — disclosed vulnerability reports and payouts

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

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

This page collects the 5 closed, publicly disclosed Krystal DeFi reports indexed on Coin Buggie. Nothing here is active or unpatched — every entry was published by the programme or the researcher after remediation.

The findings concentrate in Logic error, 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 Krystal DeFi

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

Krystal DeFi: The Protocol breaks the Allowance Mechanism of the NFTs

Krystal DeFi's position-management contracts (Common.sol, V3Utils.sol, V3Automation.sol) repeatedly move Uniswap V3 position NFTs into the protocol custody and back to the owner after every action. Because ERC721's _transfer deletes the per-token approval record on each transfer, any entity the owner had delegated (via approve) is silently unapproved after the first Krystal interaction. A delegated manager who was approved to liquidate or rebalance a position thus loses that permission the moment Krystal executes an action, potentially leaving positions unmanaged during adverse market moves. The sponsor acknowledged the finding but defended the onERC721Received design, arguing that alternative approval approaches also clear prior approvals or expose users to excessive risk via setApprovalForAll. No code change was applied.

Krystal DeFicode4renaJul 12, 2024Open
mediumLogic errorEVM-Solidity$0

Krystal DeFi: Swapping logic would be broken for some supported tokens

Krystal's shared `_swap()` internal function approves the full input amount to an external router, executes the off-chain-encoded swap, then unconditionally resets the allowance to zero with `_safeApprove(tokenIn, swapRouter, 0)`. The protocol README explicitly states it intends to support tokens that revert on zero-value approvals, such as BNB, so this unconditional reset makes the entire swap transaction revert for those tokens. Every call path that routes through `_swap()` (funding, swapping, position-management flows) becomes unusable for such tokens. The codebase already contains a `_safeResetAndApprove()` helper designed to tolerate these tokens, but it is not invoked in the reset path, leaving the flaw in place.

Krystal DeFicode4renaJul 12, 2024Open
mediumLogic errorEVM-Solidity$0

Krystal DeFi: Wrong logic in `AUTO_COMPOUND` doesn't allow for swap to token1

Krystal DeFi's AUTO_COMPOUND action branches on a guard condition, state.token0 == state.token1, that can never hold because a liquidity pool always has two distinct tokens. As a result, a position whose target token is token1 never takes the swap-and-add branch; it silently falls through to the plain no-swap compounding branch, so the requested swap into the target never happens. The sponsor confirmed the flaw and the judge downgraded it from High to Medium, noting the swap-not-happening impact fits Medium. The fix replaces the dead condition with params.targetToken == state.token1 so the swap path for token1 is reachable.

Krystal DeFicode4renaJul 12, 2024Open
mediumLogic errorEVM-Solidity$0

Krystal DeFi: The signatures are replayable

Krystal's V3Automation contract lets a privileged operator execute Uniswap V3 position-management actions using signatures that users pre-authorize. The flaw is that the signed StructHash.Order carries no nonce and is never checked against the operator-supplied ExecuteParams, so one user signature can be replayed any number of times and binds to no specific action. Because all execution parameters — amounts, ticks, target token, recipient, deadline — come entirely from the operator, the user's signature provides essentially no guardrail and a compromised operator key or backend breach could move funds or liquidity in ways the user never signed. The judge confirmed the finding as Medium, citing the real fund-loss possibility mitigated by the required OPERATOR_ROLE privilege.

Krystal DeFicode4renaJul 12, 2024Open
mediumLogic errorEVM-Solidity$0

Krystal DeFi: `_deductFees()` is incompatible with tokens that revert on zero value transfers

Krystal DeFi's shared fee-deduction helper, Common._deductFees(), computes each token fee with a 64-bit fixed-point multiplication that rounds small fee-by-amount products down to zero. Because the transfer is gated only on the pre-fee amount being positive, a rounding-to-zero fee still issues a zero-value SafeERC20 transfer. Any ERC20 that reverts on zero-value transfers then causes every operation in V3Automation and V3Utils that routes through _deductFees() to revert, making the fee path unusable for such tokens. The protocol confirmed the finding, and the fix guards each transfer on the computed fee being strictly positive.

Krystal DeFicode4renaJul 12, 2024Open

Vulnerability classes disclosed here

Related protocol pages