← Back to CVE Explorer

CVE-2026-103620

Full vulnerability record from the local CVENow database.

Description

A missing authorization vulnerability was identified in GitHub Enterprise Server that allowed a repository collaborator with write access to delete the current default branch through the GraphQL API and cause an attacker-controlled branch to become the new default. In repositories that required pull-request review but did not restrict branch deletion, this bypassed the review requirement and caused fresh clones and default-branch API requests to use attacker-controlled content. This vulnerability affected supported GitHub Enterprise Server releases in the 3.18, 3.19, 3.20, 3.21, and 3.22 series and was fixed in versions 3.18.16, 3.19.13, 3.20.9, 3.21.7, and 3.22.2. This vulnerability was reported via the GitHub Bug Bounty program.

Severity
MEDIUM
CVSS score
6.0 (v4.0)
Vulnerability status
Analyzed
Source identifier
Published
2026-10-06 19:17:39.700000
Last modified
2026-10-20 19:33:53.047000
View original CVE JSON
{
  "id": "CVE-2026-103620",
  "sourceIdentifier": "[email protected]",
  "published": "2026-10-06T19:17:39.700",
  "lastModified": "2026-10-20T19:33:53.047",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "A missing authorization vulnerability was identified in GitHub Enterprise Server that allowed a repository collaborator with write access to delete the current default branch through the GraphQL API and cause an attacker-controlled branch to become the new default. In repositories that required pull-request review but did not restrict branch deletion, this bypassed the review requirement and caused fresh clones and default-branch API requests to use attacker-controlled content. This vulnerability affected supported GitHub Enterprise Server releases in the 3.18, 3.19, 3.20, 3.21, and 3.22 series and was fixed in versions 3.18.16, 3.19.13, 3.20.9, 3.21.7, and 3.22.2. This vulnerability was reported via the GitHub Bug Bounty program."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "GitHub",
          "product": "Enterprise Server",
          "defaultStatus": "unknown",
          "versions": [
            {
              "version": "3.18.0",
              "lessThan": "3.18.*",
              "versionType": "semver",
              "status": "affected",
              "changes": [
                {
                  "at": "3.18.16",
                  "status": "unaffected"
                }
              ]
            },
            {
              "version": "3.19.0",
              "lessThan": "3.19.*",
              "versionType": "semver",
              "status": "affected",
              "changes": [
                {
                  "at": "3.19.13",
                  "status": "unaffected"
                }
              ]
            },
            {
              "version": "3.20.0",
              "lessThan": "3.20.*",
              "versionType": "semver",
              "status": "affected",
              "changes": [
                {
                  "at": "3.20.9",
                  "status": "unaffected"
                }
              ]
            },
            {
              "version": "3.21.0",
              "lessThan": "3.21.*",
              "versionType": "semver",
              "status": "affected",
              "changes": [
                {
                  "at": "3.21.7",
                  "status": "unaffected"
                }
              ]
            },
            {
              "version": "3.22.0",
              "lessThan": "3.22.*",
              "versionType": "semver",
              "status": "affected",
              "changes": [
                {
                  "at": "3.22.2",
                  "status": "unaffected"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
          "baseScore": 6.0,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "PRESENT",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "vulnConfidentialityImpact": "NONE",
          "vulnIntegrityImpact": "HIGH",
          "vulnAvailabilityImpact": "NONE",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "NOT_DEFINED",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "valueDensity": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Primary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N",
          "baseScore": 6.5,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "NONE",
          "integrityImpact": "HIGH",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 3.6
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-10-07T16:31:48.617666Z",
          "id": "CVE-2026-103620",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-862"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "3.18.0",
              "versionEndExcluding": "3.18.16",
              "matchCriteriaId": "7330EE31-D9D4-4A1A-A309-0BBA6B1A1F61"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "3.19.0",
              "versionEndExcluding": "3.19.13",
              "matchCriteriaId": "CB01630F-1BE9-4C86-8D39-882BBD809022"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "3.20.0",
              "versionEndExcluding": "3.20.9",
              "matchCriteriaId": "DA3ED2EC-AE56-49B8-8D85-FC1067BB77AE"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "3.21.0",
              "versionEndExcluding": "3.21.7",
              "matchCriteriaId": "FA92CD39-64B0-4772-B9F5-7D41919297E9"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "3.22.0",
              "versionEndExcluding": "3.22.2",
              "matchCriteriaId": "54896567-4006-4260-93EA-1799EEA0C496"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.18.16",
      "source": "[email protected]",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.19.13",
      "source": "[email protected]",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.20.9",
      "source": "[email protected]",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.21.7",
      "source": "[email protected]",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.22.2",
      "source": "[email protected]",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    }
  ]
}