Skip to content

Security: speedwarnsf/web-typography

Security

SECURITY.md

Security policy

typeset.us rewrites text inside other people's pages, so a flaw in it runs on their sites. This page says which versions get fixes, how to report a problem privately, and what happens next.

Supported versions

Version Supported
4.3.x Yes: bug and security fixes
4.2.x Security fixes only, until 2026-11-26. It also has the screen-reader defect 4.3 fixed (words joined in the accessibility tree); upgrade to 4.3
4.0.x, 4.1.x No. Upgrade to 4.3
3.x No. 3.0.0 to 3.4.0 have a known DOM XSS (see below)

The 4.x line gets bug and security fixes until at least 2027-09-30, whenever 5.0 ships. When a minor release ships, the minor before it gets security fixes for 60 days after that release date, then none (4.2.x: 60 days after 4.3.0 reached npm on 2026-09-27).

Published files are never changed, including vulnerable ones: npm versions, /releases/<version>/ archives and go@<version>.js pins keep their bytes so that pinned integrity hashes keep working. A fix ships as a new version. Affected versions are listed under advisories in https://typeset.us/release.json. npm does not mark the affected 3.x versions deprecated yet.

Reporting a vulnerability

Please do not open a public issue.

Include the version (Typeset.VERSION, or the loader URL), the browser, and the smallest page or steps that show the problem. If the page is public, its URL is enough.

What happens next

  • Acknowledgement within 3 business days.
  • An assessment, with a severity and the affected versions, within 10 business days.
  • For a confirmed issue: a fixed release, a GitHub Security Advisory with a CVE where one applies, npm deprecate on the affected versions, and a CHANGELOG entry. Reporters are credited unless they ask not to be.

These are targets for a one-person project, not a contract. If you have not heard back in 3 business days, send the email again.

Scope

In scope: the typeset.us npm package, the files under https://typeset.us/releases/ and https://typeset.us/go@*.js, and the typeset.us website.

Out of scope: pages that pass untrusted HTML to Typeset, since Typeset composes the DOM it is given and never parses HTML strings; reports that need a malicious browser extension or a compromised device.

Known advisories

How releases are made

Releases are cut by scripts/release-cut.mjs and verified in CI. From 4.3.1, the tag-triggered release.yml workflow publishes the tarball the cut recorded in the ledger to npm with provenance: npm view typeset.us@4.3.1 dist.attestations shows its SLSA provenance attestation. 4.2.0 and 4.3.0 were published by the maintainer account from the reproducible tarball the cut recorded, and the registry's integrity is checked against the ledger; they, like 4.0.0 and 4.1.0, have no npm provenance attestation. Every published file is recorded by hash in https://typeset.us/releases/published.json, and CI fails if any of them changes. The package has no runtime dependencies, no install scripts, and no network access, storage or telemetry.

There aren't any published security advisories