Security policy

Last updated: 2026-08-24

Reporting a vulnerability

Open a private security advisory on the extension repository. It is private until we publish it, it threads the whole discussion in one place, and it is the only channel that gets a report to the operator without it sitting in a public issue first. If GitHub is not an option for you, the contact address in security.txt reaches the same person.

A report is easiest to act on when it carries the affected component and version, the steps to reproduce it, what an attacker gains, and anything you already know about the fix. A working proof of concept is welcome; the smallest one that demonstrates the impact is better than a broad one.

What you get back. An acknowledgement within 7 working days, and an honest assessment rather than a silent triage queue — including the cases where we disagree that a finding is exploitable, with the reasoning. Emojery is one person's project: expect a direct answer rather than a service-level agreement. Fixes ship as fast as severity warrants, and a fix to the extension reaches users through the store review process, which we do not control.

Credit. Reporters are credited by name or handle in the published advisory unless they ask not to be. There is no bug bounty — the project is free and donation-funded, and pretending otherwise would waste your time.

Scope

In scope:

Out of scope:

Rules that keep testing authorised

The acceptable use policy forbids probing the service. This section is the exception to that rule, and it holds as long as your testing stays inside it:

Safe harbour

Research that follows the rules above is authorised. We will not pursue legal action over it, will not terminate the account used for it, and will treat an accidental overstep that you report promptly as part of the research rather than as abuse. If a finding required touching data that was not yours before you realised it, say so in the report — that is a better outcome for everyone than a quiet deletion.

Testing that ignores the rules is not covered, and falls back under the acceptable use policy like any other traffic. The distinction is the conduct, never the intent stated afterwards.

What we do on our side

Traffic is encrypted in transit, long-lived data is encrypted at rest, and the identifiers we keep are one-way hashes rather than raw values — the reasoning, and what that leaves us holding, is in the privacy policy. There is no password database to leak, because the one-time code is the authenticator. The extension is open source and its permissions are itemised on Browser permissions, so the client half of this system can be audited without asking us anything.

Server-side defences are deliberately not described here, and neither are the windows they run on — the reasoning is the same one that keeps them out of the privacy policy. Everything a researcher needs is reachable by testing within the rules above; everything else would only shorten someone else's homework.

If a security incident affects personal data, the notification obligations we hold ourselves to are stated in the privacy policy rather than invented after the fact.

security.txt

The machine-readable version of this page lives at https://emojery.app/.well-known/security.txt (RFC 9116). It carries the contact route, this page as the policy, and an expiry date — if that date has passed, the file is stale and this page is the authority.