Skip to content

Add SECURITY.md, including the versions affected by the 1.4.0 nonce fix - #170

Merged
rowan-claude merged 1 commit into
mainfrom
docs/security-policy
Jul 26, 2026
Merged

Add SECURITY.md, including the versions affected by the 1.4.0 nonce fix#170
rowan-claude merged 1 commit into
mainfrom
docs/security-policy

Conversation

@rowan-claude

Copy link
Copy Markdown
Contributor

This repo had no security policy at all — no documented private channel for a finder, who would then reasonably open a public issue. yojimbo has had one; netcode, reliable and serialize had none. (PRs for the other two alongside this.)

The part that matters

A Known Issue section recording that netcode 1.3.5 and earlier emit global packets (challenge, denied) at sequence numbers already used under the same per-connect-token key, when a server is stopped and restarted in-process. netcode uses the packet sequence as the AEAD nonce, so that is nonce reuse.

Fixed by dc21b70 — re-seed the global sequence on start, not only on create — first released in 1.4.0.

Versions verified from the tags, not remembered: git tag --contains dc21b70 returns v1.4.0, v1.4.1, v1.4.2 and nothing earlier. For yojimbo I read NETCODE_VERSION_FULL out of each tag — v1.7.0 is the first carrying netcode 1.4.0, so yojimbo ≤ 1.6.3 is affected.

Where affected versions can still be obtained

Recorded because we cannot remove them all and a user has no other way to find out:

  • Conan legacy center.conan.io — still serves yojimbo/1.2.1. That remote is frozen; nobody, including us, can update or withdraw it. I verified this is live today.
  • Debian mentors — has served netcode 1.3.5+ds-1. Only the uploading account can supersede it.
  • netcode.go already carries retract [v1.0.0, v1.0.2], so go get warns. Verified present.

What this is not

This is documentation in our own repository, not a published advisory. A GHSA is Glenn's call and is not made here.

This repo had no security policy at all. It is the one of the four C libraries that
holds the keys and parses connect tokens, and it was the only one with no way for a
finder to report privately -- yojimbo has had a policy for a while; netcode, reliable
and serialize had none.

Reporting section follows yojimbo's, adapted for what this library actually is.

THE PART THAT MATTERS: a Known Issue section recording that netcode 1.3.5 and earlier
emit global packets (challenge, denied) at sequence numbers already used under the same
per-connect-token key when a server is stopped and restarted in-process. netcode uses
the sequence as the AEAD nonce, so that is nonce reuse. Fixed by dc21b70 -- re-seed the
global sequence on start, not only on create -- first released in 1.4.0.

Versions verified from the tags rather than remembered: dc21b70 is contained in v1.4.0,
v1.4.1 and v1.4.2 and no earlier tag. yojimbo vendors netcode, and the first yojimbo
release carrying netcode 1.4.0 is v1.7.0 -- so yojimbo 1.6.3 and earlier are affected,
which I checked by reading NETCODE_VERSION_FULL out of each yojimbo tag.

It also records WHERE affected versions can still be obtained, because we cannot remove
them all and a user has no other way to find out: the frozen legacy Conan remote still
serves yojimbo/1.2.1, and Debian mentors has served netcode 1.3.5+ds-1. Only the
uploading account can supersede the latter; nobody can touch the former.

This is documentation in our own repository, not a published advisory -- a GHSA is
Glenn's call and is not made here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@rowan-claude
rowan-claude merged commit 54b4040 into main Jul 26, 2026
14 checks passed
@rowan-claude
rowan-claude deleted the docs/security-policy branch July 26, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant