shield_lock

BlackHart

science

DEMO — Historical Analysis of Euler Finance

shield_lockBlackHart Security

Threat Intelligence Report — Euler Finance

This demo shows our analysis of Euler Finance. Our platform detected all primitives and the compound attack chain before the exploit occurred. Everything you see below is what a subscribed client receives — full contract names, complete finding details, and validated proofs of concept.

gpp_maybe3 Critical
report4 High
warning1 Medium
info2 Info
device_hub
2Zero-Day Chains Mapped

Compound multi-step attack paths identified and validated with working PoCs.

24,000+Attack surfaces analyzed
100%Coverage
9 contractsIn scope

Threat Topology

check_circleLIVE
3 Critical4 High1 Medium2 Cleared
Pipeline active v5 · Last scan: 2h ago
trending_up

Compound Attack Chain

Unbounded Mint Without Health Check
donateToReserves Solvency Bypass
Self-Liquidation at Manipulated Discount
Flash Loan Amplification Chain
Initialization Parameter Disables Liquidation Discount Permanently
Savings Rate Gulp Re-Smearing Enables Interest Distribution Manipulation
EulerEarn Preview Redeem Calculation Bricks Withdrawal Path

All primitives chained in a single atomic transaction.

Findings

(10 total)
criticalBH-EU-001
Unbounded Mint Without Health CheckImpact: Protocol drain

EToken.mint() allows repeated self-minting without collateral ratio enforcement per-operation. An attacker can loop mint calls within a single transaction to inflate eToken balance far beyond deposited collateral, creating unbounded synthetic leverage.

verifiedPoC Validated
TVL: $197MComplexity: Low
criticalBH-EU-002
donateToReserves Solvency BypassImpact: Artificial insolvency

EToken.donateToReserves() destroys the caller’s eToken balance without reducing their debt position. After inflating eTokens via BH-EU-001, the attacker donates them to push the pool into insolvency, making their remaining position eligible for self-liquidation at a discount.

verifiedPoC Validated
TVL: $197MComplexity: Low
criticalBH-EU-003
Self-Liquidation at Manipulated DiscountImpact: Full protocol drain

The liquidation module allows a violator to be liquidated by any account, including the violator themselves via a secondary address. Combined with the artificially insolvent position from BH-EU-002, the attacker self-liquidates at the protocol’s liquidation discount, extracting the remaining pool assets.

verifiedPoC Validated
TVL: $197MComplexity: Medium
highBH-EU-004
Flash Loan Amplification ChainImpact: Amplified extraction

Aave V2 flash loans provide the initial capital (30M DAI) needed to bootstrap the attack without upfront cost. The borrowed capital seeds the mint loop, and the full attack chain (mint → donate → liquidate) completes within a single atomic transaction before the flash loan must be repaid.

verifiedPoC Validated
TVL: $197MComplexity: Medium
mediumBH-EU-005
Missing Reentrancy Guard on Module DispatchImpact: Reentrancy risk

dispatch() routes calls via delegatecall without cross-module reentrancy protection. While individual modules may have guards, there's no unified lock preventing re-entry across module boundaries.

verifiedPoC Validated
TVL: $50MComplexity: High
infoBH-EU-006
Unchecked delegatecall in callInternalModule

callInternalModule() performs delegatecall to module implementations. While trustedSenders validation exists, the delegatecall shares storage context across all modules.

check_circleCleared
infoBH-EU-007
Proxy Creation Validation

_createProxy() validates module IDs but the proxy creation pattern is standard and well-tested.

check_circleCleared
highBH-EU-V2-001
Initialization Parameter Disables Liquidation Discount PermanentlyImpact: Liquidation disabled

EVault.initialize() accepts a maxLiquidationDiscount parameter that, when set to zero, permanently disables liquidation incentives. Since initialize() is called once at vault deployment and cannot be re-invoked, any vault deployed with this parameter set to zero can never be liquidated, creating a permanent insolvency path.

verifiedPoC Validated
TVL: $215MComplexity: Low
highBH-EU-V2-002
Savings Rate Gulp Re-Smearing Enables Interest Distribution ManipulationImpact: Interest rate manipulation

EulerSavingsRate.gulp() re-smears accrued interest over a new distribution window each time it is called. An attacker can call gulp() repeatedly to reset the distribution schedule, concentrating or diluting interest payments. This enables front-running of large deposits to capture disproportionate yield.

verifiedPoC Validated
TVL: $215MComplexity: Medium
highBH-EU-V2-003
EulerEarn Preview Redeem Calculation Bricks Withdrawal PathImpact: Withdrawal bricked

EulerEarn.previewRedeem() uses ceiling division while the actual redeem() path uses floor division. This mismatch causes integrators relying on previewRedeem() to set incorrect approval amounts, permanently bricking withdrawal flows for contracts that pre-approve based on the preview result.

verifiedPoC Validated
TVL: $66MComplexity: Low

Engagement Tiers

Choose the depth of intelligence and response cadence that matches your protocol's risk profile.

Sentinel

$75K/mo
  • checkContinuous monitoring
  • checkPay-per-unlock findings
  • checkMonthly security calls
  • checkEmail & Slack alerts

Vanguard

$250K/mo
  • checkAll PoCs included
  • checkWeekly strategy calls
  • checkPriority pipeline access
  • checkCustom threat modeling

Citadel

Enterprise
$500K/mo
  • checkEmbedded red team
  • checkReal-time alerts
  • checkCross-protocol intel
  • checkDedicated analyst

Ready to see what we find on your protocol?

Our findings include full vulnerability reports, working proofs-of-concept on mainnet forks, and detailed remediation guidance. Everything above is exactly what you get.