# dApp Threat Modeling

[Berachain dApp Threat Model Docs](https://docs.google.com/document/d/1KbMM6HxdHg6tyFjH-XzKgbhk1LAySoxyB7OPdh6t8g0/edit?usp=sharing)

This page provides a comprehensive analysis of how the core DApps within the Berachain ecosystem organically interact and create synergy.

In particular, this page is written from the perspective of a DApp developer. Accordingly, elements in the threat modeling, such as Entity and Asset, have been selected to be practically helpful, focusing on targets that developers must directly define and protect through their code.

On this page, you can find the following:

* DApp Interaction DFD
  * This is an overall architecture diagram showing how Berachain's main DApps—`BEX`, `Kodiak`, `Beraborrow`, and `Infrared`—exchange data and connect with each other. It provides an intuitive understanding of how a user's assets create new value as they move through each DApp and the synergistic effects that occur between the protocols.
* Threat Modeling - DApp System-Centric
  * [`Entity`](#entity): Identifies the core smart contracts and Externally Owned Accounts (EOAs) that developers must directly implement and interact with.
  * [`Asset`](#asset): Defines core assets within the contract that developers must directly manage and protect, such as state variables, tokens, and administrative privileges.
  * [`Entry Point`](#entry-point): Identifies all paths through which external attacks can be initiated.
  * [`Scenarios`](#scenarios): Analyzes the system's security vulnerabilities through specific threat scenarios.

## DFD

<figure><img src="https://60892490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYP3bdzxjL3dDtiZZXw1l%2Fuploads%2Fgit-blob-b9a2b2867fea49f3197c0b16b07eaadd7ff8d079%2Fimage%20(6).png?alt=media" alt=""><figcaption></figcaption></figure>

{% embed url="<https://excalidraw.com/#json=gGGCCojm7kkabwJfM0IR6,iVjhKQcAPS-afwI1TJgKmg>" %}
DFD Link
{% endembed %}

## Entity

<table><thead><tr><th width="100" align="center">ID</th><th width="160" align="center">Name</th><th>Description</th></tr></thead><tbody><tr><td align="center"><mark style="color:yellow;"><code>ET - 1</code></mark></td><td align="center">Distributor</td><td>Manages the distribution logic for BGT and incentive tokens.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 2</code></mark></td><td align="center">RewardVault</td><td>Receives LP token deposits and distributes BGT.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 3</code></mark></td><td align="center">BlockReward<br>Controller</td><td>Responsible for BGT issuance.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 4</code></mark></td><td align="center">BGTIncentive<br>Distributor</td><td>Distributes incentive tokens based on the amount of BGT issued.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 5</code></mark></td><td align="center">BGTStaker</td><td>Manages BGT Boost and provides HONEY as a Boost reward.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 6</code></mark></td><td align="center">CometBFT</td><td>Berachain's BFT consensus module.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 7</code></mark></td><td align="center">BeaconDeposit</td><td>Processes BERA deposits for becoming a validator.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 8</code></mark></td><td align="center">Operator</td><td>Entity to which validators delegate reward allocation and commission settings.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 9</code></mark></td><td align="center">dApp owner</td><td>Entity that sends dApp fees to the FeeCollector.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 10</code></mark></td><td align="center">Oracle</td><td>Entity that fetches the price of HONEY / NECT collateral.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 11</code></mark></td><td align="center">Guardians</td><td>Entity that makes final decisions in governance.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 12</code></mark></td><td align="center">BatchRelayer</td><td>Entity for batch processing of Balancer v2-based BEX operations.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 13</code></mark></td><td align="center">BalancerRelayer</td><td>Entity that mediates Balancer v2-based BEX multicalls.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 14</code></mark></td><td align="center"><p>ProtocolFees</p><p>Withdrawer</p></td><td>Withdraws fees for using the BEX protocol.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 15</code></mark></td><td align="center">BEXAuthorizer</td><td>Approver for creating BEX liquidity pools.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 16</code></mark></td><td align="center">KodiakIsland</td><td>Kodiak automated liquidity management Vault.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 17</code></mark></td><td align="center"><p>KodiakIsland</p><p>Factory</p></td><td>Manager for creating KodiakIsland.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 18</code></mark></td><td align="center"><p>KodiakIsland</p><p>WithRouter</p></td><td>Contract combining Kodiak's Island and Router functions.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 19</code></mark></td><td align="center">IslandRouter</td><td>Contract for Kodiak users to supply liquidity to the Island.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 20</code></mark></td><td align="center">KodiakFarm</td><td>Manages Kodiak reward distribution.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 21</code></mark></td><td align="center">PandaFactory</td><td>Kodiak-based ERC-20 Meme coin launchpad.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 22</code></mark></td><td align="center">UniswapV3Pool</td><td>UniswapV3-based liquidity pool contract within Kodiak.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 23</code></mark></td><td align="center">Infrared</td><td>Manager of core Infrared functions.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 24</code></mark></td><td align="center">InfraredBERA</td><td>Manages Infrared BERA tokens.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 25</code></mark></td><td align="center"><p>InfraredBERA</p><p>Depositor</p></td><td>Manages Infrared BERA asset deposits.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 26</code></mark></td><td align="center"><p>InfraredBERA</p><p>Claimor</p></td><td>Requester for claiming Infrared BERA rewards.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 27</code></mark></td><td align="center"><p>InfraredBERA</p><p>Withdrawor</p></td><td>Manages Infrared BERA asset withdrawals.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 28</code></mark></td><td align="center"><p>InfraredBERA</p><p>FeeReceivor</p></td><td>Manages Infrared fees.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 29</code></mark></td><td align="center"><p>Infrared</p><p>Distributor</p></td><td>Manages Infrared reward distribution.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 30</code></mark></td><td align="center">InfraredVault</td><td>Infrared rewards vault.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 31</code></mark></td><td align="center">MultiReward</td><td>Manages Infrared multiple rewards.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 32</code></mark></td><td align="center">BribeCollector</td><td>Manages Infrared protocol incentives.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 33</code></mark></td><td align="center">CollVaultRouter</td><td>Manages Beraborrow loan processing.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 34</code></mark></td><td align="center">DenManager</td><td>Beraborrow collateral processing system.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 35</code></mark></td><td align="center">DebtToken</td><td>Manages Beraborrow loan LP tokens (NECT).</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 36</code></mark></td><td align="center"><p>LiquidStability</p><p>Pool</p></td><td>Beraborrow NECT staking pool.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 37</code></mark></td><td align="center">CollectralVault</td><td>Beraborrow collateral LP token issuance vault.</td></tr><tr><td align="center"><mark style="color:yellow;"><code>ET - 38</code></mark></td><td align="center"><p>Liquidation</p><p>Manager</p></td><td>Manages Beraborrow liquidation logic.</td></tr></tbody></table>

## Asset

<table><thead><tr><th width="100" align="center">ID</th><th width="160" align="center">Name</th><th>Description</th></tr></thead><tbody><tr><td align="center"><mark style="color:blue;"><code>AT - 1</code></mark></td><td align="center">BGT</td><td>A token that functions as governance and an economic incentive.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 2</code></mark></td><td align="center">BERA</td><td>Native coin used for gas and deposits.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 3</code></mark></td><td align="center">WBERA</td><td>Token that wraps BERA in the ERC-20 standard.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 4</code></mark></td><td align="center">Fee Token</td><td>Token collected as fees from various dApps.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 5</code></mark></td><td align="center">LP Token<br>(Receipt Token)</td><td>Token that certifies liquidity provision to protocols like Bex.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 6</code></mark></td><td align="center">Incentive Token</td><td>Token provided as a reward to BGT boosters.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 7</code></mark></td><td align="center">HONEY</td><td>Berachain's native stablecoin.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 8</code></mark></td><td align="center">iBERA</td><td>Infrared native BERA.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 9</code></mark></td><td align="center">iBGT</td><td>Infrared native governance token.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 10</code></mark></td><td align="center">Infrared Points</td><td>Additional reward points that can be earned for Infrared activities.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 11</code></mark></td><td align="center">NECT</td><td>Beraborrow native stablecoin.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 12</code></mark></td><td align="center">sNECT</td><td>LP token for Beraborrow NECT staking rewards.</td></tr><tr><td align="center"><mark style="color:blue;"><code>AT - 13</code></mark></td><td align="center">Collaterals</td><td>Collateral available for Beraborrow loans.</td></tr></tbody></table>

## Entry Point

<table><thead><tr><th width="100.3984375" align="center">ID</th><th width="200.0546875" align="center">Name</th><th>Description</th></tr></thead><tbody><tr><td align="center"><mark style="color:purple;"><code>EP - 1</code></mark></td><td align="center">joinPool</td><td>Starting point for supplying token pairs to the BEX liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 2</code></mark></td><td align="center">exitPool</td><td>Starting point for withdrawing token pairs from the BEX liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 3</code></mark></td><td align="center">onJoinPool</td><td>Supplies the specified token pair to the BEX liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 4</code></mark></td><td align="center">onExitPool</td><td>Withdraws the supplied token pair from the BEX liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 5</code></mark></td><td align="center">distributeAndWithdrawCollectedFees</td><td>The BEX Fee Collector sends the collected fees to the<br>Berachain PoL's FeeCollector and FeeReceiver.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 6</code></mark></td><td align="center">withdrawCollectedFee</td><td>Withdraws the fees collected by the BEX FeeCollector.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 7</code></mark></td><td align="center">deposit</td><td>Deposits BERA into the protocol contract.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 8</code></mark></td><td align="center">withdraw</td><td>Withdraws BERA from the protocol contract.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 9</code></mark></td><td align="center">swap</td><td>Executes a single swap in the BEX liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 10</code></mark></td><td align="center">batchSwap</td><td>Executes multiple swaps on the BEX liquidity pool at once.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 11</code></mark></td><td align="center">queryBatchSwap</td><td>Schedules a BEX batchSwap operation.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 12</code></mark></td><td align="center">create</td><td>Creates a new BEX liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 13</code></mark></td><td align="center"><p>setPOLFeeCollector</p><p>Percentage</p></td><td>Sets the fee for the BEX pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 14</code></mark></td><td align="center"><p>executiveRebalance</p><p>WithRouter</p></td><td><p>Pool rebalancing by the manager via the router.</p><p><br></p></td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 15</code></mark></td><td align="center">addLiquidity</td><td>Supplies an ERC-20 token pair to the Kodiak liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 16</code></mark></td><td align="center">addLiquidityNative</td><td>Supplies an ERC-20 - BERA token pair to the Kodiak liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 17</code></mark></td><td align="center">addLiquiditySingle</td><td>Supplies single-sided liquidity to a Kodiak ERC-20 token pair pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 18</code></mark></td><td align="center"><p>addLiquiditySingle</p><p>Native</p></td><td>Supplies single-sided liquidity to a Kodiak ERC-20 - BERA token pair pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 19</code></mark></td><td align="center">removeLiquidity</td><td>Withdraws an ERC-20 token pair from the Kodiak liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 20</code></mark></td><td align="center">removeLiquidityNative</td><td>Withdraws an ERC-20 - BERA token pair from the Kodiak liquidity pool.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 21</code></mark></td><td align="center">KodiakFarm.stake</td><td>Stakes LP tokens in the Kodiak reward distribution vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 22</code></mark></td><td align="center">KodiakFarm.withdraw</td><td>Withdraws LP tokens from the Kodiak reward distribution vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 23</code></mark></td><td align="center">KodiakFarm.getReward</td><td>Claims accumulated reward tokens from the Kodiak reward distribution vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 24</code></mark></td><td align="center"><p>KodiakIsland</p><p>FactorydeployVault</p></td><td>Deploys the Kodiak liquidity pool contract.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 25</code></mark></td><td align="center"><p>FarmFactorydeploy</p><p>Farm</p></td><td>Deploys the Kodiak reward distribution vault contract.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 26</code></mark></td><td align="center">InfraredVault.stake</td><td>Stakes LP tokens in the Infrared rewards vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 27</code></mark></td><td align="center">InfraredVaultwithdraw</td><td>Withdraws LP tokens from the Infrared rewards vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 28</code></mark></td><td align="center">getReward</td><td>Claims accumulated reward tokens from the Infrared rewards vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 29</code></mark></td><td align="center">mint</td><td>Converts BERA to iBERA within Infrared.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 30</code></mark></td><td align="center">redeem</td><td>Exchanges Base BGT for BERA and sends it to InfraredBERAFeeReceivor.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 31</code></mark></td><td align="center">harvestVault</td><td>Harvests rewards from the RewardVault for a specific asset and issues iBGT.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 32</code></mark></td><td align="center"><p>harvestOperator</p><p>Rewards</p></td><td>Distributes operator rewards accumulated in InfraredBERAFeeReceivor.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 33</code></mark></td><td align="center">claimBGTIncentives</td><td>The Keeper claims incentive tokens from the BGTIncentiveDistributor.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 34</code></mark></td><td align="center">harvestBribes</td><td>Moves incentive tokens from Infrared to the BribeCollector.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 35</code></mark></td><td align="center">claimFees</td><td>Withdraws incentive tokens from the BribeCollector by paying WBERA.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 36</code></mark></td><td align="center">collectBribes</td><td>Recovers WBERA from the BribeCollector to Infrared.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 37</code></mark></td><td align="center">execute</td><td>Sends BERA externally when processing an Infrared user's withdrawal.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 38</code></mark></td><td align="center">process</td><td>Processes requests in the Infrared withdrawal queue.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 39</code></mark></td><td align="center">sweep</td><td>Sends accumulated BERA from InfraredBERAClaimor to the user.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 40</code></mark></td><td align="center">claim</td><td>Claims BGT rewards corresponding to the validator's pubkey.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 41</code></mark></td><td align="center">updateFee</td><td>Changes Infrared fees.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 42</code></mark></td><td align="center"><p>claimExternalVault</p><p>Rewards</p></td><td>Requests rewards for a Vault that is not an Infrared Vault.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 43</code></mark></td><td align="center">openDenVault</td><td>Creates a new CDP loan vault within Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 44</code></mark></td><td align="center">adjustDenVault</td><td>Adjusts the collateral/debt of an existing CDP loan vault in Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 45</code></mark></td><td align="center">closeDenVault</td><td>Closes a CDP loan vault in Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 46</code></mark></td><td align="center">redeemCollateralVault</td><td>Repays a Beraborrow CDP loan.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 47</code></mark></td><td align="center">redeemToOne</td><td>Withdraws all rewards earned from Beraborrow as a single token.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 48</code></mark></td><td align="center">liquidate</td><td>Liquidates unhealthy CDP loan history within Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 49</code></mark></td><td align="center">flashLoan</td><td>Executes the Flash Loan function within Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 50</code></mark></td><td align="center">mint</td><td>Deposits NECT within Beraborrow to issue sNECT.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 51</code></mark></td><td align="center">redeem</td><td>Burns sNECT within Beraborrow and returns NECT.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 52</code></mark></td><td align="center">setParameters</td><td>Configures Beraborrow collateral assets and interest rates.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 53</code></mark></td><td align="center">deposit</td><td>NECT deposit function within Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 54</code></mark></td><td align="center">openDen</td><td>Creates a new CDP loan position within Beraborrow.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 55</code></mark></td><td align="center">addColl</td><td>Sets collateral within a Beraborrow loan position.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 56</code></mark></td><td align="center">withdrawColl</td><td>Withdraws collateral from a Beraborrow loan position.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 57</code></mark></td><td align="center">withdrawDebt</td><td>Withdraws loan tokens from a Beraborrow loan position.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 58</code></mark></td><td align="center">repayDebt</td><td>Repays loan tokens within a Beraborrow loan position.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 59</code></mark></td><td align="center">adjustDen</td><td>Adjusts an existing Beraborrow CDP loan position.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 60</code></mark></td><td align="center">startSunset</td><td>Function to close collateral within a Beraborrow loan position.</td></tr><tr><td align="center"><mark style="color:purple;"><code>EP - 61</code></mark></td><td align="center">mintCap</td><td>Mints other stablecoins and the Beraborrow native stablecoin NECT at a 1:1 ratio.</td></tr></tbody></table>

## Scenarios

{% hint style="info" %}
Click the ID to check the security guidelines for that scenario.
{% endhint %}

<table data-header-hidden><thead><tr><th width="99.57421875" align="center">ID</th><th width="99.71484375" align="center">Entry Point</th><th width="99.60546875" align="center">Asset</th><th>Description</th></tr></thead><tbody><tr><td align="center"><a href="../../guideline/dapp/lending#id-1"><mark style="color:red;"><code>S - 1</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 46</code></mark></p><p><mark style="color:purple;"><code>EP - 52</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>A large-scale liquidation causes a sharp drop in the price of collateral assets, triggering a chain reaction that leads to more position liquidations.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lending#id-2-erc-4626"><mark style="color:red;"><code>S - 2</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 50</code></mark></p><p><mark style="color:purple;"><code>EP - 53</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 2</code></mark></p><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>An inflation attack is performed on an ERC-4626 vault with almost no total supply, causing losses to subsequent depositors' assets.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lending#id-3-recovery-mode"><mark style="color:red;"><code>S - 3</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 55</code></mark></p><p><mark style="color:purple;"><code>EP - 56</code></mark></p><p><mark style="color:purple;"><code>EP - 57</code></mark></p><p><mark style="color:purple;"><code>EP - 58</code></mark></p><p><mark style="color:purple;"><code>EP - 59</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 2</code></mark></p><p><mark style="color:blue;"><code>AT - 5</code></mark></p><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>Bypassing the collateral ratio (ICR/TCR) verification logic allows bad loans even when the system is in Recovery Mode, causing system losses.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lending#id-4-owner"><mark style="color:red;"><code>S - 4</code></mark></a></td><td align="center"><mark style="color:purple;"><code>EP - 54</code></mark></td><td align="center"><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>If the owner abuses their authority to maliciously change the protocol's critical parameters, problems such as excessive fee payments and increased risk of asset liquidation can occur.</td></tr><tr><td align="center"><a href="../../guideline/dapp/dex#id-1-lp"><mark style="color:red;"><code>S - 5</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 13</code></mark></p><p><mark style="color:purple;"><code>EP - 14</code></mark></p><p><mark style="color:purple;"><code>EP - 15</code></mark></p><p><mark style="color:purple;"><code>EP - 16</code></mark></p></td><td align="center"><mark style="color:blue;"><code>AT - 5</code></mark></td><td>When adding liquidity to a pool, if the actual value of the pool assets and the value of the issued LP tokens do not match, it results in profit or loss for new liquidity providers.</td></tr><tr><td align="center"><a href="../../guideline/dapp/dex#id-2"><mark style="color:red;"><code>S - 6</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 19</code></mark></p><p><mark style="color:purple;"><code>EP - 20</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 1</code></mark></p><p><mark style="color:blue;"><code>AT - 5</code></mark></p></td><td>Removing liquidity during a sharp price fluctuation causes the remaining liquidity in the pool to fall below the reference value or bypasses the minimum holding period to realize profits.</td></tr><tr><td align="center"><a href="../../guideline/dapp/dex#id-3"><mark style="color:red;"><code>S - 7</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 1</code></mark></p><p><mark style="color:purple;"><code>EP - 2</code></mark></p><p><mark style="color:purple;"><code>EP - 3</code></mark></p><p><mark style="color:purple;"><code>EP - 4</code></mark></p><p><mark style="color:purple;"><code>EP - 15</code></mark></p><p><mark style="color:purple;"><code>EP - 16</code></mark></p><p><mark style="color:purple;"><code>EP - 17</code></mark></p><p><mark style="color:purple;"><code>EP - 18</code></mark></p><p><mark style="color:purple;"><code>EP - 19</code></mark></p><p><mark style="color:purple;"><code>EP - 20</code></mark></p></td><td align="center"><mark style="color:blue;"><code>AT - 5</code></mark></td><td>Repeated large deposits and withdrawals of a specific token cause the token ratio in the liquidity pool to collapse, leading to price distortion or depletion of some token liquidity.</td></tr><tr><td align="center"><a href="../../guideline/dapp/dex#id-4"><mark style="color:red;"><code>S - 8</code></mark></a></td><td align="center"><mark style="color:purple;"><code>EP - 9</code></mark></td><td align="center"><p><mark style="color:blue;"><code>AT - 2</code></mark></p><p><mark style="color:blue;"><code>AT - 5</code></mark></p></td><td>Large trades cause unfavorable changes in the actual execution price, or errors in the minimum output calculation lead to losses.</td></tr><tr><td align="center"><a href="../../guideline/dapp/dex#id-5"><mark style="color:red;"><code>S - 9</code></mark></a></td><td align="center"><mark style="color:purple;"><code>EP - 13</code></mark></td><td align="center"><mark style="color:blue;"><code>AT - 5</code></mark></td><td>If an administrator suddenly changes the fee ratio or withdraws a large amount of fees, liquidity providers will incur losses.</td></tr><tr><td align="center"><a href="../../guideline/dapp/dex#id-6"><mark style="color:red;"><code>S - 10</code></mark></a></td><td align="center"><mark style="color:purple;"><code>EP - 14</code></mark></td><td align="center"><p><mark style="color:blue;"><code>AT - 3</code></mark></p><p><mark style="color:blue;"><code>AT - 6</code></mark></p></td><td>During pool rebalancing, changing the state of some tokens and causing transaction failures results in a discrepancy between the pool invariant and the total supply.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lsd#id-1-ibera-bera"><mark style="color:red;"><code>S - 11</code></mark></a></td><td align="center"><mark style="color:purple;"><code>EP - 29</code></mark></td><td align="center"><p><mark style="color:blue;"><code>AT - 2</code></mark></p><p><mark style="color:blue;"><code>AT - 8</code></mark></p></td><td>Instantaneously manipulating the iBERA/BERA exchange ratio through large trades can lead to unfair gains, reducing protocol assets and undermining user trust, thus harming system stability.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lsd#id-2"><mark style="color:red;"><code>S - 12</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 41</code></mark></p><p><mark style="color:purple;"><code>EP - 42</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 2</code></mark></p><p><mark style="color:blue;"><code>AT - 5</code></mark></p><p><mark style="color:blue;"><code>AT - 6</code></mark></p></td><td>Exploiting the timing of a protocol fee change to harvest large amounts of rewards immediately before/after the change can distort the reward distribution system, causing losses to users or the protocol's finances.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lsd#id-3-bribe"><mark style="color:red;"><code>S - 13</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 31</code></mark></p><p><mark style="color:purple;"><code>EP - 35</code></mark></p></td><td align="center"><mark style="color:blue;"><code>AT - 6</code></mark></td><td>If a malicious token is used as a reward token in the Bribe system, it can contaminate the Bribe system and lead to malicious activities.</td></tr><tr><td align="center"><a href="../../guideline/dapp/lsd#id-4"><mark style="color:red;"><code>S - 14</code></mark></a></td><td align="center"><mark style="color:purple;"><code>EP - 35</code></mark></td><td align="center"><p><mark style="color:blue;"><code>AT - 5</code></mark></p><p><mark style="color:blue;"><code>AT - 9</code></mark></p></td><td>If staking funds are concentrated in a specific validator, it can lead to an imbalance in staking rewards and validator centralization.</td></tr><tr><td align="center"><a href="../../guideline/dapp/chain#id-1-dex-erc-4626"><mark style="color:red;"><code>S - 15</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 15</code></mark></p><p><mark style="color:purple;"><code>EP - 16</code></mark></p><p><mark style="color:purple;"><code>EP - 17</code></mark></p><p><mark style="color:purple;"><code>EP - 18</code></mark></p><p><mark style="color:purple;"><code>EP - 48</code></mark></p><p><mark style="color:purple;"><code>EP - 53</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 7</code></mark></p><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 12</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>By exploiting the interdependence between Berachain's PoL mechanism and Beraborrow's multi-collateral lending system, an attacker can induce an imbalance in the target collateral pool through large DEX trades, followed by an ERC-4626 inflation attack to realize profits.</td></tr><tr><td align="center"><a href="../../guideline/dapp/chain#id-2-honey-permissionlesspsm-sol"><mark style="color:red;"><code>S - 16</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 53</code></mark></p><p><mark style="color:purple;"><code>EP - 61</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 7</code></mark></p><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 12</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>When Berachain's native stablecoin HONEY de-pegs, an attacker can acquire a large amount of NECT at a low price through Beraborrow's PermissionlessPSM contract to realize profits, depleting the protocol's assets.</td></tr><tr><td align="center"><a href="../../guideline/dapp/chain#id-3"><mark style="color:red;"><code>S - 19</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 20</code></mark></p><p><mark style="color:purple;"><code>EP - 21</code></mark></p><p><mark style="color:purple;"><code>EP - 53</code></mark></p><p><mark style="color:purple;"><code>EP - 54</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 1</code></mark></p><p><mark style="color:blue;"><code>AT - 2</code></mark></p><p><mark style="color:blue;"><code>AT - 8</code></mark></p><p><mark style="color:blue;"><code>AT - 9</code></mark></p></td><td>When the LST token of Infrared, which holds about 62% of Berachain's BGT issuance, de-pegs, a chain reaction to the LST token's price drop causes a negative flywheel effect throughout the chain's ecosystem.</td></tr><tr><td align="center"><a href="../../guideline/dapp/chain#id-4-dex"><mark style="color:red;"><code>S - 20</code></mark></a></td><td align="center"><p><mark style="color:purple;"><code>EP - 15</code></mark></p><p><mark style="color:purple;"><code>EP - 16</code></mark></p><p><mark style="color:purple;"><code>EP - 17</code></mark></p><p><mark style="color:purple;"><code>EP - 18</code></mark></p><p><mark style="color:purple;"><code>EP - 48</code></mark></p><p><mark style="color:purple;"><code>EP - 53</code></mark></p></td><td align="center"><p><mark style="color:blue;"><code>AT - 5</code></mark></p><p><mark style="color:blue;"><code>AT - 11</code></mark></p><p><mark style="color:blue;"><code>AT - 12</code></mark></p><p><mark style="color:blue;"><code>AT - 13</code></mark></p></td><td>Repeating large swaps in an LP with low pool TVL and high sensitivity to price impact distorts the reserve ratio, inducing artificial surges and drops in the LP price, leading to a chain liquidation of loan positions due to collateral value collapse.</td></tr></tbody></table>
