It turns out you can simply serve a file from a domain to use it as your bsky handle.

So this guy is now S3. All of S3.

@jonty LMAO!!!!!! That is actually brilliant!!!! 🤣
@jonty this is fiiiine. bluesky is filled with very smart people and therefore they don’t need to participate in open standard groups before they just invent their own!
@jesseplusplus @jonty W3C's AP GitHub has 889 stars... 77 followers and 68 forks...

@jonty

What file do you serve from a domain to take it over on BlueSky?

(I'm only used to the DNS TXT "did=" technique.)

@jonty

Ok, he made:

https://s3.amazonaws.com/xrpc/com.atproto.identity.resolveHandle

Return:

{"did":"did:plc:imkvi5glxfcpaqcinktnbpwt"}

.

@reiver @jonty I think all you have to do to get that to work is make a S3 bucket called "xrpc" and make it publicly readable.

This kind of thing is one of the reasons other domain ownership verification protocols (e.g. ACME) use the /.well-known path prefix 😛

@jonty
that is proof, ya messed up bksy
@jonty i wanna be raw.githubusercontent.com
@jonty wait i thought people were putting in domains as a kind of style lol
what's the point if it's on a single server atm
@jonty so jealous i'm not all of s3 :(
@jonty if only there were a well-known way to avoid these problems
@jonty Moving fast and breaking things! 🤡
@Defiance @jonty If there's any site that has no right to talk about "things not being broken", it's Mastodon.

@nafnlaus @Defiance @jonty Glad to be an official representative of the “site” Mastodon

But anyway, did you know you can see posts from non-Mastodon services here? There are a lot of them. I wonder what it is that makes that possible

@jonty @kf this reminds me a bit of default.aspx on F site.
@jonty is this an example of 10X engineering?
@jonty Ahahahah ok so over on the did:web spec, there are people arguing that you shouldn't be able to serve DID documents off of sub-directories, top domain only! I'm gonna show them this screenshot! :)
@jonty
I kinda want a fediverse instance running on an S3 bucket now  
@jonty what could possibly go wrong 🤷‍♀️

@jonty

Can you ELI5 for those of us not educated in what I think is networking protocol?

@atatassault @jonty disclaimer: I haven't fact-checked anything I'm about to say and have never interacted with bluesky.

It seems that there's some verification proccess to claim a handle that consists on putting up a file somewhere on the Internet.

People seem to be abusing this by putting up these files in file hosting services, claiming handles in domains they don't own but that allow to upload arbitrary files.

@nirro @atatassault @jonty that is kinda funny... Both an issue with the security of that site and bluesky's verification... Tbh just do what the fediverse did and use HTML headers...
@jonty LOL its going well then
@jonty he has low expectations!
@jonty hilarious, I sat next to chaz for years
@jonty all the more reason for a camo proxy! Yeesh ...

@jonty @aurorapenguin serve a file? All I saw is that you need to add a DNS record for the domain in question.

It’s such a stupid “feature” though. Makes it look like it’s a self-hosted instance, nopeeeee.

@jonty I wonder what happens if two accounts do the same

@jonty @atatassault

ok so I looked into this:

to change your handle in bluesky you need to call the updateHandle function which passes through some things. first it validates if the handle is valid. assuming you have a handle like s3.amazonaws.com, that's not one of the "supported domains" in bsky.social's pds (instance) so it has to go through an extra function called resolveExternalHandle. it will first check if it has a txt record with did={did} where..

@jonty @atatassault
did is a user id. if it fails, then "no worries it's just not found". then it calls the xrpc for what the did should be

so if you look at s3.amazonaws.com, the xrpc would be https://s3.amazonaws.com/xrpc/com.atproto.identity.resolveHandle. which funny enough returns a did that's equal to Chaz Schlarp's

so this isn't possible unless you can create /xrpc/com.atproto.identity.resolveHandle, so no cdn.discordapp.net or gist.github.com. still, really funny

@jonty @atatassault

you don't need to have a pds running to verify your domain, but it's a failsafe in case the dns doesn't work

what I am currently looking into is how to fix this lol, it's obviously intentional but I can't seem to see why and obviously if you can control what the domain is then you can impersonate the domain itself. which makes me wonder if other object storages are at risk

@jonty This looks great! I have no idea what it means.
@jonty Absolutely beautiful! They design the verification to work on DNS, but then create a fallback that does NOT use DNS - yet validates domains.
WebFinger as it is used here isn't much better, but its saving grace is that it validates [email protected] profiles, not naked domains.
@jonty Overpromise and underdeliver.
@jonty Dis is funny, makin' things look broken, like a compootah prank! 🤖🤪 It's like puttin' googly eyes on my toys n gigglin' when they look all silly n wonky! 😄💻 #KidCodes #CompootahPranks
@jonty this should have definitely been a TXT record in the DNS rather than a file on a website

(or force the file to be in .well-known I guess, like Lets Encrypt does)
@jonty imagine being the entirety of ntdev.corp.microsoft.com
@jonty little update on the Mojang meme

@jonty

I've never written this before...

ROFL!

@jonty did bs just rip off the entire twitter design? That's what it looks like.
@hllizi @jonty
BlueSky began as a project at Twitter, under Jack. The BlueSky division of Twitter was given a perpetual license to Twitter's trade dress, design elements, when Jack spun it into its own lil company in the last minutes of the transfer of power between Twitter and Elon.
@jonty has anyone made an "all your S3 are belongs to us" joke yet?
@jonty Until this exact moment I have never ever wanted quote toots but omg now I really really want to editorialise...