2026-10-12 21:58CVE-2026-102596GitHub_M
PUBLISHED5.2CWE-862

Nango: Production flow RBAC bypass on private flow-read routes

Nango is an open-source platform for connecting agents and products to third-party APIs. Prior to 0.70.9, on accounts with RBAC enabled through a plan with has_rbac=true, two private flow-read routes, GET /api/v1/integrations/:providerConfigKey/flows and GET /api/v1/flow/:flowName, apply webAuth but omit can({ action: 'read', resource: 'flow', scopedBy: envScope }). A same-team user with the development_full_access role can therefore request env=prod and read production integration flow metadata or named flow configuration despite being denied by guarded production routes. Both controllers use res.locals.environment from the authenticated account, so the issue bypasses the production role boundary but does not cross tenant boundaries. This issue is fixed in version 0.70.9 and managed-1.5.11-0.70.8-aae30d044d7e229807d51a3957c212f3fb689e1a

Problem type

Affected products

NangoHQ

nango

< 0.70.9 - AFFECTED

References

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-102596
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-102596",
    "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
    "assignerShortName": "GitHub_M",
    "dateUpdated": "2026-10-12T21:58:26.250Z",
    "dateReserved": "2026-09-29T14:18:02.920Z",
    "datePublished": "2026-10-12T21:58:26.250Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
        "shortName": "GitHub_M",
        "dateUpdated": "2026-10-12T21:58:26.250Z"
      },
      "title": "Nango: Production flow RBAC bypass on private flow-read routes",
      "descriptions": [
        {
          "lang": "en",
          "value": "Nango is an open-source platform for connecting agents and products to third-party APIs. Prior to 0.70.9, on accounts with RBAC enabled through a plan with has_rbac=true, two private flow-read routes, GET /api/v1/integrations/:providerConfigKey/flows and GET /api/v1/flow/:flowName, apply webAuth but omit can({ action: 'read', resource: 'flow', scopedBy: envScope }). A same-team user with the development_full_access role can therefore request env=prod and read production integration flow metadata or named flow configuration despite being denied by guarded production routes. Both controllers use res.locals.environment from the authenticated account, so the issue bypasses the production role boundary but does not cross tenant boundaries. This issue is fixed in version 0.70.9 and managed-1.5.11-0.70.8-aae30d044d7e229807d51a3957c212f3fb689e1a"
        }
      ],
      "affected": [
        {
          "vendor": "NangoHQ",
          "product": "nango",
          "versions": [
            {
              "version": "< 0.70.9",
              "status": "affected"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "CWE-862: Missing Authorization",
              "cweId": "CWE-862",
              "type": "CWE"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://github.com/NangoHQ/nango/security/advisories/GHSA-vc5r-hj76-f35p",
          "name": "https://github.com/NangoHQ/nango/security/advisories/GHSA-vc5r-hj76-f35p",
          "tags": [
            "x_refsource_CONFIRM"
          ]
        },
        {
          "url": "https://github.com/NangoHQ/nango/pull/6603",
          "name": "https://github.com/NangoHQ/nango/pull/6603",
          "tags": [
            "x_refsource_MISC"
          ]
        },
        {
          "url": "https://github.com/NangoHQ/nango/commit/3896f6abf71408b8966da1ea4afb1885647403c9",
          "name": "https://github.com/NangoHQ/nango/commit/3896f6abf71408b8966da1ea4afb1885647403c9",
          "tags": [
            "x_refsource_MISC"
          ]
        },
        {
          "url": "https://github.com/NangoHQ/nango/releases/tag/managed-1.5.11-0.70.8-aae30d044d7e229807d51a3957c212f3fb689e1a",
          "name": "https://github.com/NangoHQ/nango/releases/tag/managed-1.5.11-0.70.8-aae30d044d7e229807d51a3957c212f3fb689e1a",
          "tags": [
            "x_refsource_MISC"
          ]
        },
        {
          "url": "https://github.com/NangoHQ/nango/releases/tag/v0.70.9",
          "name": "https://github.com/NangoHQ/nango/releases/tag/v0.70.9",
          "tags": [
            "x_refsource_MISC"
          ]
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "version": "3.1",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N",
            "attackVector": "NETWORK",
            "attackComplexity": "LOW",
            "privilegesRequired": "LOW",
            "userInteraction": "NONE",
            "scope": "UNCHANGED",
            "confidentialityImpact": "LOW",
            "integrityImpact": "NONE",
            "availabilityImpact": "NONE",
            "baseScore": 4.3,
            "baseSeverity": "MEDIUM"
          }
        }
      ]
    }
  }
}