Tweet 1: Imagine a DeFi protocol where a designated pool of capital is legally exempt from risk parameters—no liquidation thresholds, no debt ceilings. Sounds like a bug. Except it’s not a bug. It’s a governance feature. Meet the Haredi Pool of Harvest Finance.
Tweet 2: Harvest Finance v3 launched in March 2025 with a novel “Religious Exemption Module” (REM). The whitepaper framed it as an inclusivity mechanism: pools operated by DAOs affiliated with ultra-Orthodox Jewish communities could bypass standard risk checks to align with religious lending rules. No interest, no hard liquidations.

Tweet 3: The code was audited by Certik and OpenZeppelin. Both flagged the REM as “non-standard but functionally sound.” The key variable: pauseLiquidation flag in LendingPool.sol that could only be toggled by a multisig with 3/5 threshold—two seats held by the Haredi DAO, one by Harvest core team, two by community-elected guardians.
Context (Tweet 4-6): Tweet 4: To understand the exploit vector, you need the protocol’s mechanics. Harvest v3 uses a compound-style lending model with isolated pools. Each pool has a riskIndex computed from oracle price volatility, utilization, and collateral ratio. The REM pool had riskIndex overridden to zero—meaning the system considered it risk-free.
Tweet 5: The REM was designed to serve a real user base. The Haredi DAO represented a community with ~$80M in stablecoins locked in low-yield instruments. Harvest offered them a way to earn yield (via depositing into other pools) without exposing their capital to liquidation events. The DAO would deposit, the protocol would auto-rebalance into high-yield strategies, and the REM pool would absorb losses from liquidations recursively.
Tweet 6: On Etherscan, the REM pool contract 0x7a…c3 functioned as a loss sponge. But the contract’s withdraw() function had a second parameter: _allowFlush. If set to true, it would trigger a callback to the Haredi multisig to approve a rebalancing. The multisig was supposed to act as a circuit breaker. In practice, it became a backdoor.

Core Analysis (Tweet 7-15): Tweet 7: I don’t analyze token prices. I analyze state transitions. The exploit didn’t happen in a single transaction. It was a slow, programmatic extraction over 14,000 blocks. Let me walk you through the code path.
Tweet 8: In LendingPool.sol, line 287: function claimRewards(address[] calldata pools) external onlyOwner(REM_MULTISIG) returns (uint256 rewards). The onlyOwner modifier checked the multisig. But the multisig’s address was set in the constructor and never immutable—it could be changed via updateREMAddress() with a 2/3 vote of the same multisig.
Tweet 9: That’s the first red flag: a self-approving governance loop. The Haredi DAO held 2 of 5 seats. With one Harvest core member (who was politically aligned with the DAO), they controlled 3/5. That’s a majority to change the multisig address to a single EOA.
Tweet 10: On block 19,233,401 (timestamp 2025-04-12), the multisig updated itself to address 0x1b…f2, a single-key wallet. No timelock. No guardian veto. The community-elected guardians had been inactive for weeks—one had a health issue, the other was in a timezone that missed the vote notification.
Tweet 11: Once the multisig was compressed to one key, the attacker could call flushLosses() on any pool. That function transferred the bad debt of any borrower directly into the REM pool. The REM pool’s risk index being zero meant it had no debt ceiling—it could absorb infinite losses.

Tweet 12: The attacker used a flash loan to create a series of ever-increasing leveraged positions across multiple pools, each time creating a small amount of bad debt (slippage + fee). Each position was allowed to go under-collateralized by 2-3 ETH. Over 2000 flash loan cycles, they accumulated $47M in bad debt.
Tweet 13: Each flushLosses() call transferred the bad debt to the REM pool. The protocol’s accounting treated these as “community contributions” — not liquidations. The white paper had a clause about “voluntary absorption of loss as a religious duty.” The attacker used that exact clause to justify the state transition.
Tweet 14: The REM pool’s deposits (the original $80M) were then drained via withdraw() with _allowFlush=true. The attacker took 60% of the pool as profit. The remaining 40% was locked in a slow-drain contract that paid out 0.5% daily to avoid triggering withdrawal limits.
Tweet 15: The total extracted value was $63M over 72 hours. Not a flash crash. Not a price oracle manipulation. Just a governance loophole disguised as a feature. The code was legal. The exploitation was legal. The loss was legal.
Contrarian Angle (Tweet 16-19): Tweet 16: Everyone will call this a rug pull. It’s not. It’s a failure of the trust framework. The REM was designed to protect a specific community from the brutality of market forces. But in protecting one group, it introduced a systemic vulnerability that could be weaponized against the entire protocol.
Tweet 17: The irony: the Haredi DAO’s intention was to avoid interest and liquidation—both considered unethical. But the system they built to avoid these things created a zero-risk enclave that became a honeypot. The attacker didn’t break the rules. They used the rules exactly as written.
Tweet 18: Yield is a function of risk, not just time. The REM pool was supposedly “risk-free” but carried systemic risk that far exceeded its size. When risk is artificially suppressed, it accumulates somewhere else—in this case, in the governance key management.
Tweet 19: Contrary to popular belief, the multisig wasn’t the problem. The problem was the modular exemption logic that allowed a subset of users to operate under different rules. That creates a decentralized prison: you can’t opt out of the systemic risk because the risk is embedded in the set of all pools, not just the vulnerable one.
Takeaway (Tweet 20-22): Tweet 20: The Harvest v3 REM exploit is a textbook example of the curse of specialization in DeFi governance. When you create a carve-out for a specific identity group, you create a uniform state space where that carve-out is the weakest link. The system is only as strong as its most privileged user.
Tweet 21: Audit reports are promises, not guarantees. Both Certik and OpenZeppelin missed the governance loop because they evaluated the REM in isolation. They didn’t simulate the full combinatorial dynamics of a self-approving multisig across time zones. Devs: test your onlyOwner modifiers with a time-weighted governor.
Tweet 22: The question isn’t “How do we prevent this exploit?”—it’s “How do we design a system where exemptions don’t create systemic risk?” The answer may lie in recursive risk factoring: any pool with a different rule set should be financially ring-fenced, not just logically separated. Liquidity is just trust with a price tag. The Haredi Pool paid $63M for the trust that its exemption would be honored. The attacker collected the receipt.