Skip to main content

CVE-2026-96628: CWE-863: Incorrect Authorization in getarcaneapp arcane

0
Medium
Published: 10/16/2026 (10/16/2026, 21:12:03 UTC)
Source: CVE Database V5
Vendor/Project: getarcaneapp
Product: arcane

Description

## Summary Arcane v2.10.2 contains an authorization inconsistency in `AuthMiddleware.managerAuth`. When a request supplies a valid environment access token through the `X-Arcane-Agent-Token` header, `managerAuth` resolves the associated environment, installs an environment-scoped permission set, and immediately calls `next(c)`. This occurs before the middleware evaluates the `AdminRequired` option and verifies that the caller is a global administrator. As a result, an environment-scoped access token can access routes protected with `WithAdminRequired()`, despite the corresponding `EnvironmentPermissionSet` intentionally containing no global or sudo permissions. In v2.10.2, the affected admin-only surface is the manager's Go `pprof` diagnostic interface under: `/api/debug/pprof/*` This exposes diagnostic and runtime profiling information that the application explicitly intends to restrict to global administrators. The issue is an incorrect authorization vulnerability (CWE-863). ## Details ### 1. Environment access tokens are accepted by the manager authentication middleware The production authentication middleware is configured with an environment access-token resolver: `backend/internal/di/providers.go` Conceptually, the middleware is constructed as: ```go auth.NewAuthMiddleware(authService, cfg). WithApiKeyValidator(apiKey). WithEnvironmentAccessTokenResolver(env). WithPermissionResolver(role) ``` Therefore, the `X-Arcane-Agent-Token` authentication path is active in the production manager. ### 2. The environment-token path returns before authorization options are evaluated The relevant logic is in: `backend/internal/auth/middleware.go` `managerAuth` first checks the `X-Arcane-Agent-Token` header. When the token resolves to an environment, the middleware installs an environment-scoped permission set and immediately continues processing: ```go if agentToken := req.Header.Get(utils.HeaderAgentToken); agentToken != "" { if env, ok := m.resolveEnvironmentAccessToken(ctx, agentToken).Get(); ok { environmentScopedInternal(c, env) return next(c) } } ``` The important part is the unconditional: ```go return next(c) ``` The normal authentication path later evaluates the middleware's `AdminRequired` option: ```go ps := m.resolvePermissionsOrDeny(ctx, user) if m.options.AdminRequired && !ps.IsGlobalAdmin() { return c.JSON(http.StatusForbidden, common.APIError{ Code: "FORBIDDEN", Message: "You don't have permission to access this resource", }) } ``` The environment-token branch never reaches this check. Consequently, `WithAdminRequired()` has no effect when authentication succeeds through a valid environment access token. This creates an authorization inconsistency between authentication mechanisms: - normal user/session authentication → `AdminRequired` is enforced; - environment access-token authentication → `AdminRequired` is bypassed. ### 3. Environment tokens are intentionally not global-administrator credentials `backend/pkg/authz/permission_set.go` defines the effective permissions assigned to an environment access token. `EnvironmentPermissionSet(envID)` grants environment-scoped permissions only for the specified environment: ```go func EnvironmentPermissionSet(envID string) *PermissionSet { ps := NewPermissionSet() if envID == "" { return ps } for _, p := range AllPermissions() { if IsEnvScoped(p) { ps.AddEnv(envID, p) } } return ps } ``` The implementation explicitly establishes that these credentials do not receive global or sudo permissions. Therefore, an environment access token should not satisfy a global-administrator authorization requirement. The early return in `managerAuth` bypasses this intended privilege boundary. ### 4. `/api/debug/pprof/*` explicitly requires global-administrator authorization The diagnostic routes are registered in: `backend/api/ws/diagnostics.go` The `pprof` group is protected using: ```go pprofGroup := group.Group( "/debug/pprof", authMiddleware.WithAdminRequired().Add(), ) ``` The source also documents the intended authorization requirement by noting that pprof keeps the stricter admin-required gate. The group exposes handlers including: ```text /api/debug/pprof/ /api/debug/pprof/cmdline /api/debug/pprof/profile /api/debug/pprof/symbol /api/debug/pprof/trace /api/debug/pprof/heap /api/debug/pprof/goroutine /api/debug/pprof/allocs /api/debug/pprof/block /api/debug/pprof/mutex /api/debug/pprof/threadcreate ``` Named profiles are dispatched through `pprof.Handler`. Because `WithAdminRequired()` is bypassed by the environment-token branch, a valid environment access token can reach these handlers even though its permission set is not globally privileged. ### 5. Other middleware does not restore the missing authorization check The CSRF middleware recognizes `X-Arcane-Agent-Token` as a heade

CVSS v3.1

Score 4.3medium

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

Affected software

getarcaneapp

arcane

Affected versions
<2.11.0
GitHub Actionsmore threats →ai
getarcaneapp/arcane
pkg:github/getarcaneapp/arcane
Affected versions
<2.11.0

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 10/16/2026, 21:48:28 UTC

Technical Analysis

Arcane is a Docker management interface. Before version 2.11.0, the authorization middleware (AuthMiddleware.managerAuth) incorrectly processes requests containing the X-Arcane-Agent-Token by calling next() before evaluating the AdminRequired option. This allows an attacker with a valid X-Arcane-Agent-Token to access the /api/debug/pprof/* endpoints, which are protected by WithAdminRequired middleware, bypassing the IsGlobalAdmin check. This exposes sensitive runtime profiling and diagnostic information and may cause profiling overhead. The issue is resolved in Arcane 2.11.0.

Potential Impact

An attacker with a valid X-Arcane-Agent-Token can bypass administrator authorization checks to access Go pprof runtime and diagnostic information endpoints. This exposure could lead to information disclosure of runtime profiling data. There is no direct impact on integrity or availability reported. The CVSS score is 4.3 (medium severity), reflecting limited confidentiality impact and low complexity of attack.

Mitigation Recommendations

Upgrade Arcane to version 2.11.0 or later, where this authorization bypass vulnerability is fixed. No other mitigation is indicated by the vendor advisory.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Data Version
5.2
Assigner Short Name
GitHub_M
Date Reserved
2026-09-23T14:35:50.129Z
Cvss Version
3.1
State
PUBLISHED

Threat ID: 6ad2989d2cdf04f6563b31ef

Added to database: 10/16/2026, 21:35:25 UTC

Last enriched: 10/16/2026, 21:48:28 UTC

Last updated: 10/16/2026, 23:10:30 UTC

Views: 8

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses