← Back to CVE Explorer

CVE-2026-12726

Full vulnerability record from the local CVENow database.

Description

A flaw was found in the AWX GitHub webhook integration. When processing GitHub pull_request webhooks, the controller stores the pull_request.statuses_url value from the webhook payload without validating that it points to a trusted GitHub API endpoint. If a job template is configured with a GitHub Personal Access Token as its webhook credential, the controller later POSTs that token to the stored callback URL when posting job status updates. An attacker who can submit a correctly signed forged webhook using the job template's webhook_key can redirect the callback to an attacker-controlled URL and exfiltrate the configured GitHub PAT.

Severity
MEDIUM
CVSS score
6.3 (v3.1)
Vulnerability status
Awaiting Analysis
Source identifier
Published
2026-06-19 19:16:27.217000
Last modified
2026-10-25 23:10:00.167000
View original CVE JSON
{
  "id": "CVE-2026-12726",
  "sourceIdentifier": "[email protected]",
  "published": "2026-06-19T19:16:27.217",
  "lastModified": "2026-10-25T23:10:00.167",
  "vulnStatus": "Awaiting Analysis",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "A flaw was found in the AWX GitHub webhook integration. When processing GitHub pull_request webhooks, the controller stores the pull_request.statuses_url value from the webhook payload without validating that it points to a trusted GitHub API endpoint. If a job template is configured with a GitHub Personal Access Token as its webhook credential, the controller later POSTs that token to the stored callback URL when posting job status updates. An attacker who can submit a correctly signed forged webhook using the job template's webhook_key can redirect the callback to an attacker-controlled URL and exfiltrate the configured GitHub PAT."
    },
    {
      "lang": "es",
      "value": "Se encontró una vulnerabilidad en la integración de webhook de GitHub de AWX. Al procesar webhooks de “pull_request” de GitHub, el controlador almacena el valor “pull_request.statuses_url” del payload del webhook sin validar que apunte a un endpoint de la API de GitHub de confianza. Si una plantilla de trabajo está configurada con un Token de Acceso Personal de GitHub como su credencial de webhook, el controlador posteriormente envía ese token mediante POST a la URL de callback almacenada al publicar actualizaciones de estado del trabajo. Un atacante que puede enviar un webhook falsificado correctamente firmado utilizando la “webhook_key” de la plantilla de trabajo puede redirigir el callback a una URL controlada por el atacante y exfiltrar el PAT de GitHub configurado."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "Red Hat",
          "product": "Red Hat Ansible Automation Platform 2",
          "defaultStatus": "affected",
          "collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
          "packageName": "ansible-automation-platform-26/controller-rhel9",
          "cpes": [
            "cpe:/a:redhat:ansible_automation_platform:2"
          ]
        },
        {
          "vendor": "Red Hat",
          "product": "Red Hat Ansible Automation Platform 2",
          "defaultStatus": "affected",
          "collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
          "packageName": "ansible-automation-platform-27/controller-rhel9",
          "cpes": [
            "cpe:/a:redhat:ansible_automation_platform:2"
          ]
        },
        {
          "vendor": "Red Hat",
          "product": "Red Hat Ansible Automation Platform 2",
          "defaultStatus": "affected",
          "collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
          "packageName": "automation-controller",
          "cpes": [
            "cpe:/a:redhat:ansible_automation_platform:2"
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N",
          "baseScore": 6.3,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "CHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 1.8,
        "impactScore": 4.0
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-06-22T17:08:33.221112Z",
          "id": "CVE-2026-12726",
          "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-918"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://access.redhat.com/security/cve/CVE-2026-12726",
      "source": "[email protected]"
    },
    {
      "url": "https://bugzilla.redhat.com/show_bug.cgi?id=2490796",
      "source": "[email protected]"
    }
  ]
}