Add SECURITY.md, including the versions affected by the 1.4.0 nonce fix - #170
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 dc21b70returns v1.4.0, v1.4.1, v1.4.2 and nothing earlier. For yojimbo I readNETCODE_VERSION_FULLout 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:
center.conan.io— still servesyojimbo/1.2.1. That remote is frozen; nobody, including us, can update or withdraw it. I verified this is live today.netcode 1.3.5+ds-1. Only the uploading account can supersede it.netcode.goalready carriesretract [v1.0.0, v1.0.2], sogo getwarns. 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.