CVE-2026-39386
Description
Neko is a a self-hosted virtual browser that runs in Docker and uses WebRTC In versions 3.0.0 through 3.0.10 and 3.1.0 through 3.1.1, any authenticated user can immediately obtain full administrative control of the entire Neko instance (member management, room settings, broadcast control, session termination, etc.). This results in a complete compromise of the instance. The vulnerability has been patched in v3.0.11 and v3.1.2. If upgrading is not immediately possible, the following mitigations can reduce risk: Restrict access to trusted users only (avoid granting accounts to untrusted parties); ensure all user passwords are strong and only shared with trusted individuals; run the instance only when needed; avoid leaving it continuously exposed; place the instance behind authentication layers such as a reverse proxy with additional access controls; disable or restrict access to the /api/profile endpoint if feasible; and/or monitor for suspicious privilege changes or unexpected administrative actions. Note that these are temporary mitigations and do not fully eliminate the vulnerability. Upgrading is strongly recommended.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
github.com/m1k1o/neko/serverGo | >= 3.0.0, < 3.0.11 | 3.0.11 |
github.com/m1k1o/neko/serverGo | >= 0.0.0-20250322225643-212bf8a60756, < 0.0.0-20260406184107-c54bcf1ee211 | 0.0.0-20260406184107-c54bcf1ee211 |
Patches
26b561feb9016fix(api): update profile handling to ensure only the name field is modified.
1 file changed · +14 −4
server/internal/api/session.go+14 −4 modified@@ -84,15 +84,25 @@ func (api *ApiManagerCtx) Whoami(w http.ResponseWriter, r *http.Request) error { }) } +// TODO: Remove when legacy mode is removed as all sessions must be synced with their providers. func (api *ApiManagerCtx) UpdateProfile(w http.ResponseWriter, r *http.Request) error { session, _ := auth.GetSession(r) - data := session.Profile() - if err := utils.HttpJsonRequest(w, r, &data); err != nil { - return err + profile := session.Profile() + if !profile.IsAdmin { + // Name is the only updatable field in the profile for non-admins + var payload types.MemberProfile + if err := utils.HttpJsonRequest(w, r, &payload); err != nil { + return err + } + profile.Name = payload.Name + } else { + if err := utils.HttpJsonRequest(w, r, &profile); err != nil { + return err + } } - err := api.sessions.Update(session.ID(), data) + err := api.sessions.Update(session.ID(), profile) if err != nil { if errors.Is(err, types.ErrSessionNotFound) { return utils.HttpBadRequest("session does not exist")
c54bcf1ee211fix(api): update profile handling to ensure only the name field is modified.
1 file changed · +14 −4
server/internal/api/session.go+14 −4 modified@@ -84,15 +84,25 @@ func (api *ApiManagerCtx) Whoami(w http.ResponseWriter, r *http.Request) error { }) } +// TODO: Remove when legacy mode is removed as all sessions must be synced with their providers. func (api *ApiManagerCtx) UpdateProfile(w http.ResponseWriter, r *http.Request) error { session, _ := auth.GetSession(r) - data := session.Profile() - if err := utils.HttpJsonRequest(w, r, &data); err != nil { - return err + profile := session.Profile() + if !profile.IsAdmin { + // Name is the only updatable field in the profile for non-admins + var payload types.MemberProfile + if err := utils.HttpJsonRequest(w, r, &payload); err != nil { + return err + } + profile.Name = payload.Name + } else { + if err := utils.HttpJsonRequest(w, r, &profile); err != nil { + return err + } } - err := api.sessions.Update(session.ID(), data) + err := api.sessions.Update(session.ID(), profile) if err != nil { if errors.Is(err, types.ErrSessionNotFound) { return utils.HttpBadRequest("session does not exist")
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
7- github.com/advisories/GHSA-2gw9-c2r2-f5qfghsaADVISORY
- github.com/m1k1o/neko/security/advisories/GHSA-2gw9-c2r2-f5qfnvdMitigationVendor AdvisoryWEB
- nvd.nist.gov/vuln/detail/CVE-2026-39386ghsaADVISORY
- github.com/m1k1o/neko/commit/6b561feb9016badea99ae7305091c0ff55e1d114ghsaWEB
- github.com/m1k1o/neko/commit/c54bcf1ee211e28104a2bb6db59583a39c4a4d6eghsaWEB
- github.com/m1k1o/neko/releases/tag/v3.0.11nvdProductWEB
- github.com/m1k1o/neko/releases/tag/v3.1.2nvdProductWEB
News mentions
0No linked articles in our index yet.