Invisible character bug - no warnings

Someone on twitter going by @ledegend_eth (ledegened.eth) has discovered quite a serious bus that scammers will start to use very quickly no doubt.

“busy submitting bug reports. managed to successfully register undetectable hidden character domains. this not good”

They have managed to register a domain with hidden characters, successfully impersonating 0000.eth, without any warnings on any website being displayed for it. Opensea even categorises it as being in the 10k club!

Here’s a link to the opensea item:
https://opensea.io/assets/ethereum/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/55238440828741901086954412487065650333399353573786767621428045863332448413780

Devs pls fix…

3 Likes

This was already fixed a while ago on the ENS side actually. See the ENS metadata service response here: https://metadata.ens.domains/mainnet/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/55238440828741901086954412487065650333399353573786767621428045863332448413780

{"message":"TokenID of the query does not match with labelhash of 0000.eth"}

So it’s correct on the ENS side, it’s just the marketplace website being slow to delist. The metadata response is a 404 so ideally they should not list the name in the first place.

3 Likes

Hmm. It seems it’s listed on every marketplace except ens.vision.

How long ago was it fixed? Do you have a link to any discussions?

It was reported by @lcfr.eth almost a year ago I think, and done through the proper private channels, by e-mailing bugs@ens.domains.

FYI OpenSea has delisted it now https://opensea.io/assets/ethereum/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/55238440828741901086954412487065650333399353573786767621428045863332448413780

1 Like

Oh yes it does seem delisted now… I wonder if they did it manually or not.
Anyway, thanks for your replies.

This is a reversion of the bug reported by lcfr. He reported it again, and we’ve since re-fixed it. We’re putting in place mitigations to make sure it can’t happen again.

4 Likes

I think the problem still exists - I bought domain on opensea and after the purchase non-ascii character appears - I have a message on ens: "Error syncing data. This data may be out of date. Please use caution. "
“This name contains non-ASCII characters. There may be characters that look identical or very similar to other characters, which could be used to deceive readers.”
Can I do something with this domain or not? On the opensea, you couldn’t see that there was any extra mark there.

Hi, could you share the ENS name that’s affected by this?

As for the other two parts of your question:

  1. “This name contains non-ASCII characters”
    This is just a warning message to say that the ENS name contains non-ASCII characters. It will show for any name containing unicode symbols for instance and doesn’t indicate that there’s a problem with the name.

  2. “Error syncing data”
    Normally this error message is intended to show whenever the subgraph lags, but there’s a bug in the manager that causes this message to be displayed for any name with non-ASCII characters on the first load of the page. I’ve reported this bug to the front-end team, but you can work around it easily by just refreshing the page which should make it go away.

If the issue is that the name was displayed in a certain way that hid invisible characters on OpenSea, but not in the ENS Manager, then this is an issue with OpenSea rather than ENS, but it’d be helpful to know more about it so that we can relay it to OpenSea.

That issue about OpenSea - that I did not see there.
after the purchase, I saw this sign only in the ens manager.
That domain: £6555.eth
I think I buy from that user: https://opensea.io/0x3991e3BD4EbAefC64f358A28E9b286fCBE9eFAD5
TX from this transaction:
https://etherscan.io/tx/0x1f3127a98e19a3394cf16a8274ad3c01030292f1ce3653a9d99700372bd180ca
Thanks for your respond.

I took a look at the name and I don’t see any invisible characters for £6555.eth. It also displays consistently and correctly across etherscan, opensea and the ENS manager:

Etherscan displays the name correctly (link):

OpenSea displays the name correctly (link):

ENS Manager displays the name correctly (link):

Unicode Analyzer doesn’t show any invisible characters (link):

Is it possible that you simply confused the pound sign £ for a number due to the font in your browser, or by looking at it quickly? If not, could you show me a screenshot of where it displays incorrectly?

1 Like

Thank you for your response. I was in no hurry. I compared another domain and I did it very slowly and I was careful because I know in the crypto world there are people who want to scam you.
99,99% I am confident there was no yellow triangle and there was no display “Ł” sign. The first time, I saw this sign in ens.domain window and message about non-ASCII characters.
Now, in opensea I see this message and a warning message in my domain.
In this picture example, I attached everything looked the same, no non-ascii characters. There was no non-ascii character and I choose that kind of offer. I don have a screenshot from buy time.
I don’t blame anyone, I just wanted to know if these are scam practices.

Thanks again for your time.

(What is the purpose of such a domain?)

Hi again,

The screenshot you provided shows a name that experiences an OpenSea bug where the name hash shows instead of the ENS name. That’s not a scam practice, it’s just a bug. Refreshing the metadata for the name usually solves it:

opensea-unknown-1 (2)

Oh, Thats why I didnt see this warning message. Thank you! I didnt know that.
Is there any reasonable reason to set up domains with such characters? You can’t use them as primare after all.

Offtopic from me: would be nice to have a unicode analyzer on the ENS app.

That’s a great idea! I’ll relay it to the front-end team

You should be able to use any name that’s valid in ENS (including £6555.eth) as your Primary name. Due to the pound sign it might not be supported in all third-party services however, but we’re working on fixing that by rolling out our new normalization library :slight_smile:

You can always use my Resolver on Github to inspect names:

In my library, I offer two ways to token a name:

  • ens_tokenize(name) is an input-tokenizer that parses a name into tokens like Valid, Mapped, Disallowed, Ignored, NFC, Emoji, Separator
  • ens_split(name) is an output tokenizer that parses a name into an array of labels, each with list of tokens that are either Text or Emoji

A front-end inspector just needs to style the output of either of these functions.

Here is a quick example I created using the default styling I provide in my library.

3 Likes