github.com/charmbracelet/soft-serve
archivedThe mighty, self-hostable Git server for the command line🍦
Activity
- Latest release
- 1w ago
- Total releases
- 55
- Cadence
- ~17 days
- Last 12 months
- 12
Reach
- Stars
- 7.3k
Details
- First release
- Dec 07, 2021
| Version | Released | |
|---|---|---|
v0.12.4
patch
|
v0.12.4
patch
Dependencies (41)
+ 33 more |
|
v0.12.3
patch
|
v0.12.3
patch
Dependencies (41)
+ 33 more |
|
v0.12.2
patch
2 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev |
v0.12.2
patch
Dependencies (42)
+ 34 more |
|
v0.12.1
patch
2 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev |
v0.12.1
patch
Dependencies (42)
+ 34 more |
|
v0.12.0
minor
2 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev |
v0.12.0
minor
Dependencies (42)
+ 34 more |
|
v0.11.6
patch
2 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev |
v0.11.6
patch
Dependencies (42)
+ 34 more |
|
v0.11.5
patch
3 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev |
v0.11.5
patch
Dependencies (42)
+ 34 more |
|
v0.11.4
patch
3 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev |
v0.11.4
patch
Dependencies (42)
+ 34 more |
|
v0.11.3
patch
4 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev |
v0.11.3
patch
Dependencies (42)
+ 34 more |
|
v0.11.2
patch
5 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.11.2
patch
Dependencies (42)
+ 34 more |
|
v0.11.1
patch
6 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.11.1
patch
Dependencies (42)
+ 34 more |
|
v0.11.0
minor
7 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.11.0
minor
Dependencies (42)
+ 34 more |
|
v0.10.0
minor
8 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.10.0
minor
Dependencies (42)
+ 34 more |
|
v0.9.1
patch
9 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.9.1
patch
Dependencies (42)
+ 34 more |
|
v0.9.0
minor
9 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.9.0
minor
Dependencies (42)
+ 34 more |
|
v0.8.5
patch
9 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.8.5
patch
Dependencies (41)
+ 33 more |
|
v0.8.4
patch
9 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.8.4
patch
Dependencies (41)
+ 33 more |
|
v0.8.3
patch
9 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.8.3
patch
Dependencies (41)
+ 33 more |
|
v0.8.2
patch
9 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.8.2
patch
Dependencies (41)
+ 33 more |
|
v0.8.1
patch
10 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.8.1
patch
Dependencies (42)
+ 34 more |
|
v0.8.0
minor
10 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.8.0
minor
Dependencies (42)
+ 34 more |
|
v0.7.6
patch
10 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.7.6
patch
Dependencies (42)
+ 34 more |
|
v0.7.4
patch
11 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.7.4
patch
Dependencies (43)
+ 35 more |
|
v0.7.3
patch
11 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.7.3
patch
Dependencies (43)
+ 35 more |
|
v0.7.2
patch
11 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.7.2
patch
Dependencies (43)
+ 35 more |
|
v0.7.1
patch
11 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.7.1
patch
Dependencies (43)
+ 35 more |
|
v0.7.0
minor
11 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.7.0
minor
Dependencies (43)
+ 35 more |
|
v0.6.2
patch
11 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.6.2
patch
Dependencies (41)
+ 33 more |
|
v0.6.1
patch
12 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.6.1
patch
Dependencies (41)
+ 33 more |
|
v0.6.0
minor
12 CVEs
GHSA-f3fj-9625-rv3m
Oct 30, 2026
charmbracelet/soft-serve: Race in `SetPrivate` leaves a private repository readable by unauthenticated users
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
SummarySoft Serve cached repository records in memory with no expiry, and trusted the cached record for every access check. 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 operator had just made private stayed readable by unauthenticated users over HTTP, SSH, and ImpactAn unauthenticated attacker can keep reading a repository after it is made private, including everything pushed to it afterwards. The attacker needs no account and no timing knowledge: a client polling The stale record lasts until the server restarts or the entry is evicted, and the operator gets no sign of it. Write access is not gained. Because the repository was public until the change, an attacker able to win the race could already read its contents up to that point. What this adds is continued access to everything pushed after the operator made it private. Deployments that run several Soft Serve processes against one shared database were affected more broadly. Each process kept its own cache, so a visibility change made through one process never reached the others, with no race required. Reachable over HTTP, SSH, and Root CauseThe cache was the source of truth for access checks, and clearing it was treated as a step before the write rather than after it.
A reader that missed the cache after the
Moving the clear to after the commit would not have been enough on its own. A reader that read the old row before the commit could still store it after the clear. Affected Versionsv0.6.0 through v0.12.2. The repository cache and this ordering arrived with the database-backed backend in commit PatchesFixed in The repository cache is removed. Every lookup now reads the database, so an access check always sees the visibility most recently saved, whether by this process or any other sharing the database. Removing the cache was preferred over making it race-free. A database lookup costs tens of microseconds on SQLite, which is small next to the Git work behind each request, while keeping the cache correct needed a versioning scheme around every write and still left multi-process deployments stale. Without the cache, the whole class of stale-authorization bugs goes away rather than this one instance. The WorkaroundsIt is recommended to upgrade to the patched release. No configuration closes the race. Restarting the server clears a stale record and restores correct access checks until the next visibility change. Operators who cannot upgrade immediately should create repositories as private from the start ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-33353
GO-2026-4788
GHSA-xgxp-f695-6vrp
Mar 23, 2026
In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve In Soft Serve, an authenticated repo import can clone server-local private repositories in github.com/charmbracelet/soft-serve Fixed in
0.11.6
Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-30832
GO-2026-4634
GHSA-3fvx-xrxq-8jvv
Mar 10, 2026
soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve soft-serve vulnerable to SSRF via unvalidated LFS endpoint in repo import in github.com/charmbracelet/soft-serve Fixed in
0.11.4
References Updated Mar 23, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.6.0
minor
Dependencies (41)
+ 33 more |
|
v0.5.4
patch
9 CVEs
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.5.4
patch
Dependencies (32)
+ 24 more |
|
v0.5.3
patch
9 CVEs
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.5.3
patch
Dependencies (32)
+ 24 more |
|
v0.5.2
patch
9 CVEs
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.5.2
patch
Dependencies (30)
+ 22 more |
|
v0.5.1
patch
9 CVEs
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.5.1
patch
Dependencies (30)
+ 22 more |
|
v0.5.0
minor
9 CVEs
GHSA-fgxm-5hvv-x4vh
Oct 30, 2026
charmbracelet/soft-serve HTTP responses disclose the existence and names of private repositories
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
SummarySoft Serve answers Go's A request for a path inside a private repository, such as The same disclosure appears without ImpactA remote client can learn, with one request per candidate name, which private repositories exist, their exact names, and their clone URLs. Under the shipped default of The Git and LFS routes give the same confirmation for any guessed name, to anonymous and authenticated callers alike, and an invalid Repository contents, refs, commits, and collaborators are not exposed, and no write path is reachable. The LFS panic is caught by the recovery middleware and returns a Reachable over the HTTP interface, which is enabled by default (AV:N), with one ordinary GET request per name (AC:L). No privileges are required under the default anonymous read access (PR:N), and no victim interaction is needed (UI:N). Only repository names and clone URLs are disclosed, which is a low confidentiality impact (C:L), with no integrity or availability impact (I:N, A:N), since the panic is recovered per request. Root CauseTwo pieces of code each assumed the other had checked access.
For a path that is not itself a repository,
Because the exception lived in the middleware shared by every Git route rather than on the go-get route, it also applied to the dumb-HTTP and LFS routes. There it skipped the The Git and LFS routes behind Affected Versionsv0.5.0 through v0.12.2. The go-get walk-up without an access check was introduced in commit PatchesFixed in The go-get route no longer goes through the per-repository access middleware. It authenticates the caller and nothing more, and The go-get exception is removed from
Bad credentials on a go-get request now return On the Git and LFS routes, any repository the caller cannot read now gets one answer, decided in one place: Two behaviours change as a result. An anonymous clone of a mistyped repository name now prompts for credentials instead of reporting that the repository does not exist, and a signed-in user without access to a private repository now gets "not found" instead of a credential prompt. Pushing over HTTP to a name that does not exist still creates the repository, so a user allowed to create repositories can still tell a taken name from a free one by trying to push. That is inherent to push-to-create and is not changed here. WorkaroundsNone. Upgrade to the patched release. Disabling the HTTP server ( Fixed in
0.12.3
References
Updated Oct 30, 2026 · Source: OSV.dev
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.5.0
minor
Dependencies (30)
+ 22 more |
|
v0.4.7
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.7
patch
Dependencies (27)
+ 19 more |
|
v0.4.6
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.6
patch
Dependencies (27)
+ 19 more |
|
v0.4.5
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.5
patch
Dependencies (26)
+ 18 more |
|
v0.4.4
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.4
patch
Dependencies (26)
+ 18 more |
|
v0.4.3
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.3
patch
Dependencies (26)
+ 18 more |
|
v0.4.2
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.2
patch
Dependencies (26)
+ 18 more |
|
v0.4.1
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.1
patch
Dependencies (26)
+ 18 more |
|
v0.4.0
minor
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.4.0
minor
Dependencies (26)
+ 18 more |
|
v0.3.3
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.3.3
patch
Dependencies (24)
+ 16 more |
|
v0.3.2
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.3.2
patch
Dependencies (24)
+ 16 more |
|
v0.3.1
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.3.1
patch
Dependencies (24)
+ 16 more |
|
v0.3.0
minor
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.3.0
minor
Dependencies (24)
+ 16 more |
|
v0.2.3
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.2.3
patch
Dependencies (18)
+ 10 more |
|
v0.2.2
patch
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.2.2
patch
Dependencies (18)
+ 10 more |
|
v0.2.0
minor
8 CVEs
CVE-2026-24058
GO-2026-4353
GHSA-pchf-49fh-w34r
Feb 02, 2026
Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Soft Serve Affected by an Authentication Bypass in github.com/charmbracelet/soft-serve Fixed in
0.11.3
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2026-22253
GO-2026-4290
GHSA-6jm8-x3g6-r33j
Jan 12, 2026
Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Soft Serve is missing an authorization check in LFS lock deletion in github.com/charmbracelet/soft-serve Fixed in
0.11.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64494
GO-2025-4106
GHSA-fv2r-r8mp-pg48
Nov 17, 2025
Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Soft Serve does not sanitize ANSI escape sequences in user input in github.com/charmbracelet/soft-serve Fixed in
0.11.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-64522
GO-2025-4111
GHSA-vwq2-jx9q-9h9f
Nov 17, 2025
Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Soft Serve is vulnerable to SSRF through its Webhooks in github.com/charmbracelet/soft-serve Fixed in
0.11.1
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-58355
GO-2025-3930
GHSA-33pr-m977-5w97
Sep 08, 2025
Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Soft Serve vulnerable to arbitrary file writing through SSH API in github.com/charmbracelet/soft-serve Fixed in
0.10.0
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2025-22130
GO-2025-3374
GHSA-j4jw-m6xr-fv6c
Jan 08, 2025
Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Soft Serve vulnerable to path traversal attacks in github.com/charmbracelet/soft-serve Fixed in
0.8.2
References Updated Mar 03, 2026 · Source: OSV.dev
CVE-2023-43809
GO-2023-2097
GHSA-mc97-99j4-vm2v
Aug 21, 2024
Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Soft Serve Public Key Authentication Bypass Vulnerability when Keyboard-Interactive SSH Authentication is Enabled in github.com/charmbracelet/soft-serve Fixed in
0.6.2
References
Updated Mar 03, 2026 · Source: OSV.dev
CVE-2024-41956
GO-2024-3019
GHSA-m445-w3xr-vp2f
Aug 06, 2024
soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve soft-serve vulnerable to arbitrary code execution by crafting git-lfs requests in github.com/charmbracelet/soft-serve Fixed in
0.7.5
References Updated Mar 03, 2026 · Source: OSV.dev |
v0.2.0
minor
Dependencies (18)
+ 10 more |