[release] v0.23.2-unstable002

This commit is contained in:
Yann Stepienik
2026-08-28 17:51:17 +01:00
parent c54f41eb80
commit 0b5a43e39a
23 changed files with 685 additions and 363 deletions
+1 -4
View File
@@ -4,7 +4,7 @@
"description": "REST API for Cosmos Cloud server management",
"title": "Cosmos Server API",
"contact": {},
"version": "0.23.2-unstable001"
"version": "0.23.2-unstable002"
},
"paths": {
"/_logs": {
@@ -13297,9 +13297,6 @@
"nickname": {
"type": "string"
},
"registerKey": {
"type": "string"
},
"registerKeyExp": {
"type": "string"
},
+1 -4
View File
@@ -4,7 +4,7 @@
"description": "REST API for Cosmos Cloud server management",
"title": "Cosmos Server API",
"contact": {},
"version": "0.23.2-unstable001"
"version": "0.23.2-unstable002"
},
"basePath": "/cosmos",
"paths": {
@@ -11456,9 +11456,6 @@
"nickname": {
"type": "string"
},
"registerKey": {
"type": "string"
},
"registerKeyExp": {
"type": "string"
},
+1 -3
View File
@@ -2050,8 +2050,6 @@ definitions:
type: string
nickname:
type: string
registerKey:
type: string
registerKeyExp:
type: string
registeredAt:
@@ -2066,7 +2064,7 @@ info:
contact: {}
description: REST API for Cosmos Cloud server management
title: Cosmos Server API
version: 0.23.2-unstable001
version: 0.23.2-unstable002
paths:
/_logs:
get:
+4 -1
View File
@@ -1,6 +1,9 @@
## Version 0.23.02
- Hardened RClone /about path
- Hardened get config path
- Hardened set/get config path
- Hardened Update system
- Hardened Invite system
- Fix issue with App Gate not checking 2FA consistently
- Fix temperature reading when there's a warning (Thanks @BetterAndBetterII)
- Fix xram/swap shown under disks (Thanks @madejackson)
+304 -305
View File
@@ -1371,7 +1371,6 @@ type UtilsUser struct {
LastPasswordChangedAt *string `json:"lastPasswordChangedAt,omitempty"`
Link *string `json:"link,omitempty"`
Nickname string `json:"nickname"`
RegisterKey *string `json:"registerKey,omitempty"`
RegisterKeyExp *string `json:"registerKeyExp,omitempty"`
RegisteredAt *string `json:"registeredAt,omitempty"`
Role int `json:"role"`
@@ -36461,323 +36460,323 @@ func ParsePostRcloneVfsStatsResponse(rsp *http.Response) (*PostRcloneVfsStatsRes
// const string: with thousands of chunks the chained `+` fold is several
// times slower for the Go compiler than parsing a slice literal.
var swaggerSpec = []string{
"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",
}
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,
+1 -1
View File
@@ -1,4 +1,4 @@
package cosmossdk
// Version is the SDK version, synced with Cosmos Server at build time.
const Version = "0.23.2-unstable001"
const Version = "0.23.2-unstable002"
+7 -7
View File
@@ -1,12 +1,13 @@
{
"name": "cosmos-server",
"version": "0.19.0-unstable92",
"version": "0.23.2-unstable001",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "cosmos-server",
"version": "0.19.0-unstable92",
"version": "0.23.2-unstable001",
"hasInstallScript": true,
"dependencies": {
"@ant-design/colors": "^6.0.0",
"@ant-design/icons": "^4.7.0",
@@ -31,7 +32,7 @@
"browserslist": "^4.21.7",
"date-fns": "^2.30.0",
"dayjs": "^1.11.10",
"dompurify": "^3.3.1",
"dompurify": "^3.4.14",
"dot": "^1.1.3",
"express": "^4.18.2",
"flag-icons": "^7.2.3",
@@ -5096,10 +5097,9 @@
}
},
"node_modules/dompurify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz",
"integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==",
"license": "(MPL-2.0 OR Apache-2.0)",
"version": "3.4.14",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.14.tgz",
"integrity": "sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg==",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "cosmos-server",
"version": "0.23.2-unstable001",
"version": "0.23.2-unstable002",
"description": "",
"main": "test-server.js",
"bugs": {
@@ -31,7 +31,7 @@
"browserslist": "^4.21.7",
"date-fns": "^2.30.0",
"dayjs": "^1.11.10",
"dompurify": "^3.3.1",
"dompurify": "^3.4.14",
"dot": "^1.1.3",
"express": "^4.18.2",
"flag-icons": "^7.2.3",
+10
View File
@@ -171,6 +171,11 @@ func createAPIToken(w http.ResponseWriter, req *http.Request) {
permissions = utils.DefaultAdminTokenPermissions
}
if !utils.CanGrant(req, permissions) {
utils.HTTPError(w, "Cannot create a token with permissions you do not hold", http.StatusForbidden, "AT016")
return
}
owner := utils.GetAuthContext(req).Nickname
rawToken, tokenConfig, err := GenerateAPIToken(request.Name, request.Description, owner, permissions)
@@ -362,6 +367,11 @@ func updateAPIToken(w http.ResponseWriter, req *http.Request) {
token.Description = *request.Description
}
if request.Permissions != nil {
if !utils.CanGrant(req, request.Permissions) {
utils.ConfigLock.Unlock()
utils.HTTPError(w, "Cannot grant a token permissions you do not hold", http.StatusForbidden, "AT034")
return
}
token.Permissions = request.Permissions
}
if request.IPWhitelist != nil {
+8
View File
@@ -174,6 +174,14 @@ func ConfigApiSet(w http.ResponseWriter, req *http.Request) {
// restore API token as we cannot edit it here
request.APITokens = config.APITokens
if !sameRoles(request.Roles, config.Roles) {
if err := utils.ValidateRolesChange(req, utils.GetRoles(), request.Roles); err != nil {
utils.Error("SettingsUpdate: "+err.Error(), nil)
utils.HTTPError(w, err.Error(), http.StatusForbidden, "UC006")
return
}
}
// restore DNS if user cannot read credentials, as they are sent as empty and we don't want to override them
canReadCredentials := utils.HasPermission(req, utils.PERM_CREDENTIALS_READ)
if !canReadCredentials {
+1 -1
View File
@@ -206,7 +206,7 @@ func main() {
}
// @title Cosmos Server API
// @version 0.23.2-unstable001
// @version 0.23.2-unstable002
// @description REST API for Cosmos Cloud server management
// @BasePath /cosmos
// @securityDefinitions.apikey BearerAuth
+47 -27
View File
@@ -31,6 +31,34 @@ import (
// return nil
// }
// closing handles per entry rather than deferring them all in unzip's loop
func extractEntry(f *zip.File, fpath string) error {
if err := os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
return err
}
rc, err := f.Open()
if err != nil {
return err
}
defer rc.Close()
outFile, err := os.Create(fpath)
if err != nil {
return err
}
defer outFile.Close()
_, err = io.Copy(outFile, rc)
return err
}
// insideDir rejects paths that escape dest (Zip Slip)
func insideDir(dest, fpath string) bool {
rel, err := filepath.Rel(dest, fpath)
if err != nil {
return false
}
return rel != ".." && !strings.HasPrefix(rel, ".."+string(os.PathSeparator))
}
func unzip(src string, dest string) error {
// Open the zip file
r, err := zip.OpenReader(src)
@@ -39,6 +67,11 @@ func unzip(src string, dest string) error {
}
defer r.Close()
dest, err = filepath.Abs(dest)
if err != nil {
return err
}
// Determine the root directory name in the zip
var rootFolder string
if len(r.File) > 0 {
@@ -48,16 +81,24 @@ func unzip(src string, dest string) error {
// Loop through each file in the archive
for _, f := range r.File {
// symlinks could point anywhere; the update never ships them
if f.Mode()&os.ModeSymlink != 0 {
return fmt.Errorf("refusing symlink entry in archive: %s", f.Name)
}
// Skip the root folder from the file path
fpath := filepath.Join(dest, strings.TrimPrefix(f.Name, rootFolder))
if filepath.IsAbs(f.Name) || !insideDir(dest, fpath) {
return fmt.Errorf("refusing archive entry outside destination: %s", f.Name)
}
// Check if the file matches "cosmos-launcher" or "cosmos-launcher-arm64" for renaming
baseName := filepath.Base(fpath)
if baseName == "start.sh" {
// skip
continue
}
if baseName == "start.sh" {
// skip
continue
}
if baseName == "cosmos-launcher" || baseName == "cosmos-launcher-arm64" {
fpath = filepath.Join(filepath.Dir(fpath), baseName+".updated")
@@ -69,28 +110,7 @@ func unzip(src string, dest string) error {
continue
}
// Ensure that directories are created if necessary
if err := os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
return err
}
// Open the file inside the zip archive
rc, err := f.Open()
if err != nil {
return err
}
defer rc.Close()
// Create the destination file
outFile, err := os.Create(fpath)
if err != nil {
return err
}
defer outFile.Close()
// Copy the content of the file
_, err = io.Copy(outFile, rc)
if err != nil {
if err := extractEntry(f, fpath); err != nil {
return err
}
}
+58
View File
@@ -0,0 +1,58 @@
package main
import (
"archive/zip"
"os"
"path/filepath"
"testing"
)
func writeZip(t *testing.T, dir string, names ...string) string {
t.Helper()
p := filepath.Join(dir, "u.zip")
f, err := os.Create(p)
if err != nil {
t.Fatal(err)
}
w := zip.NewWriter(f)
for _, n := range names {
e, err := w.Create(n)
if err != nil {
t.Fatal(err)
}
e.Write([]byte("x"))
}
w.Close()
f.Close()
return p
}
func TestUnzipRejectsTraversal(t *testing.T) {
for _, bad := range []string{"cosmos/../../evil", "../evil", "/etc/evil"} {
tmp := t.TempDir()
dest := filepath.Join(tmp, "dest")
os.Mkdir(dest, 0o755)
z := writeZip(t, tmp, "cosmos/ok.txt", bad)
if err := unzip(z, dest); err == nil {
t.Errorf("entry %q accepted, want rejection", bad)
}
if _, err := os.Stat(filepath.Join(tmp, "evil")); err == nil {
t.Errorf("entry %q escaped to parent dir", bad)
}
}
}
func TestUnzipHappyPath(t *testing.T) {
tmp := t.TempDir()
dest := filepath.Join(tmp, "dest")
os.Mkdir(dest, 0o755)
z := writeZip(t, tmp, "cosmos/a.txt", "cosmos/sub/b.txt", "cosmos/cosmos-launcher")
if err := unzip(z, dest); err != nil {
t.Fatal(err)
}
for _, want := range []string{"a.txt", "sub/b.txt", "cosmos-launcher.updated"} {
if _, err := os.Stat(filepath.Join(dest, want)); err != nil {
t.Errorf("missing %s", want)
}
}
}
+31
View File
@@ -60,12 +60,38 @@ func performLogin(w http.ResponseWriter, req *http.Request, route utils.ProxyRou
return nil
}
// redirectToMFA sends a half-authenticated session to the MFA page on the main domain
func redirectToMFA(w http.ResponseWriter, req *http.Request, mfaState int) error {
config := utils.GetMainConfig()
mainDomain := config.HTTPConfig.Hostname
scheme := "http://"
if utils.IsHTTPS {
scheme = "https://"
}
// cross-host apps can't redirect back to themselves; bounce to the UI home
back := "/cosmos-ui"
if req.Host == mainDomain {
back = req.URL.Path
}
page := "loginmfa"
if mfaState == 2 {
page = "newmfa"
}
http.Redirect(w, req, scheme+mainDomain+"/cosmos-ui/"+page+"?invalid=1&redirect="+url.QueryEscape(back), http.StatusTemporaryRedirect)
return errors.New("User requires MFA")
}
func LoggedInOnlyWithRedirect(w http.ResponseWriter, req *http.Request, route utils.ProxyRouteConfig) error {
if utils.GetAuthContext(req).Nickname == "" {
utils.Error("App gate: User is not logged in", nil)
return performLogin(w, req, route)
}
if st := utils.GetAuthContext(req).MFAState; st != 0 {
utils.Error("App gate: MFA required", nil)
return redirectToMFA(w, req, st)
}
return nil
}
@@ -81,5 +107,10 @@ func AdminOnlyWithRedirect(w http.ResponseWriter, req *http.Request, route utils
return errors.New("User is not Admin")
}
if st := utils.GetAuthContext(req).MFAState; st != 0 {
utils.Error("App gate: MFA required", nil)
return redirectToMFA(w, req, st)
}
return nil
}
+58
View File
@@ -0,0 +1,58 @@
package proxy
import (
"context"
"net/http"
"net/http/httptest"
"strings"
"testing"
"github.com/azukaar/cosmos-server/src/utils"
)
func gateReq(host string, ctx *utils.AuthContext) *http.Request {
r := httptest.NewRequest("GET", "http://"+host+"/app/page", nil)
return r.WithContext(context.WithValue(r.Context(), utils.AuthCtxKey, ctx))
}
func TestAppGateBlocksPendingMFA(t *testing.T) {
cfg := utils.Config{}
cfg.HTTPConfig.Hostname = "cosmos.example"
utils.LoadBaseMainConfig(cfg)
route := utils.ProxyRouteConfig{Name: "app", Host: "app.example", AuthEnabled: true}
admin := []utils.Permission{utils.PERM_LOGIN, utils.PERM_ADMIN_READ}
cases := []struct {
name string
gate func(http.ResponseWriter, *http.Request, utils.ProxyRouteConfig) error
state int
host string
page string
back string
}{
{"user pending totp", LoggedInOnlyWithRedirect, 1, "app.example", "loginmfa", "%2Fcosmos-ui"},
{"user needs enrol", LoggedInOnlyWithRedirect, 2, "app.example", "newmfa", "%2Fcosmos-ui"},
{"admin pending totp", AdminOnlyWithRedirect, 1, "app.example", "loginmfa", "%2Fcosmos-ui"},
{"same host keeps path", LoggedInOnlyWithRedirect, 1, "cosmos.example", "loginmfa", "%2Fapp%2Fpage"},
}
for _, c := range cases {
w := httptest.NewRecorder()
err := c.gate(w, gateReq(c.host, &utils.AuthContext{Nickname: "u", Permissions: admin, MFAState: c.state}), route)
if err == nil {
t.Errorf("%s: gate admitted the session", c.name)
continue
}
loc := w.Header().Get("Location")
if w.Code != http.StatusTemporaryRedirect || !strings.HasPrefix(loc, "http://cosmos.example/cosmos-ui/"+c.page+"?") || !strings.HasSuffix(loc, "redirect="+c.back) {
t.Errorf("%s: got %d %q", c.name, w.Code, loc)
}
}
// fully authenticated sessions still pass both gates
for _, gate := range []func(http.ResponseWriter, *http.Request, utils.ProxyRouteConfig) error{LoggedInOnlyWithRedirect, AdminOnlyWithRedirect} {
w := httptest.NewRecorder()
if err := gate(w, gateReq("app.example", &utils.AuthContext{Nickname: "u", Permissions: admin, MFAState: 0}), route); err != nil {
t.Errorf("MFA-complete session rejected: %v", err)
}
}
}
+5
View File
@@ -67,6 +67,11 @@ func UserCreate(w http.ResponseWriter, req *http.Request) {
if utils.GetRolePermissions(role) == nil {
role = utils.USER
}
if !utils.CanGrant(req, utils.GetRolePermissions(role)) {
utils.Error("UserCreation: cannot assign a role with permissions the caller lacks", nil)
utils.HTTPError(w, "Cannot assign a role with permissions you do not hold", http.StatusForbidden, "UC007")
return
}
utils.Debug("UserCreation: Creating user " + nickname)
+5
View File
@@ -75,6 +75,11 @@ func UserEdit(w http.ResponseWriter, req *http.Request) {
if utils.CheckPermissions(w, req, utils.PERM_USERS) != nil {
return
}
if !utils.CanGrant(req, utils.GetRolePermissions(*request.Role)) {
utils.Error("UserEdit: cannot assign a role with permissions the caller lacks", nil)
utils.HTTPError(w, "Cannot assign a role with permissions you do not hold", http.StatusForbidden, "UE003")
return
}
toSet["Role"] = *request.Role
}
-1
View File
@@ -37,7 +37,6 @@ func Me(w http.ResponseWriter, req *http.Request) {
user.Link = "/api/user/" + user.Nickname
user.Email = ""
user.RegisterKey = ""
json.NewEncoder(w).Encode(map[string]interface{}{
"status": "OK",
-3
View File
@@ -68,9 +68,6 @@ func ResetPassword(w http.ResponseWriter, req *http.Request) {
RegisterKeyExp := time.Now().Add(time.Hour * 24 * 7)
RegisterKey := utils.GenerateRandomString(48)
utils.Debug(RegisterKey)
utils.Debug(RegisterKeyExp.String())
err := utils.UpdateUser(nickname, map[string]interface{}{
"RegisterKeyExp": RegisterKeyExp,
"RegisterKey": RegisterKey,
-3
View File
@@ -61,9 +61,6 @@ func UserResendInviteLink(w http.ResponseWriter, req *http.Request) {
RegisterKeyExp := time.Now().Add(time.Hour * 24 * 7)
RegisterKey := utils.GenerateRandomString(48)
utils.Debug(RegisterKey)
utils.Debug(RegisterKeyExp.String())
err := utils.UpdateUser(nickname, map[string]interface{}{
"RegisterKeyExp": RegisterKeyExp,
"RegisterKey": RegisterKey,
+80
View File
@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"net/http"
"strings"
)
func GetAuthContext(req *http.Request) *AuthContext {
@@ -210,3 +211,82 @@ func HasPermission(req *http.Request, permission Permission) bool {
return true
}
func callerPermissions(req *http.Request) []Permission {
ctx := GetAuthContext(req)
if ctx.APIToken != nil {
return ctx.APIToken.Permissions
}
if ctx.Nickname == "" {
return nil
}
return ctx.Permissions
}
// CanGrant: nobody can hand out a permission they do not hold themselves
func CanGrant(req *http.Request, perms []Permission) bool {
own := callerPermissions(req)
for _, p := range perms {
if p == PERM_LOGIN || p == PERM_LOGIN_WEAK {
continue
}
if !containsPermission(own, p) {
return false
}
}
return true
}
// MissingGrants returns the permissions in perms the caller cannot grant
func MissingGrants(req *http.Request, perms []Permission) []Permission {
own := callerPermissions(req)
var missing []Permission
for _, p := range perms {
if p == PERM_LOGIN || p == PERM_LOGIN_WEAK || containsPermission(own, p) {
continue
}
missing = append(missing, p)
}
return missing
}
// permissions the built-in Admin role can never lose, so nobody locks the server out
var AdminRoleRequiredPermissions = []Permission{PERM_LOGIN, PERM_ADMIN, PERM_USERS, PERM_CONFIGURATION}
// NewlyGrantedPermissions lists permissions next grants that prev did not
func NewlyGrantedPermissions(prev, next map[Role]RoleConfig) []Permission {
seen := map[Permission]bool{}
var out []Permission
for role, rc := range next {
old := prev[role]
if _, ok := prev[role]; !ok {
old = defaultRoles[role]
}
for _, p := range rc.Permissions {
if !containsPermission(old.Permissions, p) && !seen[p] {
seen[p] = true
out = append(out, p)
}
}
}
return out
}
// ValidateRolesChange enforces grant rules for a roles-matrix update
func ValidateRolesChange(req *http.Request, prev, next map[Role]RoleConfig) error {
if missing := MissingGrants(req, NewlyGrantedPermissions(prev, next)); len(missing) > 0 {
labels := make([]string, len(missing))
for i, p := range missing {
labels[i] = PermissionLabel(p)
}
return fmt.Errorf("cannot grant permissions you do not hold: %s", strings.Join(labels, ", "))
}
if admin, ok := next[ADMIN]; ok {
for _, p := range AdminRoleRequiredPermissions {
if !containsPermission(admin.Permissions, p) {
return fmt.Errorf("the Admin role must keep permission: %s", PermissionLabel(p))
}
}
}
return nil
}
+60
View File
@@ -0,0 +1,60 @@
package utils
import (
"context"
"net/http"
"testing"
)
func reqWithPerms(perms []Permission) *http.Request {
r, _ := http.NewRequest("GET", "/", nil)
ctx := &AuthContext{Nickname: "u", Permissions: perms, IsSudoed: true}
return r.WithContext(context.WithValue(r.Context(), AuthCtxKey, ctx))
}
func TestCanGrant(t *testing.T) {
r := reqWithPerms([]Permission{PERM_LOGIN, PERM_CONFIGURATION})
if !CanGrant(r, []Permission{PERM_LOGIN, PERM_LOGIN_WEAK, PERM_CONFIGURATION}) {
t.Error("should grant held permissions (login ones are free)")
}
if CanGrant(r, []Permission{PERM_ADMIN}) {
t.Error("must not grant PERM_ADMIN without holding it")
}
tok, _ := http.NewRequest("GET", "/", nil)
tok = tok.WithContext(context.WithValue(tok.Context(), AuthCtxKey, &AuthContext{APIToken: &APITokenContext{Permissions: []Permission{PERM_ADMIN}}}))
if CanGrant(tok, []Permission{PERM_USERS}) {
t.Error("api token must not grant beyond its own permissions")
}
anon, _ := http.NewRequest("GET", "/", nil)
if CanGrant(anon, []Permission{PERM_ADMIN_READ}) {
t.Error("anonymous cannot grant anything")
}
}
func TestValidateRolesChange(t *testing.T) {
prev := map[Role]RoleConfig{}
for k, v := range defaultRoles {
prev[k] = v
}
// config-only user tries to give USER role PERM_ADMIN
r := reqWithPerms([]Permission{PERM_LOGIN, PERM_CONFIGURATION})
next := map[Role]RoleConfig{USER: {Name: "User", Permissions: []Permission{PERM_LOGIN, PERM_ADMIN}}}
if err := ValidateRolesChange(r, prev, next); err == nil {
t.Error("escalation via roles matrix must be rejected")
}
// same edit by a full admin is fine
admin := reqWithPerms(defaultRoles[ADMIN].Permissions)
if err := ValidateRolesChange(admin, prev, next); err != nil {
t.Errorf("admin edit rejected: %v", err)
}
// brand new role compared against nothing: all perms are new grants
next = map[Role]RoleConfig{Role(7): {Name: "Ops", Permissions: []Permission{PERM_RESOURCES}}}
if err := ValidateRolesChange(r, prev, next); err == nil {
t.Error("new role with unheld permission must be rejected")
}
// admin lockout guard
next = map[Role]RoleConfig{ADMIN: {Name: "Admin", Permissions: []Permission{PERM_LOGIN, PERM_USERS, PERM_CONFIGURATION}}}
if err := ValidateRolesChange(admin, prev, next); err == nil {
t.Error("stripping PERM_ADMIN from Admin role must be rejected")
}
}
+1 -1
View File
@@ -157,7 +157,7 @@ type FileStats struct {
type User struct {
Nickname string `validate:"required" json:"nickname" bson:"Nickname"`
Password string `validate:"required" json:"-" bson:"Password"`
RegisterKey string `json:"registerKey" bson:"RegisterKey"`
RegisterKey string `json:"-" bson:"RegisterKey"`
RegisterKeyExp time.Time `json:"registerKeyExp" bson:"RegisterKeyExp"`
Role Role `validate:"required" json:"role" bson:"Role"`
PasswordCycle int `json:"-" bson:"PasswordCycle"`