Case 03 — Olvid Messenger

When a leak
isn't a bug.

Olvid is a privacy-focused messenger. I found two ways it can expose an IP address. Through coordinated review handled by ANSSI / CERT-FR, the vendor explained why it treats both as deliberate trade-offs rather than vulnerabilities — and after reviewing its reasoning, I agreed. This is the analysis, and both sides of it.

By Abbas Hoseiny· Coordinated via ANSSI / CERT-FR· Vendor: Olvid SAS

Not everything that leaks is a defect. Sometimes a messenger exposes a piece of data on purpose, having weighed it against something it values more. Olvid, built around privacy by design, does exactly that in two places I looked at closely. Here is what happens, and here is why the vendor considers each one acceptable.

A call relayed through a server that can see the recipient's address the recipient's IP
Fig. 1 — the relay on a call

When you call someone on Olvid, the call is routed through a relay (TURN) server. On Android, the caller can name that relay. Point it at a server you control and, once the other side accepts, their device connects to it — making their IP address visible to that relay.

Olvid's position. The vendor decided to stop forcing its own relay in preparation for a future feature. It also argues that every way to start an Olvid conversation already requires the attacker to know more about the target — a name, a phone number — than the single thing that leaks here: the public IP of the phone. On that basis, Olvid does not consider the leak significant, and does not treat it as a vulnerability.

My view, for the record. A public IP is a different kind of data from the contact details needed to reach someone: it points at an approximate location and can change over time, so it is not simply implied by already being a contact. That said, this is a threat-model judgment, and I accept Olvid's conclusion that the residual risk is acceptable for its model.

One phone pins its relays, the other accepts the caller's iOS — pins its own relays Android — accepts the caller's
Fig. 2 — the two clients behave differently

Olvid's iOS client uses its own fixed relay addresses and ignores the ones a caller supplies; the Android client accepts the caller's. Olvid describes the Android behaviour as a deliberate rollback made for a planned feature, not an oversight.

The second behaviour

Link previews: the sender, not the recipient.

Olvid builds link previews on the sender's device and embeds the result in the encrypted message. The recipient displays it without fetching anything — so, unlike many messengers, there is no zero-click leak on the receiving side. What remains is that the sender's device fetches the URL directly, with no proxy, exposing the sender's own IP to whoever controls that URL.

Olvid's position. A server-side proxy, like the one Signal runs, would mean Olvid itself sees every link its users share — which the vendor considers at odds with its privacy-by-design goal. It also notes the sender has usually opened the link already. So Olvid keeps the current design unless an approach is found that protects the sender's IP without a central party seeing every link.

I accept that reasoning. It is a genuine trade-off between two kinds of privacy, and Olvid has chosen the one that fits its model.

What I take from it

A disagreement handled well.

Both behaviours are real, and both are deliberate. Reported through ANSSI / CERT-FR, reviewed with the vendor, and — after I looked at the reasoning — accepted as trade-offs rather than defects. Several of my initial observations I withdrew along the way. That is how coordinated disclosure is supposed to work: not every finding ends in a fix, and a vendor explaining its model clearly is a good outcome too.

Technical write-up

Olvid Messenger — analysis & vendor positions

Summary

Olvid (Olvid SAS, France) was analysed on Android (v4.2.4), iOS/macOS (v4.0.3) and Desktop (v2.8.0), partly against its AGPL-3.0 source. Two IP-exposure behaviours are described below. After coordinated review, the vendor classified both as deliberate design trade-offs rather than vulnerabilities, and I accepted that conclusion. Olvid previously held ANSSI CSPN certification (2020/2021, since expired and limited mainly to the encryption core); the behaviours here were not necessarily within that scope. This write-up addresses Olvid's general, commercial use only.

Behaviour 1 · relay selection on a call

Recipient IP visible to a caller-named relay (Android)

What happens

Olvid calls are relayed through a TURN server. On Android, the client accepts the relay URLs supplied by the caller (pickTurnServers() returns the caller-provided set without an allowlist). A caller who names a server they control can therefore observe the callee's source IP once the call is accepted. The iOS/macOS client, by contrast, uses its own fixed relay addresses and ignores caller-supplied ones.

Vendor position

Olvid stopped forcing its own relay in preparation for a future feature, and considers the exposure insignificant because establishing a conversation already requires knowing more identifying detail (name, phone number) than the leaked public IP. It is not classified as a vulnerability.

Researcher note

A public IP is a distinct category of data (approximate geolocation, changes over time) from the contact details needed to reach a target. This is a threat-model judgment; I do not dispute the vendor's conclusion.

Behaviour 2 · link-preview fetch

Sender-side IP exposure when generating a preview

What happens

Previews are generated on the sender's device and embedded in the encrypted message; the recipient renders them without a network request (no receiver-side leak). The sender's device, however, fetches the URL directly with no proxy, exposing the sender's IP to the URL's host. Observed sender-side across platforms; the receiver side is clean.

MessengerPreview fetchSender IP protectedRecipient IP protected
Signalserver proxyyesyes
WhatsAppserver proxyyesyes
Olvidclient (sender)noyes

Vendor position

A server-side proxy would let Olvid see every shared link, which the vendor considers contrary to its privacy-by-design goal; it also notes the sender has usually visited the link already. Olvid keeps the current design absent an approach that protects the sender's IP without a central party observing every link. Not classified as a vulnerability.

On scoring

Why there are no severity badges here Olvid does not classify these behaviours as vulnerabilities, and I accepted that. For reference only: were they scored under CVSS, both would fall in the Low–Medium band, because the data exposed is a single IP address (C:Low) — the same ceiling that applies to any IP-only leak. I am not attaching a severity rating to a behaviour the vendor and I agree is a trade-off, not a defect.

Coordination & disclosure


Coordinated disclosure handled through national CERTs. Vendor positions represented as agreed during coordination. For defensive and research purposes.