Elevenβs security posture, published as it stands. This is
what is true by design and how the hygiene looks today β never a map of open
problems: if a scan finds something, this page shows a count until
itβs fixed (responsible disclosure). Found a vulnerability? Tell us
privately: team@elevenmessenger.com.
Dependency scan as of
The commitment
If our servers are stolen, the thief gets
nothing they can read. These are the load-bearing rules every
change is reviewed against β architecture, not policy:
βOur servers hold
sealed boxes and the plumbing to deliver them β never a key that
opens anything. Messages, names, and files are locked on your device
before they leave it.
βKeys live only
on your devices. Every conversation is sealed with its own key,
handed only to its members; the server stores wrapped copies it cannot
open.
βEvery space is
an island β its own database, its own keys, no shared pool of user
data, no cross-user state anywhere, and no protocol tying spaces
together.
βInvite links
keep their secret in the URL fragment β the part a browser never
sends to any server.
βCredentials
are never keys. Admin tokens manage the roster; push credentials
authorize delivery of sealed bytes. Neither opens a single
message.
βBot code never
runs inside the server. Bots live on machines their operator
controls, as ordinary members β compromising our server yields no bot
keys.
βNo personal
data in our stores β no emails, no per-user analytics. Customer
identity for paid spaces lives with the payment processor; we hold an
opaque pointer and an entitlement flag.
Dependency hygiene
Counted, not named: the product
that ships is a single Go binary (the web client is plain JavaScript it
serves β zero runtime npm packages; npm is test tooling only). Each release
build is scanned with govulncheck against the exact binary the fleet runs.
A finding publishes here as a count until itβs patched β naming an
unpatched hole would hand attackers a map.
Dependency scan pending. No
scan has been published for the current build (or the feed didnβt load).
Shown honestly rather than assumed clean β the architecture and hardening
facts on this page hold regardless.
Known vulnerabilities
β
Go modules in the build
β
direct + indirect, a count not an inventory
Scanned build
β
the same build sha the release feed publishes
Hardening
The posture, not the address: how
the serving machines are run. Facts only β nothing here locates a
box.
βFirewall is
default-deny. Inbound is web traffic and administration (SSH)
only; everything else is refused.
βSSH is
key-only. Password login is disabled outright.
βServices run
as an unprivileged user in a systemd sandbox β read-only system,
no privilege escalation, memory-capped.
βTLS
everywhere. Every space is served over HTTPS with automatically
issued and renewed certificates.
βMember content
at rest is ciphertext. A stolen disk β or a stolen backup β is a
pile of locked boxes.
Known edges, on purpose
What we donβt protect, and why:
the deliberate tradeoffs, named plainly. These are disclosed design
choices, not bugs.
βLink
previews: when someone posts a link, the server fetches that URL
to build the preview card β so it briefly sees URLs (never message
text). The price of previews; gateable behind a setting later.
βGIF
search: your browser queries Giphy directly, so Giphy sees your
search terms and network address; our server sees nothing. The chosen
GIF is sealed to the conversation like any attachment.
βBranding is
plaintext: a spaceβs name, optional photo, and description are
admin-set and must render before a joiner holds any key β so they are
deliberately not encrypted. Everything members write still is.
βBots are
members: a bot you add runs on a machine its operator controls,
and that machine can read exactly the conversations the bot is in β
never anything else. Scoped, disclosed, and removable like any
member.
βA
content-blind store canβt scan content: because we canβt read
anything, no server-side abuse filter is possible β a store we canβt
open is also a dead drop we canβt inspect. Abuse handling is
structural instead: invite-gated rosters, admin removal, and membersβ
own judgement. We accept that trade with open eyes.