Skip to content
Heist/ feed
Back to feed
Critical

Arcane: Missing admin authorization on git repository endpoints allows non-admin users to exfiltrate stored Git credentials and tamper with GitOps configs

Type: advisorySources: OSV

Arcane is an interface for managing Docker containers, images, networks, and volumes. Prior to 1.19.0, Arcane's huma-based REST API exposes nine endpoints under /api/customize/git-repositories and /api/git-repositories/sync for managing GitOps source repositories and their stored credentials. Eight of those endpoints (list, create, get, update, delete, test, listBranches, browseFiles) never call the checkAdmin(ctx) helper that every other admin-managed resource (container registries, environments, users, API keys, swarm, settings, system, notifications, events) uses, and the huma authentication middleware deliberately enforces only authentication, not the admin role. As a result, any logged-in user with the default user role can list, create, modify, delete, and test git repository configurations. By repointing an existing repository's URL to an attacker-controlled host while omitting the token/sshKey fields (which UpdateRepository only rewrites when explicitly supplied), the attacker causes Arcane to decrypt the legitimate PAT/SSH key on its next /test, /branches, or /files call and present it as HTTP Basic auth (or SSH key auth) to the attacker's host — producing a one-step exfiltration of plaintext Git credentials. This vulnerability is fixed in 1.19.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-45625
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 20:28 UTC · Revision 1

Source evidence

Arcane: Missing admin authorization on git repository endpoints allows non-admin users to exfiltrate stored Git credentials and tamper with GitOps configs

core-osv · Original source

Published 29 May 2026, 17:10 UTC

Arcane is an interface for managing Docker containers, images, networks, and volumes. Prior to 1.19.0, Arcane's huma-based REST API exposes nine endpoints under /api/customize/git-repositories and /api/git-repositories/sync for managing GitOps source repositories and their stored credentials. Eight of those endpoints (list, create, get, update, delete, test, listBranches, browseFiles) never call the checkAdmin(ctx) helper that every other admin-managed resource (container registries, environments, users, API keys, swarm, settings, system, notifications, events) uses, and the huma authentication middleware deliberately enforces only authentication, not the admin role. As a result, any logged-in user with the default user role can list, create, modify, delete, and test git repository configurations. By repointing an existing repository's URL to an attacker-controlled host while omitting the token/sshKey fields (which UpdateRepository only rewrites when explicitly supplied), the attacker causes Arcane to decrypt the legitimate PAT/SSH key on its next /test, /branches, or /files call and present it as HTTP Basic auth (or SSH key auth) to the attacker's host — producing a one-step exfiltration of plaintext Git credentials. This vulnerability is fixed in 1.19.0.

osv:CVE-2026-45625
Complete source record
{
  "id": "f507c1b535689f5518766279035e1dbeef9c6781aad906c7f68790e3e2f15b08",
  "url": "https://osv.dev/vulnerability/CVE-2026-45625",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Arcane: Missing admin authorization on git repository endpoints allows non-admin users to exfiltrate stored Git credentials and tamper with GitOps configs",
    "summary": "Arcane is an interface for managing Docker containers, images, networks, and volumes. Prior to 1.19.0, Arcane's huma-based REST API exposes nine endpoints under /api/customize/git-repositories and /api/git-repositories/sync for managing GitOps source repositories and their stored credentials. Eight of those endpoints (list, create, get, update, delete, test, listBranches, browseFiles) never call the checkAdmin(ctx) helper that every other admin-managed resource (container registries, environments, users, API keys, swarm, settings, system, notifications, events) uses, and the huma authentication middleware deliberately enforces only authentication, not the admin role. As a result, any logged-in user with the default user role can list, create, modify, delete, and test git repository configurations. By repointing an existing repository's URL to an attacker-controlled host while omitting the token/sshKey fields (which UpdateRepository only rewrites when explicitly supplied), the attacker causes Arcane to decrypt the legitimate PAT/SSH key on its next /test, /branches, or /files call and present it as HTTP Basic auth (or SSH key auth) to the attacker's host — producing a one-step exfiltration of plaintext Git credentials. This vulnerability is fixed in 1.19.0.",
    "evidence": "osv:CVE-2026-45625",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-45625",
      "aliases": [
        "CVE-2026-45625",
        "GHSA-7h26-hg47-p9hx",
        "GO-2026-5220"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/getarcaneapp/arcane",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "2d6d0790e980f0fd77b57a0869b88bccc07d0283"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.19.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.19.0"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.18.1",
            "types/v1.18.1",
            "cli/v1.18.1",
            "backend/v1.18.1",
            "v1.18.0",
            "types/v1.18.0",
            "cli/v1.18.0",
            "backend/v1.18.0",
            "v1.17.4",
            "types/v1.17.4",
            "cli/v1.17.4",
            "backend/v1.17.4",
            "v1.17.3",
            "types/v1.17.3",
            "cli/v1.17.3",
            "backend/v1.17.3",
            "v1.17.2",
            "types/v1.17.2",
            "cli/v1.17.2",
            "backend/v1.17.2",
            "v1.17.1",
            "types/v1.17.1",
            "cli/v1.17.1",
            "backend/v1.17.1",
            "v1.17.0",
            "types/v1.17.0",
            "cli/v1.17.0",
            "backend/v1.17.0",
            "v1.16.3",
            "types/v1.16.3",
            "cli/v1.16.3",
            "backend/v1.16.3",
            "v1.16.2",
            "types/v1.16.2",
            "cli/v1.16.2",
            "backend/v1.16.2",
            "v1.16.1",
            "types/v1.16.1",
            "cli/v1.16.1",
            "backend/v1.16.1",
            "v1.16.0",
            "types/v1.16.0",
            "cli/v1.16.0",
            "backend/v1.16.0",
            "v1.15.3",
            "types/v1.15.3",
            "cli/v1.15.3",
            "backend/v1.15.3",
            "v1.15.2",
            "types/v1.15.2",
            "cli/v1.15.2",
            "v1.15.1",
            "types/v1.15.1",
            "cli/v1.15.1",
            "v1.15.0",
            "types/v1.15.0",
            "cli/v1.15.0",
            "v1.14.1",
            "v1.14.0",
            "v1.13.2",
            "v1.13.1",
            "v1.13.0",
            "v1.12.2",
            "v1.12.1",
            "v1.12.0",
            "v1.11.3",
            "v1.11.2",
            "v1.11.1",
            "v1.11.0",
            "v1.10.1",
            "v1.10.0",
            "v1.9.0",
            "v1.8.1",
            "v1.8.0",
            "v1.7.1",
            "v1.7.0",
            "v1.6.0",
            "v1.5.2",
            "v1.5.1",
            "v1.5.0",
            "v1.4.0",
            "v1.3.0",
            "v1.2.2",
            "v1.2.1",
            "v1.2.0",
            "v1.1.0",
            "v1.0.2",
            "v1.0.1",
            "v1.0.0",
            "v0.15.1",
            "v0.15.0",
            "v0.14.0",
            "v0.13.1",
            "v0.13.0",
            "v0.12.0",
            "v0.11.1",
            "v0.11.0",
            "v0.10.0",
            "v0.9.2",
            "v0.9.1",
            "v0.9.0",
            "v0.8.0",
            "v0.7.1",
            "v0.7.0",
            "v0.6.0",
            "v0.5.0",
            "v0.4.1",
            "v0.4.0",
            "v0.3.0",
            "v0.2.0",
            "v0.1.1",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-45625.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:51.720438421Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45625.json",
        "https://github.com/getarcaneapp/arcane/security/advisories/GHSA-7h26-hg47-p9hx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-45625"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45625.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-45625",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 520310,
  "published_at": "2026-05-29T17:10:57.21+00:00"
}