Advisories for Golang/Github.com/Charmbracelet/Soft-Serve package

2026

charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users

Soft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. SetPrivate cleared the cached record before it saved the new visibility, and not afterwards. A request that arrived between the two read the old, public record from the database and cached it after the change was saved. From then on every access check used that stale record, so a repository the …

charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories

Soft Serve answers Go's ?go-get=1 requests by walking up the requested path until it finds a repository, then rendering that repository's name and clone URL into a go-import meta tag. The walk checked that each candidate repository existed, but never that the caller could read it. A request for a path inside a private repository, such as GET /secret/anything?go-get=1, therefore returned 200 naming secret and its clone URL, even though …

soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import

An authenticated SSH user can force the server to make HTTP requests to internal/private IP addresses by running repo import with a crafted –lfs-endpoint URL. The initial batch request is blind (the response from a metadata endpoint won't parse as valid LFS JSON), but an attacker hosting a fake LFS server can chain this into full read access to internal services by returning download URLs that point at internal targets.

Soft Serve Affected by an Authentication Bypass

What kind of vulnerability is it? Who is impacted? This issue impacts every Soft Serve instance. A critical authentication bypass allows an attacker to impersonate any user (including Admin) by "offering" the victim's public key during the SSH handshake before authenticating with their own valid key. This occurs because the user identity is stored in the session context during the "offer" phase and is not cleared if that specific authentication …

2025

Soft Serve is vulnerable to SSRF through its Webhooks

SUMMARY We have identified and verified an SSRF vulnerability where webhook URLs are not validated, allowing repository administrators to create webhooks targeting internal services, private networks, and cloud metadata endpoints. AFFECTED COMPONENTS (VERIFIED) Webhook Creation (pkg/ssh/cmd/webhooks.go:125) Backend CreateWebhook (pkg/backend/webhooks.go:17) Backend UpdateWebhook (pkg/backend/webhooks.go:122) Webhook Delivery (pkg/webhook/webhook.go:97) IMPACT This vulnerability allows repository administrators to perform SSRF attacks, potentially enabling: a) Cloud Metadata Theft - Access AWS/Azure/GCP credentials via 169.254.169.254 b) Internal Network …

Soft Serve does not sanitize ANSI escape sequences in user input

In several places where the user can insert data (e.g. names), ANSI escape sequences are not being removed, which can then be used, for example, to show fake alerts. In the same token, git messages, when printed, are also not being sanitized. Places in which this was found: Repository Description (pkg/backend/repo.go - SetDescription) Repository Project Name (pkg/backend/repo.go - SetProjectName) Git Commit Author Names (pkg/ssh/cmd/commit.go:69) Git Commit Messages (pkg/ssh/cmd/commit.go:71) Access Token …

2024
2023

Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled

Impact A security vulnerability in Soft Serve could allow an unauthenticated, remote attacker to bypass public key authentication when keyboard-interactive SSH authentication is active, through the allow-keyless setting, and the public key requires additional client-side verification for example using FIDO2 or GPG. This is due to insufficient validation procedures of the public key step during SSH request handshake, granting unauthorized access if the keyboard-interaction mode is utilized. An attacker could …