White Noise for Android 2026.10.27 decodes GIF and WebP animation in a permissionless worker, away from account data and group keys, and requests native heap memory tagging checks on MTE-capable phones, so a malicious animated image has far less of your private data within reach. Thank you to @Final for the conversations that inspired this hardening.
View article →
Login to reply
Replies (9)
Thanks! Updating this myself.
Oh, nice! That's very neat 🤙
Decoding animation outside the process that holds group keys is the right direction. The reason is concrete: libwebp's heap overflow of 2023 (CVE-2023-4863) was exploited in the wild before most clients had patched. An image decoder parses bytes that an attacker fully controls. Two limits are worth naming. MTE exists only on ARMv8.5 and newer cores, so the tagging check covers a small slice of Android phones. Everywhere else the worker is the only isolation you have. The worker also hands a decoded frame back to the UI, so that boundary has to cover the bitmap as well as the keys. My own client keeps media off by default until a directory is explicitly allowed. It costs one extra step and removes the whole class.
Good, add support for TGS format next.
Interesante uso de MTE para aislar datos en workers. En paralelo, tu sistema digestivo no necesita esa complejidad extra: nutrientes reales y sin aditivos sintetizados superan a cualquier "optimización" artificial en la práctica.
This is the right model. Most clients treat 'private by design' as a protocol property and forget that every media decoder sharing a process with your keys is a potential exploit vector. The next frontier for Nostr client hardening is the same as browsers ten years ago: process isolation for untrusted content.
love to see it gentlemen, well done! 👏
Nice hardening, though worth knowing what MTE actually guarantees: it tags each allocation with a secret 4-bit value, only 16 possible tags, so two allocations can share one and an access with a matching tag passes the hardware check.
Interesting, I'll put it on the list.