Niels Tanis

154 Followers
260 Following
256 Posts
Software Security Researcher & Engineer @ Tidalis | Former @ Veracode | Microsoft MVP

Static + dynamic analysis of Signal's APK. The good news first: Signal is genuinely exceptional.

Rust core (libsignal_jni.so), post-quantum hybrid Double Ratchet (Kyber-1024 + X25519), Direct ByteBuffers with immediate zeroing after PIN/username hashing, Intel SGX attestation for SVR — MREnclave verification means even a compromised Signal server can't extract your PIN hash.

But two things stood out:

1. Firebase is always there. Google receives IP + notification timestamps regardless of message content. If you need metadata privacy, Signal still leaks presence data to Google's infrastructure.

2. Certificate revocation endpoints hit http://g.symcd.com in plaintext. An ISP or state-level observer can fingerprint Signal usage from DNS queries and HTTP traffic to those CAs — without touching message content.

Conclusion: strongest crypto engineering in consumer messaging. The attack surface isn't the cryptography. It's the operational dependencies.

Soon the full analysis

#infosec #AndroidSecurity #Signal #privacy #ReverseEngineering #postquantum #mobileforensics

So @xaitax has cracked Microsoft Recall, he's got access to the encrypted database and has automated dumping of screenshots and all text from screenshots.

I've looked at most recent Recall and yep, you can just read the database as a user process. The database also contains all manner of fields which aren't publicly disclosed for tracking the user's activity.

No AV or EDR alerts triggered, world's #1 in infostealer 😅

* you can just read it in plain text

For every bit of publicly-visible turbo-quackery that's enabled by AI, I imagine there's 1,000x as much happening out of sight
🔥 Can you get RCE from an email address? Yep. In my NDC Manchester talk Splitting the email atom, I break down how RFC weirdness leads to auth bypasses, parser confusion, and full remote code execution. Watch here 👇 https://www.youtube.com/watch?v=kVPetdjHF_M
Splitting the Email Atom: Exploiting Parsers to Bypass Access Controls - Gareth Heyes

YouTube

📰 .NET and .NET Framework January 2026 servicing releases updates

A recap of the latest servicing updates for .NET and .NET Framework for January 2026.

https://devblogs.microsoft.com/dotnet/dotnet-and-dotnet-framework-january-2026-servicing-updates/ #dotnet

.NET and .NET Framework January 2026 servicing releases updates - .NET Blog

A recap of the latest servicing updates for .NET and .NET Framework for January 2026.

.NET Blog
Since there's no API access yet I got OpenAI's Codex coding agent to modify itself (in Rust) to add a new "codex prompt ..." command which I could use to run prompts against the private models that are only available within that tool - full details here https://simonwillison.net/2025/Nov/9/gpt-5-codex-mini/
Reverse engineering Codex CLI to get GPT-5-Codex-Mini to draw me a pelican

OpenAI partially released a new model yesterday called GPT-5-Codex-Mini, which they describe as "a more compact and cost-efficient version of GPT-5-Codex". It’s currently only available via their Codex CLI tool …

Simon Willison’s Weblog

I've done small (but fun) .NET Framework research, and I found a new exploitation primitive (vulnerable behavior). In many cases, it may directly lead to RCE.

I'll discuss it during Black Hat EU and I'll drop a paper afterwards 🫡

https://www.blackhat.com/eu-25/briefings/schedule/index.html#soapwn-pwning-net-framework-applications-through-http-client-proxies-and-wsdl-49018

Black Hat

Black Hat

When giving #security guidance to developers, be sure to impart an understanding of the underlying problem, not just which API's to use or not. If you don't do this, enterprising developers will often reintroduce the problem by adding the problematic capabilities to an otherwise safe API.

To give a specific example, and to try to atone for some of my past sins:

The underlying problem in unsafe deserialization that leads to remote code execution is user-provided data telling your application what type it wants to be. When data can choose what type it is, it can choose types that have exploitable side effects in their constructors, setters, or destructors. Polymorphic deserializers are inherently unsafe.

In the past I've told people "use this API, it's safe". But when that API is safe because it doesn't allow polymorphism, developers inevitably modify the API to add polymorphism when it makes the overall design of the application simpler.

The portion of the #OWASP #serialization cheat-sheet on .NET is based on a talk I gave in 2017 before I understood this problem. (https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html#net-csharp )

It's much more difficult, but training developers to write secure code requires teaching them what the real problems are.

#appsec #training

Deserialization - OWASP Cheat Sheet Series

Website with the collection of all the cheat sheets of the project.

It's awesome to be Microsoft MVP for another year! I really enjoy sharing knowledge and interacting with the community and of course will continue to do that! Congratulations to the other MVP's that got renewed as well! #mvpbuzz #appsec #security