# Users security proposals

**URL:** https://agora.multiversx.com/t/users-security-proposals/296
**Category:** MIPs
**Created:** [December 19, 2023, 4:06pm UTC](https://agora.multiversx.com/t/users-security-proposals/296 "2023-12-19T16:06:15Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![davyegld](https://dub1.discourse-cdn.com/flex005/user_avatar/agora.multiversx.com/davyegld/32/53_2.png) [@davyegld](https://agora.multiversx.com/u/davyegld)
#### Post date: [December 19, 2023, 4:06pm UTC](https://agora.multiversx.com/t/users-security-proposals/296/1 "2023-12-19T16:06:15Z")

</div>

One of MultiversX main pros is user security.

The absence of approval functions gives users a safe place to interact with smart contracts with no malicious draining attack risk.

Still I see some risks:

1. User don’t look at tx and signs a tx requiring for more funds than needed.

2. User sending the correct amount but malicious front-end send funds to a malicious address

3. I know, users should pay attention. But after signing thousands of txs it’ll happen that the user will not read it and sign it trusting the project he signed the txs for.  
If a bug happens or an hack is happening, the user may sign a tx requiring way more funds than needed to a smart contract.

Could even be an error when sending funds manually.

What I propose is a UI system in wallet that can do one of the two:

1. Add an additional window/banner with different colours if the tx is requiring more funds than the ones set by the user (user might set it up for txs worth over 100$)
2. Set one automatically when the user creates the wallet and allow to disable it.

The limit that triggers the pop-up message to appear could be a % of the total value of the wallet (tx requiring more than 5% of the wallet value) or/and a $ amount.

1. On this second issue I see this problem:

A malicious front-end similar to a known website or a known website which front-end is hacked. Users wouldn’t be drained, that’s corrrect, but they would sign txs sending funds to a malicious address.

Better than losing funds, but we can do more.

I propose a system of separated herotags for smart contracts, and a verifiable system that shows a verified status in wallets UI.

I see it working this way:

- Projects pay a fee for a particular herotag
- They can then name all of their smart contracts under it, like a tree design.

For hatom for example it’d be Hatom herotag and then all of their smart contracts named after that. Initially I’d set a precise fee for these smart contracts, an annual fee to keep it after which it needs to be renovated.

On xPortal I’d manually verify all the smart contracts of the projects added to the Hub, this way user can interact with all of them and instead of seeing a random address they’d see the project name + the name of the smart contract.

We’d then also need a way to ban malicious herotags, for example those using different letters similar to a known project. Or some sort of system to also prevent hackers using pishing websites with herotags similar to known projects.

Hat0m instead of hatom for example. Inside xPortal a verified badge would help, on top of the decentralized herotag system.

I’d keep the system with a fee to leave room for the, hopefully, thousands of project we’ll have in the future. Not having fees could make people take all the best names leaving strange and difficult to read herotags for users.

Fees could go directly to validators. In the UI I’d clearly show the difference between smart contracts for users and for projects/smart contracts.

Last thing I’d like is adding intent-oriented txs, making them easily readable in the txs we’re signing. Making it easy to understand what we’re signing and what will happen to our funds.

---

<div class="post-metadata">

### Author: ![paureigr](https://avatars.discourse-cdn.com/v4/letter/p/f08c70/32.png) [@paureigr](https://agora.multiversx.com/u/paureigr)
#### Post date: [December 19, 2023, 4:53pm UTC](https://agora.multiversx.com/t/users-security-proposals/296/2 "2023-12-19T16:53:59Z")

</div>

That will be so good to implement it! my 👍

---

<div class="post-metadata">

### Author: ![janniksam](https://avatars.discourse-cdn.com/v4/letter/j/edb3f5/32.png) [@janniksam](https://agora.multiversx.com/u/janniksam)
#### Post date: [December 19, 2023, 7:50pm UTC](https://agora.multiversx.com/t/users-security-proposals/296/3 "2023-12-19T19:50:26Z")

</div>

I’d like to add this to github issue discussion as well, because it suits the problem “1. User don’t look at tx and signs a tx requiring for more funds than needed”:

> <https://github.com/multiversx/mx-ledger-nano/issues/51>
>
> I've no idea, if this is possible, but let me try to explain, whats my problem w…ith the current app:
> 
> Every time I transfer tokens (for example to stake them), I have no idea as a normal user, what I'm actually signing. This is because everything in the data field is encoded into a hex string and represented the same way, which isn't readable for a human. 
> You would have to write down the whole data-message from the ledger and decode the whole data and try to interpret it every time you transfer tokens with (Multi)ESDTTransfers. The non-technical user won't be able to do this.
> 
> In my opinion, this results in a big security flaw, because a harmful site (in whatever form) could target you by sending a transaction to the ledger where you think you only send a specific token to an (actually harmful) address, but in reality the Ledger gets a MultiESDTTransfer, in which all your tokens are being transferred to someone else, would could have you loose your whole ESDT-portfolio in a single transaction.
> 
> In my opinion, a more readable form would be better, e.g. before the gas and network strings another message "Send 1337420 MEX-A15E to ...".
> 
> I'm not sure though, if the ledger application has the capabilities to decode such data fields.
> 
> \*\*Important:\*\* Should be self explanatory, but the decoding and the interpretation of the decoded data MUST be done on the ledger itself, otherwise the attacker would be able to just fake the message, if the "Send 1337420 MEX-A15E to ..." can just be passed from outside.

On ledger all we have right now is the encoded data field, which nobody can read (and I think its also cut short).

So I just wanted to add, that we really need a big improvement on ledger as well.

---

<div class="post-metadata">

### Author: ![metothex](https://dub1.discourse-cdn.com/flex005/user_avatar/agora.multiversx.com/metothex/32/83_2.png) [@metothex](https://agora.multiversx.com/u/metothex)
#### Post date: [December 19, 2023, 9:32pm UTC](https://agora.multiversx.com/t/users-security-proposals/296/4 "2023-12-19T21:32:51Z")

</div>

I like the idea of having a different color approval page, if the payment is more than a certain customisable amount (for example: a red approval button and/or red themed page)

---

<div class="post-metadata">

### Author: ![davyegld](https://dub1.discourse-cdn.com/flex005/user_avatar/agora.multiversx.com/davyegld/32/53_2.png) [@davyegld](https://agora.multiversx.com/u/davyegld)
#### Post date: [December 20, 2023, 3:34pm UTC](https://agora.multiversx.com/t/users-security-proposals/296/5 "2023-12-20T15:34:22Z")

</div>

I’d suggest looking at Ledger last announcement.

They intend to remove blind signing by June 2024.
