Skip to main content

Security audit

Research, not an audit
These pages are research and development and may not match the live app. Do not treat this as an audit. Shared for testing and demo only. Please use responsibly.

This folder is a draft in-house implementation review of the assembled Glitr client as it stands. It starts at whatsup and follows only the crates that shell calls. It is not locked to a release tag.

It is not an independent security audit. It does not close the roadmap row for regular security audits. In-house or AI-authored notes are not a substitute. The threat-model leftover already says the same thing.

The user-facing one-liner is unchanged: protect message content from the host; do not expect the host to be unaware that you chat. The app is shared for testing and demo. Do not put sensitive details in it.

How this relates to the other folders​

FolderWhat it isWhat it is not
Threat modelProduct attackers, assets, STRIDE, leftover riskA findings catalog with IDs
Formal verificationLibrary tests, ProVerif, stub type-checksA proof of send, poll, git, or a stolen device
This folderCode-backed findings on the assembled clientA third-party attestation, a pentest of a live host, or a score against another app

Finding IDs cite threat-model rows when the leftover was already named. New implementation evidence is labeled as such.

Scope​

In scope: whatsup, whatsup-ui, and the in-process stack they dispatch into — glitr-client, api-core, db-core, git-core, crypto-cascade, crypto-core, signal-protocol-core, pqxdh-core, ml-kem-core, webrtc-core, tor-core.

Out of scope as a claim: anonymity, Signal-app wire compatibility, formal verification of the messenger, safety against a compromised endpoint, and a host who already has the encryption password.

Out of scope as a review unit: gallery apps (webrtc-gallery, api-gallery, crypto-gallery, mls-gallery) and the mls-core library until it is wired into whatsup, except to mark a control a gallery has that whatsup does not ship. Hosted HTTP headers for GitHub Pages are not in this repo.

How the review was done: Methodology.

How to read this section​

Threat-model words (Documented / Mitigated / Partial / Open) still apply when a row maps onto that folder. This folder adds:

WordMeaning
Critical / High / Medium / Low / InfoImpact if the finding is real on a shipped path
ConfirmedObserved in current code
MitigatedReserved for a later draft if a Confirmed claim stops holding (unused here)
AcceptedKnown residual already on the threat-model leftover list
Out of scopeNot used by whatsup

None of those words means “proved.” None of them means “independently audited.”

Evidence on these pages is a file path, a function name, an impact sentence, and residual risk. There are no exploit recipes, payloads, or reproduction procedures.

Component inventory​

api-core runs in process. There is no Glitr account server and no Glitr chat host.

PieceRole in the review
whatsupShell: GUI, TUI, live, onion, device pair, PWA
whatsup-uiPresentation. No cascade or protocol code
glitr-clientApiHandle, SavedConnect, web storage, proxy, Tor glue
api-coreRoutes, session, cascade wiring, hello, devices
db-core / git-coreSealed mailbox documents; push / poll
crypto-cascadeProduct encrypt / decrypt (encrypt_for_peer)
Handshake coresSignal, PQXDH, ML-KEM, crypto-core primitives
webrtc-coreSignaling bundles, chat frames, peer RPC
tor-coreArti session, SOCKS, hidden service

Trust boundaries​

The same stack without attacker labels is on Architecture. Record visibility is on Data structures.

How to read the pages​

PageRole
ReportDated executive view: counts, Glitr-bar mapping, you may say / may not
MethodologyWhat was reviewed, what was not done
Standards comparisonCoverage map vs ASVS/MASVS/SSDF, protocol specs, and third-party audit maturity
FindingsMaster catalog with IDs
CryptographyCascade as wired, prekeys, groups, formal-verification gap
MLS pairwise reviewPairwise MLS layer + GroupSession faithfulness review
Identity and pairingTOFU, hello, demo keys, device-pair snapshot
Git mailboxHost metadata, CORS, tokens, static prekeys
Live and WebRTCSTUN, SDP, DC trust, peer RPC, proxy allowlist
TorSOCKS, onion, WebRTC split trust
Client and storageglitr:connect, CSP, service worker, rendering
RemediationRecommended fixes mapped to IDs

Next: the report — what the review found, what you may say, and what stays Open.