Skip to content
Heist/ feed
Back to feed
Medium

Kargo has Missing Authorization Vulnerabilities in Approval & Promotion REST API Endpoints

Type: advisorySources: OSV

Kargo manages and automates the promotion of software artifacts. From v1.9.0 to v1.9.2, Kargo's authorization model includes a promote verb -- a non-standard Kubernetes "dolphin verb" -- that gates the ability to advance Freight through a promotion pipeline. This verb exists to separate the ability to manage promotion-related resources from the ability to trigger promotions, enabling fine-grained access control over what is often a sensitive operation. The promote verb is correctly enforced in Kargo's legacy gRPC API. However, three endpoints in the newer REST API omit this check, relying only on standard Kubernetes RBAC for the underlying resource operations (patch on freights/status or create on promotions). This permits users who hold those standard permissions -- but who were deliberately not granted promote -- to bypass the intended authorization boundary. The affected endpoints are /v1beta1/projects/{project}/freight/{freight}/approve, /v1beta1/projects/{project}/stages/{stage}/promotions, and /v1beta1/projects/{project}/stages/{stage}/promotions/downstream. This vulnerability is fixed in v1.9.3.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-27111
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 08:21 UTC · Revision 1

Source evidence

Kargo has Missing Authorization Vulnerabilities in Approval & Promotion REST API Endpoints

core-osv · Original source

Published 20 Feb 2026, 21:17 UTC

Kargo manages and automates the promotion of software artifacts. From v1.9.0 to v1.9.2, Kargo's authorization model includes a promote verb -- a non-standard Kubernetes "dolphin verb" -- that gates the ability to advance Freight through a promotion pipeline. This verb exists to separate the ability to manage promotion-related resources from the ability to trigger promotions, enabling fine-grained access control over what is often a sensitive operation. The promote verb is correctly enforced in Kargo's legacy gRPC API. However, three endpoints in the newer REST API omit this check, relying only on standard Kubernetes RBAC for the underlying resource operations (patch on freights/status or create on promotions). This permits users who hold those standard permissions -- but who were deliberately not granted promote -- to bypass the intended authorization boundary. The affected endpoints are /v1beta1/projects/{project}/freight/{freight}/approve, /v1beta1/projects/{project}/stages/{stage}/promotions, and /v1beta1/projects/{project}/stages/{stage}/promotions/downstream. This vulnerability is fixed in v1.9.3.

osv:CVE-2026-27111
Complete source record
{
  "id": "bc4191e867a4fff622a361c44b487fd66939c9732784767476d73c11032b64d6",
  "url": "https://osv.dev/vulnerability/CVE-2026-27111",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Kargo has Missing Authorization Vulnerabilities in Approval & Promotion REST API Endpoints",
    "summary": "Kargo manages and automates the promotion of software artifacts. From v1.9.0 to v1.9.2, Kargo's authorization model includes a promote verb -- a non-standard Kubernetes \"dolphin verb\" -- that gates the ability to advance Freight through a promotion pipeline. This verb exists to separate the ability to manage promotion-related resources from the ability to trigger promotions, enabling fine-grained access control over what is often a sensitive operation. The promote verb is correctly enforced in Kargo's legacy gRPC API. However, three endpoints in the newer REST API omit this check, relying only on standard Kubernetes RBAC for the underlying resource operations (patch on freights/status or create on promotions). This permits users who hold those standard permissions -- but who were deliberately not granted promote -- to bypass the intended authorization boundary. The affected endpoints are /v1beta1/projects/{project}/freight/{freight}/approve, /v1beta1/projects/{project}/stages/{stage}/promotions, and /v1beta1/projects/{project}/stages/{stage}/promotions/downstream. This vulnerability is fixed in v1.9.3.",
    "evidence": "osv:CVE-2026-27111",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-27111",
      "aliases": [
        "CVE-2026-27111",
        "GHSA-5vvm-67pj-72g4",
        "GO-2026-4515"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/akuity/kargo",
              "type": "GIT",
              "events": [
                {
                  "introduced": "d16522090b99645053862138dacd7191ba44d207"
                },
                {
                  "fixed": "155c6852ffbffa2902f18e6c7add91a846e8d344"
                },
                {
                  "fixed": "833314cad5513d48d89431493325ae44c1324a49"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:akuity:kargo:*:*:*:*:*:kubernetes:*:*",
                    "range": [
                      {
                        "introduced": "1.9.0"
                      },
                      {
                        "fixed": "1.9.3"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "833314cad5513d48d89431493325ae44c1324a49"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.9.2",
            "v1.9.1",
            "v1.9.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-27111.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:27.262236256Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27111.json",
        "https://github.com/akuity/kargo/security/advisories/GHSA-5vvm-67pj-72g4",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-27111",
        "https://github.com/akuity/kargo/commit/833314cad5513d48d89431493325ae44c1324a49"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27111.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-27111",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 493750,
  "published_at": "2026-02-20T21:17:07.383+00:00"
}