Content pfp
Content
@
https://warpcast.com/~/channel/amps
0 reply
0 recast
0 reaction

phil pfp
phil
@phil
POSTMORTEM On Sunday, July 13th, the Amps smart contract was exploited. This document outlines the timeline, root cause analysis, mitigation plan, and next steps taken. ## Timeline - Jul-13-2025 09:25:33 AM +UTC: A malicious contract is deployed by attacker. - Jul-13-2025 09:43:21 AM +UTC: The reinitialize() function is called on the Amps proxy contract by the attacker, allowing them to change the implementation address and change ownership. - Jul-13-2025 09:45:21 AM +UTC: First draining transaction submitted. - Jul-13-2025 09:50:39 AM +UTC: Final draining transaction submitted. - Jul-13-2025 09:53:31 AM +UTC: Attacker bridges stolen funds. - Jul-13-2025 03:20:00 PM +UTC: Amps team is notified of exploit. - Jul-13-2025 03:40:48 PM +UTC: Amps miniapp is taken offline while assessment underway. - Jul-13-2025 03:43:26 PM +UTC: Phil posts update notifying users that the mini app is offline. - Jul-13-2025 05:04:55 PM +UTC: Exploited is patched. - Jul-13-2025 06:37:17 PM +UTC: Refunds sent to all affected users. - Jul-13-2025 07:48:00 PM +UTC: All affected users notified via DM. - Jul-13-2025 07:49:00 PM +UTC: Phil posts announcement with update regarding exploit. - Jul-13-2025 10:13:00 PM +UTC: Phil posts postmortem. ## Root Cause Analysis The Amps v2 contract uses a proxy / implementation pattern. The proxy contract contained a function, reinitialize(), that allowed administrator wallets to update the owner and change the version number of the proxy contract, up to a maximum version. This function did not contain adequate protections to prevent the attacker from changing the ownership of the proxy contract. The attacker was able to use this function to update the owner and fee recipient, as well as upgrade the implementation address of the proxy contract. After changing the contract owner, the attacker upgraded the implementation contract tied to the proxy contract and submitted a series of transactions targeted at wallets with an open USDC token approval to the Amps contract and a Base USDC balance. 112 users were affected for a total of $6,711. ## Mitigation After discussing with the Farcaster team, the Amps team took advantage of the same exploit used by the attacker to retake control of the contract and set a maximum version number, preventing future attempts at changing the implementation contract logic. The Amps miniapp was taken offline to prevent users from interacting with the contract and all affected users were sent a direct message containing a custom mini app to revoke USDC approvals to the contract. All users were refunded their total USDC balance lost due to the exploit. ## Next Steps The Amps miniapp remains offline while we complete our postmortem. We will continue to field questions and intend to revert the product to the simpler v1 contract to mitigate downtime for our users who rely on the service. The v2 contract will undergo an extensive review process before being reintroduced and we will revisit the product functionality that allowed users to carry large approval balances to our contract. I apologize to anyone who was affected by this exploit, and we are committed to transparency so others in the ecosystem can learn from this situation.
13 replies
14 recasts
93 reactions

Patrick | Megapot pfp
Patrick | Megapot
@pl
thanks for being so open with this and processing refunds excited for y'all to bounce back stronger than ever!
0 reply
0 recast
5 reactions

frederick pfp
frederick
@securityadmin.eth
ty for the update phil. very good tips for the user community. it's a reason i still use @metamask for most of my transactions because they have an easy way to limit your spending cap. i've found that rainbow doesn't have this feature, don't remember with cbw. might also be good if the fc wallet offered a revoke option
0 reply
0 recast
3 reactions

basil (propagation arc) pfp
basil (propagation arc)
@itsbasil
good recap thanks phil
0 reply
0 recast
3 reactions

potato pfp
potato
@potato
@goldie might find this interesting
0 reply
0 recast
3 reactions

nuel. 🎩 pfp
nuel. 🎩
@nuelprime
we love amps
0 reply
0 recast
2 reactions

Colin pfp
Colin
@colin
Really appreciate the transparency, quick resolution, & making affected users whole. Well handled
0 reply
0 recast
1 reaction

kompreni 🚂 pfp
kompreni 🚂
@kompreni
Sorry to hear this happened.
0 reply
0 recast
1 reaction

nerd pfp
nerd
@nerrd.eth
Exploits happen a lot in crypto what matters is you owned up to it took responsibility and made things right for those affected, appreciate that, wishing your miniapp success
0 reply
0 recast
1 reaction

Brenner pfp
Brenner
@brenner.eth
I appreciate the transparency. Were the contract contracts audited by an audit firm?
0 reply
0 recast
0 reaction

caso pfp
caso
@0xcaso
that’s sad, I feel sorry for you guys ❤️‍🩹 keep it up, amps is very good!
0 reply
0 recast
2 reactions

shoni.eth pfp
shoni.eth
@alexpaden
Just say you didn’t audit your contract I’m not reading all that
0 reply
0 recast
1 reaction

Carl Gustaf 👨🏼‍💻 pfp
Carl Gustaf 👨🏼‍💻
@0xbob
Sorry to hear that Phil, I’m interested hearing a bit more about the access control implementation if you have any time. Could do it in DMs if that would be preferred. Otherwise class A communication on this.
0 reply
0 recast
0 reaction

Mikasa🦋🖤 pfp
Mikasa🦋🖤
@ayeeshaxoxo
Tf? Same way farcasteradmin was giving series of explanations that day
0 reply
0 recast
0 reaction