Signal Fixes Bugs in SGX Contact Discovery Service
V12 researchers identified two bugs in Signal’s Contact Discovery Service Icelake. Public commits confirm related server-side fixes, but exploitation in practice has not been confirmed.

CDSI Icelake fixes address two object-lifecycle bugs in the Contact Discovery Service, which Signal operates inside an Intel SGX enclave. V12 researchers published their analysis on August 26, 2026. According to their claims, the bugs could have allowed an attacker controlling the host server to read enclave memory and eventually execute code within it.
Signal has two fixed commits in its public repository that correspond to the causes described in the report. However, the company has not independently published technical confirmation of the scope of V12’s demonstration or information about exploitation of the bugs in the wild.
What the CDSI Icelake fixes address
Contact Discovery Service allows the app to determine which of a user’s contacts use Signal. The service operates inside an SGX enclave, a hardware-isolated processor environment. Signal also uses ORAM to protect access patterns, a technique designed to limit what can be inferred from data accesses.
The first publicly available fix, commit df22988, introduces worker ownership state and rejects another worker launch for the same shard. The second, commit b1c5ac4, combines client validation and changing its state into a single atomic operation. Both changes aim to eliminate race conditions that V12 identified as the basis of the vulnerability.
The researchers claim that, on SGX hardware corresponding to the production environment, they obtained arbitrary enclave memory reads and control of registers leading to code execution directly inside the enclave. Public code changes support that Signal modified the affected mechanisms, but they do not by themselves confirm the entire claimed exploit chain.
Potential impact involved contact discovery
According to V12, an active private Noise key was obtained from memory. If this claim applied to the production environment before the fix, a host controlling the server or its infrastructure could impersonate the enclave and decrypt contact-discovery queries.
This does not mean that a breach of Signal’s end-to-end message encryption has been confirmed. The available information also does not constitute evidence of a mass data leak or confirmation that anyone accessed specific users’ address books. The vulnerable period and the exact timing of the fixes’ deployment to all production environments are also unknown.
The case is particularly important because SGX is intended to protect data from the operator of the host infrastructure. However, hardware isolation and remote attestation cannot replace correctly designed concurrent code inside the enclave. A bug in object management or the atomicity of state changes can weaken the trust boundary on which the service’s entire model depends.
This is not an app update for users
These are fixes to CDSI server infrastructure, not a bug that can be resolved by updating the Signal mobile app.
Further developments will depend on any statement from Signal concerning deployment of the fixes, the scope of affected systems, and possible findings of exploitation. Independent reproduction of the proof of concept, any CVE assignment, and information on whether Signal changed keys or introduced additional operational measures after the fix will also be relevant.
Sources
- V12 – Compromising Signal's Contact Discovery Enclave – Primary technical description of the two bugs, the alleged proof of concept, the impact, and the responsible disclosure information.
- Signal GitHub – commit df22988 – Confirms the change introducing a limit of one worker per shard.
- Signal GitHub – commit b1c5ac4 – Confirms the merger of the canary and client state into a single atomic word.
- Signal – Technology Deep Dive: Building a Faster ORAM Layer for Enclaves – Describes the purpose of Contact Discovery and the use of SGX and ORAM in Signal’s architecture.
Verified and updated: 08/27/2026 19:55



