safe-global / safe-apps-list

MIT License
20 stars 31 forks source link

Add FailSafe App #345

Closed aamirethlas closed 6 months ago

aamirethlas commented 7 months ago

Entry type

App info

URL: app.getfailsafe.com

Name: FailSafe

Description: FailSafe is designed to deal with game-over scenarios: where an attacker learns the victim wallet's private key or seed phrase, or gains an unlimited token allowance via phishing or smart contract compromise.

FailSafe works with Safe to add an extra layer of protection. It keeps an eye on all transactions that try to move money out of the wallet. If it sees something suspicious, it steps in quickly to move the money to a safe vault (FailSafe Recovery Vault).

Icon (PNG, 180x180): failsafe_logo_square

Homepage: www.getfailsafe.com Twitter: https://twitter.com/protectmywallet GitHub: Private

App supports batching multiple transactions via Safe: no

Supported networks

- Ethereum Mainnet
- Binance Smart Chain
- Polygon

Revision checks

Audit document

Link to smart contracts audit.

Code for review

Private

Team information

Company: FailSafe

Official website: www.getfailsafe.com

Email: aamir@ethlas.com

Telegram: aamirorbit

Twitter: https://twitter.com/protectmywallet

katspaugh commented 7 months ago

The app doesn't seem to have a manifest.json

Screenshot 2024-04-19 at 12 36 25

Nvm, figured out the right URL is https://app.getfailsafe.com

katspaugh commented 7 months ago

It's not autoconnecting to the Safe.

Screenshot 2024-04-19 at 12 38 41
aamirethlas commented 7 months ago

@katspaugh Its do the auto connect with the safe, this "connect wallet" button is used to communicate with the owner wallet, so that they can authenticate within FailSafe on behalf of MultiSig Safe Wallet

katspaugh commented 7 months ago

It's not how we expect Safe Apps to work. If you need to verify a login signature, the app should request a EIP-1271 signature from the Safe itself.

kirkkonen commented 7 months ago

Approved from the product perspective.

aamirethlas commented 7 months ago

@katspaugh Initially, we implemented the login process as you suggested.

However, after getting feedback from our Enterprise customers, this approach faced many challenges. Based on their input, we transitioned to a single-owner signature verification method, to perform the actions within FailSafe.

But all the onChains transactions, go with Safe Standard, like approval or token transfer, which requires multiple owner verification.

katspaugh commented 6 months ago

Why does "protecting" DAI involve giving an unlimited approval to an EOA?

Screenshot 2024-05-16 at 08 32 54 Screenshot 2024-05-16 at 08 31 06
arimed4000 commented 6 months ago

@katspaugh in order to front run the attacker (in case the attacker learned the user's seed phrase/priv key or other compromises) the user grants permission to a predicted address (via create2) - that is the address of a dedicated FailSafe wallet contract that will be deployed as part of the front run (if this is the first time its happening). You can see the implementation code here of the failsafe orchestrator on polygon is this case of how is happens: failsafe orch impl

The Failsafe wallet contract (code for the address that allowance is being granted to): can be seen here:FailSafe wallet impl the allowance enables the defend method to work (i.e., move the funds to the failsafe wallet contract where the user is afterward able to withdraw/recover funds.
The Failsafe interceptor product is part of the defense in depth arch for web3 that we published here:failSafe Paper

katspaugh commented 6 months ago

I see, thanks for the detailed response, it makes sense. I guess there's no way for Redefine to tell a create2 address from an EoA w/o knowing the input parameters.

We'll discuss the implications with the team and I'll get back to you.

katspaugh commented 6 months ago

After discussing with the team, we unfortunately decided not to include your app in the official list.

Reasons are:

Especially given the last point, we're not comfortable endorsing your app in our official UI at this time. You can still onboard Safe users via WalletConnect or as a custom app.

Thanks for taking the time to develop and submit the app, we appreciate your commitment to the ecosystem!