Repository navigation
docs(security): add the release advisory for the credential-exposure fixes - #1185
Merged
Merged
Conversation
…fixes The release body is assembled from LLM-generated notes plus a static download table. That is fine for a feature summary and wrong for anything a user has to act on, so a security advisory cannot depend on a summarizer choosing to include it. Adds .github/RELEASE_NOTICE.md, prepended verbatim to the release body when present, and a no-op when absent. The notice covers #1180 (any agent token could read the admin API key, so allowed_servers was not a boundary), #1167 (upstream credentials served to unprivileged callers), #1166 (REST enumeration ignored token scope, including per-server logs and tool-call payloads), #1158 (credentials in main.log - split by the log level each class required, since the OAuth authorization code needed no non-default configuration), and the server-edition defects #1168/#1169. It states the remediation plainly: rotate the API key, re-mint agent tokens, rotate upstream credentials that appeared in logs, and treat existing log files as secret-bearing. Delete the notice file after this release ships or it repeats on the next one.
Deploying mcpproxy-docs with
|
| Latest commit: |
bbce6be
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://73c22acc.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://claude-release-security-noti.mcpproxy-docs.pages.dev |
The notice is prepended verbatim to the release body and is written for one release, so leaving it in place repeats it on the next one - and a reader who sees the same advisory on three releases stops believing any of them. That made deletion a required manual step, which is not a step. This fires on 'release: published' and opens a PR removing the file, so the deletion goes through the same review and checks as any other change and a maintainer who wants to keep the notice for a follow-up patch release can just close the PR. It is a no-op when no notice is present, and it will not stack a second PR on top of an unmerged one.
Contributor
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 33627839307 --repo smart-mcp-proxy/mcpproxy-go
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
The release body today is LLM-generated notes from the commit log plus a static download table. That is fine for a feature summary and wrong for anything a user has to act on — a security advisory, a migration step, a breaking change — because it cannot depend on a summarizer choosing to include it.
This adds
.github/RELEASE_NOTICE.md, prepended verbatim to the release body when present and a no-op when absent, plus the advisory for the security work in #1181, #1182 and #1183.Why this one needs to be hand-written
Two of the fixed defects mean shipped versions were weaker than the documentation described, and both have user-facing remediation that no commit-log summary would produce:
GET /api/v1/inforeturned the global admin API key to any agent token. Soallowed_serverswas never a security boundary: a scoped token did not have to defeat the scope checks, it could read the admin key. Every previously-issued agent token should be treated as having had administrator-equivalent reach.info, the default level. No non-default configuration was required. Anyone who has connected an OAuth upstream has them inmain.logand in terminal scrollback.The notice splits the logging exposure by the level each class actually required (
info/debug/trace) rather than flattening it, because "credentials were in your logs" and "credentials were in your logs only if you enabled debug" are different asks of the reader, and only the first applies by default.Remediation it states
Rotate the API key, revoke and re-mint agent tokens, rotate upstream credentials that appeared in logs, treat existing log files (including backups) as secret-bearing, and — server edition — re-check
admin_emailsand revoke tokens belonging to disabled accounts.Housekeeping
.github/RELEASE_NOTICE.mdmust be deleted after this release ships, or it repeats on the next one. That is stated in a comment on the workflow step and in the commit message.Verified: the workflow parses, the notice step sits in the same job as the release step and after its
Checkout, the heredoc capture round-trips 5622 bytes, and the delimiter does not collide with the file's contents.