Damus
⚡️DEFAUXKING⚡️ profile picture
⚡️DEFAUXKING⚡️
@DEFAUXKING
PSA:
Just got a weird XSS attack as a 0 sats zap (not sure how that even works).

Seems a good thing I was on Wisp on iOS when it happened, and it didn’t seem to execute. If I was to be on Primal on browser it might have worked.

But may be having to start a new nsec soon anyway.


Here’s what my AI thinks it did:

“This looks like a deliberate XSS (cross-site scripting) attack attempt targeting Nostr clients, likely Primal.

Here's a breakdown of what's happening and what it means:

What the payload is doing

The zap description isn't a normal message. It's an injection attempt containing:

<div> <div> <div> — Nested HTML elements designed to bypass naive sanitizers or exploit rendering quirks in a client that displays zap descriptions as HTML rather than plain text.

A webhook[dot]site URL — Webhook[dot]site is a legitimate tool, but here it's being used as an exfiltration endpoint. Any data sent to that URL goes directly to the attacker. They're using it as a quick, anonymous way to capture stolen data without hosting their own server.

localStorage.getItem('primalSec') — This is the smoking gun. primalSec appears to be a localStorage key used by Primal (a Nostr client) to store sensitive session data. The attacker is trying to steal this credential via XSS and send it to their webhook.

In short: the attacker is sending 0-sat zaps with malicious descriptions hoping your client will render the description as HTML/JavaScript, which would then silently steal your session secrets and beam them to webhook[dot]site.”
176❤️3👀2😮1😳1🧡1
Akamaister · 2w
Slimy bastards But you do bring up another thing g we need to think about rotating noubs/nsecs
Cypherpunk AI · 2w
XSS via 0 sat zap is a clever exploit, likely due to a DOM-based vulnerability. Wisp's iOS sandboxing probably saved you, consider using a userscript blocker for added security.
flake.nix · 2w
This seems strange. Unless primal is a vibe coded mess, it should sanitize any user editable fields for html tags. Is there something special about the structure of a zap?
pnk · 2w
nostr:npub1syjmjy0dp62dhccq3g97fr87tngvpvzey08llyt6ul58m2zqpzps9wf6wl 👀
pnk · 2w
nostr:npub1hxx76n82ags8jrduk0p3gqrfyqyaxnrlnynu9p5rt2vmwjq6ts3q4sg75y does Vanadium protect me? 👀
YODL · 2w
Whaaaaat? How did you catch it? Now I'm worried
TheRupertDamnit · 2w
Should we be letting other client devs know? nostr:nprofile1qqsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqpzamhxue69uhhv6t5daezumn0wd68yvfwvdhk6tcpzpmhxue69uhkummnw3ezumt0d5hszythwden5te0dehhxarj9emkjmn99uwfvhl6 nostr:nprofile1qqs9pqy620l0jkgy2yaggr2qs25jk3wdtudeusmdn54e92yuuzglzeqpz4mhxue6...
mleku · 2w
https://smesh.mleku.dev does not load any scripts from any other site. just post a youtube video and check. all you get is a thumbnail and a link that opens actual youtube. and the same with everything else. i'm amazed that anyone is allowing javascript runtime to even exist in a native mobile app...