Lucene search
K
Code423n4Recent

10190 matches found

Code423n4
Code423n4
added 2021/11/11 12:0 a.m.4 views

Inconsistent balance when supplying transfer-on-fee or deflationary tokens

Handle Reigada Vulnerability details Impact In the contract StakingRewards, the stake function assume that the amount of stakingToken is transferred to the smart contract after calling the safeTransferFrom function and thus it updates the balances mapping. However, this may not be true if the...

7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/11 12:0 a.m.7 views

ERC20ConvictionScore._writeCheckpoint` does not write to storage on same block

Handle cmichel Vulnerability details In ERC20ConvictionScore.writeCheckpoint, when the checkpoint is overwritten checkpoint.fromBlock == blockNumber, the new value is set to the memory checkpoint structure and never written to storage. // @audit this is MEMORY, setting new convictionScore doesn't...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/11 12:0 a.m.9 views

Funds in FSDVesting.sol can be frozen by the attacker

Handle WatchPug Vulnerability details In the current implementation, anyone can call function updateVestedTokens to add an arbitrary amount to the beneficiary's vesting amount without sending any of it. This allows the attacker to make the amount typeuint256.max and call to claimVestedTokens will...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/11 12:0 a.m.7 views

Users Can Frontrun revoke() By Calling vest()

Handle leastwood Vulnerability details Impact The onlyOwner role typically calls revoke if a member leaves the BootFinance team, resulting in vested tokens being transferred to the multisig account. Each vesting account has a revocable state variable that is set to either true or false. As any us...

7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/11 12:0 a.m.4 views

Vested NFT not always minted

Handle cmichel Vulnerability details The FSDVesting.claimVestedTokens function tokenizes the conviction only if the current claimed amount tokenClaim equals the total vested amount amount. // tokenClaim is vestedAmount - totalClaimed uint256 tokenClaim = calculateVestingClaim; if amount ==...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/11 12:0 a.m.7 views

Users Can DOS Vesting Distributions

Handle leastwood Vulnerability details Impact The Vesting.vest function is called by airdrop/investor distributions to lock 70% of their token allocations for a period of one year. Vestings are defined on a linear schedule and can be claimed as often as the user likes. However, the claimableAmoun...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/11 12:0 a.m.6 views

user.creation is updated incorrectly when the user tries to extend membership

Handle WatchPug Vulnerability details if user.creation == 0 user.creation = block.timestamp; user.gracePeriod = membershipmsg.sender.creation + MEMBERSHIPDURATION + 60 days; else uint256 elapsedDurationPercentage = block.timestamp - user.creation 1 ether / MEMBERSHIPDURATION; if...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.7 views

Get virtual price is not monotonically increasing

Handle jonah1005 Vulnerability details Impact There's a feature of virtualPrice that is monotonically increasing regardless of the market. This function is heavily used in multiple protocols. e.g.curve metapool, mim, ... This is not held in the current implementation of customSwap since...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.4 views

Vesting.sol#vest() Anyone can make other users' vestings revokable

Handle WatchPug Vulnerability details vest can be called by anyone with an arbitrary beneficiary address to add a Timelock vesting to the beneficiary. At L83-88, it changes the global storage of revokable settings for the beneficiary. This allows anyone to change the revokable settings for other...

7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.12 views

Insufficient check on updateVestedTokens function

Handle rfa Vulnerability details Impact This function can be used by the beneficiary to update their vested token, however the function is callable by anyone, there is no check if the msg.sender/caller is the correct beneficiary, the only check is , but this check is user controllable, therefore...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.11 views

FSDVesting: Restrict updateVestedTokens() calls to only FSD token contract

Handle hickuphh3 Vulnerability details Impact The updateVestedTokens increases the amount of tokens to be vested for a beneficiary. There is no access restriction to the function. The intended total vesting duration is 30 months with a 12-month cliff where 5% is immediately unlocked, and the...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.7 views

Main Swap.sol does not implement transfer-accept ownership pattern

Handle elprofesor Vulnerability details Impact Swap.sol inherits ownerpausable which inherits from Open Zep Ownable. This ownable contract allows for the transfer of ownership without validating that own address is a valid address in control of some expected recipient. If this function is used...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

User can validate and claim the airdrop multiple times

Handle pauliax Vulnerability details Impact When checking if a user is already validated, it relies on the amount to be 0. However, this check can be bypassed by claiming all your airdrop to reduce your amount to 0 and then validating yourself again to refill your allocation. function claim...

6.7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

_vestLock contract is not approved to transfer mainToken from PublicSale.sol contract

Handle WatchPug Vulnerability details At L225 in processWithdrawal, it calls vestLock.vest to vest 70% of the tokens bought. However, PublicSale.sol contract never approve mainToken to the vestLock contract, making processWithdrawal to revet at L225. As a result, all the withdrawals will fail and...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.10 views

Stop ramp target price would create huge arbitrage space.

Handle jonah1005 Vulnerability details Stop ramp target price would create huge arbitrage space. Impact stopRampTargetPrice would set the tokenPrecisionMultipliers to originalPrecisionMultipliers0.mulcurrentTargetPrice.divWEIUNIT; Once the tokenPrecisionMultipliers is changed, the price in the AM...

7.1AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.7 views

_isRevocable is tied to the address and can be set by anyone

Handle pauliax Vulnerability details Impact function vest has a parameter isRevocable that is tied to the account address of beneficiary. because anyone can call vest, it allows overriding benRevocable as many times as you want. I see several potential problems with this: 1. isRevocable sets glob...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.4 views

Wrong implementation of SwapUtils.sol#rampTargetPrice() makes it impossible to change the target price

Handle WatchPug Vulnerability details uint256 initialTargetPricePrecise = getTargetPricePreciseself; uint256 futureTargetPricePrecise = futureTargetPrice.mulTARGETPRICEPRECISION; if futureTargetPricePrecise = initialTargetPricePrecise, "futureTargetPrice is too small" ; else require...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

Swaps are not split when trade crosses target price

Handle cmichel Vulnerability details The protocol uses two amplifier values A1 and A2 for the swap, depending on the target price, see SwapUtils.determineA. The swap curve is therefore a join of two different curves at the target price. When doing a trade that crosses the target price, it should...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.12 views

FSDVesting: Claiming tributes should call FSD token's corresponding functions

Handle hickuphh3 Vulnerability details Impact The claiming of staking and governance tributes for the a beneficiary's vested tokens should be no different than other users / EOAs. However, the claimTribute and claimGovernanceTribute are missing the actual claiming calls to the corresponding...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.10 views

Double Spend in AirDropDistribution.sol

Handle elprofesor Vulnerability details HIGH Impact Due to improper validation of input, approved airdrop users are able to double spend airdrop allocated tokens. This is due to insufficient validation in validate and claimExact which allows the user to reset the amount of tokens they have claime...

7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

SwapUtils.sol Wrong implementation

Handle WatchPug Vulnerability details Based on the context, the tokenPrecisionMultipliers used in price calculation should be calculated in realtime based on initialTargetPrice, futureTargetPrice, futureTargetPriceTime and current time, just like getA and getA2. However, in the current...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

ERC20 return values not checked

Handle cmichel Vulnerability details The ERC20.transfer and ERC20.transferFrom functions return a boolean value indicating success. This parameter should checked for success. Some functions perform ERC20 transfers without checking for the return value: BasicSale.processWithdrawal...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.11 views

Anyone can DDOS vesting contract

Handle pauliax Vulnerability details Impact Vest function can be accessed by anyone. It accepts arbitrary beneficiary and pushes new vesting to the array of this beneficiary timelocks. As a malicious actor I can block any user by just invoking vest function with a tiny amount of vest token. The...

7.1AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

safe erc20

Handle pauliax Vulnerability details Impact Contracts e.g. InvestorDistribution, AirdropDistribution, Vesting have declared to use safe ERC20 library: using SafeERC20 for IERC20; However, when actually making the approvals or transfers, they make no use of this library and rely on simple standard...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

Unbounded for loops allows an attacker to freeze users' funds

Handle WatchPug Vulnerability details function claim external whenNotPaused nonReentrant requirebenRevocablemsg.sender1 == false, 'Account must not already be revoked.'; uint256 amount = claimableAmountmsg.sender.subbenClaimedmsg.sender; requireamount 0, "Claimable amount must be positive";...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

NFT flashloans can bypass sale constraints

Handle pauliax Vulnerability details Impact Public sale has a constraint that for the first 4 weeks only NFT holders can access the sale: if currentEra firstPublicEra requirenft.balanceOfmsg.sender 0, "You need NFT to participate in the sale."; However, this check can be easily bypassed with the...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.15 views

Unsafe token transfer

Handle WatchPug Vulnerability details Calling ERC20.transfer without handling the returned value is unsafe. function processWithdrawal uint era, uint day, address member private returns uint value uint memberUnits = mapEraDayMemberUnitseradaymember; // Get Member Units if memberUnits == 0 value =...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

Two-step change of an admin address

Handle pauliax Vulnerability details Impact function setAdmin allows the current admin to change it to a different address. If accidentally an invalid address is used for which they do not have the private key, then it cannot be corrected and none of the functions that require admin caller can be...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

Vesting benRevocable flag can be switched on and off by anyone and doesn't provide any additional control

Handle hyh Vulnerability details Impact Griefing attack is possible for revoke mechanics by calling vest with a tiny amount and zero isRevocable. This will switch revocable off for the whole vesting amount i.e. the whole set of timelocks flag is being set via last vest call. And vice versa,...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

customPrecisionMultipliers would be rounded to zero and break the pool

Handle jonah1005 Vulnerability details Impact CustomPrecisionMultipliers are set in the constructor: customPrecisionMultipliers0 = targetPriceStorage.originalPrecisionMultipliers0.multargetPrice.div10 18; originalPrecisionMultipliers equal to 1 if the token's decimal = 18. The targe price could...

7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.8 views

addInvestor() Does Not Check Availability of investors_supply

Handle Meta0xNull Vulnerability details Impact When add investor, addInvestor does not check how many tokens is available from investorssupply. The total tokens allocated for Investors could more than investorssupply. Possible Attack Scenario: 1. Attacker who have Admin Private key call addInvest...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.5 views

Use safeTransferFrom instead of transferFrom can improve safety and consistency

Handle WatchPug Vulnerability details vestingToken.transferFrommsg.sender, addressthis, amount; Recommendation Change to: vestingToken.safeTransferFrommsg.sender, addressthis, amount; --- The text was updated successfully, but these errors were encountered: All reactions...

7.1AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.9 views

InvestorDistribution uses setAdmin anti-pattern

Handle elprofesor Vulnerability details Impact InvestorDistriubtion.sol uses a setAdmin function which directly sets privileged user accounts to a set value. If this function is used incorrectly or by accident, the admin user may be lost or set to a malicious account. Recommended Mitigation Steps...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.7 views

Unchecked low level calls

Handle Reigada Vulnerability details Impact The return value of these low-level calls are not checked, so if the call fails, the Ether will be locked in the contract. Setting the risk as medium as the smart contract has no function to withdraw the Ether. This Ether would remain stuck in the...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

Swap does not provide best rate

Handle gzeon Vulnerability details Impact The custom swap curve depends on having 2 different A value, which is returned by determineA function based on current price and targetprice. targetprice also change tokenPrecisionMultipliers which is used in the swap calculation. These behavior may lead ...

6.7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.11 views

Vestings' revoke status can be set by anyone

Handle cmichel Vulnerability details The idea of revoking vesting supposedly exists for the admins to call Vesting.revoke and claim back a user's vesting. However, if the user wants to protect their vesting from being revoked by the admin, they can create a new vest with isRevocable = false and a...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/10 12:0 a.m.6 views

dev_rugpull() May be Misuse To Obtain Investors' Tokens That Does Not Belong To Admin

Handle Meta0xNull Vulnerability details Impact devrugpull Allow Admin to Transfer All Tokens to his/her wallet after 5 Years. However, Unclaimed tokens does not belong to dev by default. If someone lose their key, then lose their fund is normal in crypto. In the BOOT token allocation article belo...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.8 views

Ideal balance is not calculated correctly when providing imbalanced liquidity

Handle jonah1005 Vulnerability details Impact When a user provides imbalanced liquidity, the fee is calculated according to the ideal balance. In saddle finance, the optimal balance should be the same ratio as in the Pool. Take, for example, if there's 10000 USD and 10000 DAI in the saddle's...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.8 views

Permissioned nature of TwapOracle allows owner to manipulate oracle

Handle TomFrench Vulnerability details Impact Potentially frozen or purposefully inaccurate USDV:VADER price feed. Proof of Concept Only the owner of TwapOracle can call update on the oracle. Should the owner desire they could cease calling update on the oracle for a period. Over this period the...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.9 views

Unchecked transferFrom call in Vesting

Handle loop Vulnerability details Vesting.sol makes use of the safeERC20 library to make transfer calls on the vestingToken as vestingToken does not seem to be a predetermined ERC20 token. There is however a transferFrom call on vestingToken which does not make use of the safeERC20 version. Impac...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.9 views

Wrong assumption when updating token balance

Handle rfa Vulnerability details Impact When there is a movement of token in the swap and addliquidity function, the balances reserve , is updated based on the difference between the before and after the user transfer the token, however if there is a user that accidently send a token to this...

6.8AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.13 views

Can not update target price

Handle jonah1005 Vulnerability details Impact The sanity checks in rampTargetPrice are broken SwapUtils.solL1571-L1581 if futureTargetPricePrecise = initialTargetPricePrecise, "futureTargetPrice is too small" ; else require futureTargetPricePrecise =...

6.7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.9 views

Unchecked transfer

Handle 0v3rf10w Vulnerability details Impact Unchecked transfer leading to free deposits to attacker account Proof of Concept function :: BasicSale.processWithdrawaluint256,uint256,address tge/contracts/PublicSale.sol212-229 Several tokens do not revert in case of failure and return false. The...

7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.10 views

Unbounded loop in TwapOracle.update can result in oracle being locked

Handle TomFrench Vulnerability details Impact Loss of ability of TwapOracle to update should too many pools be added. Proof of Concept TwapOracle allows an unlimited number of pairs to be added and has no way of removing pairs after the fact. At the same time TwapOracle.update iterates through al...

6.7AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.8 views

setAdmin function use one-phase owner transfership instead of two-phases safer ownership transfer

Handle mics Vulnerability details one-phase ownership transfer sometimes used wrong and the ownership is transferred to a not existing account. The safe way to use it is to suggest new owner and then the new owner should claim its ownership. InvestorDistribution line 212 --- The text was updated...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.6 views

Unchecked low-level calls

Handle 0v3rf10w Vulnerability details Impact Unchecked low-level calls Proof of Concept Unchecked cases at 2 places :- BasicSale.receive 2021-11-bootfinance/tge/contracts/PublicSale.sol148-156 ignores return value by burnAddress.callvalue: msg.value...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/09 12:0 a.m.8 views

Should a Chainlink aggregator become stuck in a stale state then TwapOracle will become irrecoverably broken

Handle TomFrench Vulnerability details Impact Inability to call consult on the TwapOracle and so calculate the exchange rate between USDV and VADER. Proof of Concept Should any of the Chainlink aggregators used by the TwapOracle becomes stuck in such a state that the check on L143-146 of...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/08 12:0 a.m.9 views

Overwrite benRevocable

Handle gpersoon Vulnerability details Impact Anyone can call the function vest of Vesting.sol, for example with a smail "amount" of tokens, for any beneficiary. The function overwrites the value of benRevocablebeneficiary, effectively erasing any previous value. So you can set any beneficiary to...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/08 12:0 a.m.8 views

Investor can't claim the last tokens (via claim() )

Handle gpersoon Vulnerability details Impact Suppose you are an investor and want to claim the last part of your claimable tokens or your entire set of claimable tokens if you haven't claimed anything yet. Then you call the function claim of InvestorDistribution.sol, which has the following...

6.9AI score
Exploits0
Code423n4
Code423n4
added 2021/11/08 12:0 a.m.13 views

Unable to claim vesting due to unbounded timelock loop

Handle nathaniel Vulnerability details Impact The timelocks for any beneficiary are unbounded, and can be vested by someone who is not the beneficiary. When the array becomes significantly big enough, the vestments will no longer be claimable for the beneficiary. The vest function in Vesting.sol...

7AI score
Exploits0
Total number of security vulnerabilities10190