« Volver al listado

CVE-2026-15920

Estado: AnalizadaMedia (5.1)—

An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8. `django.contrib.admin.utils.display_for_field()` renders `URLField` values as clickable links in the admin without validating the URL. A value stored with an unsafe scheme is displayed as a link on changelist and read-only admin pages, which allows cross-site scripting against staff users who click the link.

Leer descripción completaMostrar menos

Exploitation requires the unsafe value to already be stored in the database. `URLField` validation through a `ModelForm` or the admin rejects unsafe schemes, so this affects applications that persist `URLField` data without running model validation, for example through direct queryset writes, deserialization, or bulk import of untrusted input. Django would like to thank Egor Saltykov for reporting this issue.

CVSS

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-15920",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-15920",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-08-04T17:16:24.319084Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
        "cvssData": {
          "scope": "CHANGED",
          "version": "3.1",
          "baseScore": 6.1,
          "attackVector": "NETWORK",
          "baseSeverity": "MEDIUM",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
          "integrityImpact": "LOW",
          "userInteraction": "REQUIRED",
          "attackComplexity": "LOW",
          "availabilityImpact": "NONE",
          "privilegesRequired": "NONE",
          "confidentialityImpact": "LOW"
        },
        "impactScore": 2.7,
        "exploitabilityScore": 2.8
      }
    ],
    "cvssMetricV40": [
      {
        "type": "Secondary",
        "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
        "cvssData": {
          "Safety": "NOT_DEFINED",
          "version": "4.0",
          "Recovery": "NOT_DEFINED",
          "baseScore": 5.1,
          "Automatable": "NOT_DEFINED",
          "attackVector": "NETWORK",
          "baseSeverity": "MEDIUM",
          "valueDensity": "NOT_DEFINED",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/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",
          "exploitMaturity": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED",
          "userInteraction": "ACTIVE",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "privilegesRequired": "NONE",
          "subIntegrityImpact": "LOW",
          "vulnIntegrityImpact": "NONE",
          "integrityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "subAvailabilityImpact": "NONE",
          "vulnAvailabilityImpact": "NONE",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "subConfidentialityImpact": "LOW",
          "vulnConfidentialityImpact": "NONE",
          "confidentialityRequirement": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED"
        }
      }
    ]
  },
  "affected": [
    {
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
      "affectedData": [
        {
          "repo": "https://github.com/django/django/",
          "vendor": "djangoproject",
          "product": "Django",
          "versions": [
            {
              "status": "affected",
              "version": "6.0",
              "lessThan": "6.0.8",
              "versionType": "python"
            },
            {
              "status": "unaffected",
              "version": "6.0.8",
              "versionType": "python"
            },
            {
              "status": "affected",
              "version": "5.2",
              "lessThan": "5.2.17",
              "versionType": "python"
            },
            {
              "status": "unaffected",
              "version": "5.2.17",
              "versionType": "python"
            }
          ],
          "packageName": "django",
          "collectionURL": "https://pypi.org/project/Django/",
          "defaultStatus": "unaffected"
        }
      ]
    }
  ],
  "published": "2026-08-04T17:16:46.733",
  "references": [
    {
      "url": "https://docs.djangoproject.com/en/dev/releases/security/",
      "tags": [
        "Patch",
        "Vendor Advisory"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    },
    {
      "url": "https://github.com/django/django/commit/13debb622a32720bda1bccda7622fd14fbf3931b",
      "tags": [
        "Patch"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    },
    {
      "url": "https://github.com/django/django/commit/47511a21026cdd721d8fbf8571cc079bc38bb46d",
      "tags": [
        "Patch"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    },
    {
      "url": "https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a",
      "tags": [
        "Patch"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    },
    {
      "url": "https://github.com/django/django/commit/b9adb81339cc418f8f56b1050cca6dfec3ab6349",
      "tags": [
        "Patch"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    },
    {
      "url": "https://groups.google.com/g/django-announce",
      "tags": [
        "Mailing List"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    },
    {
      "url": "https://www.djangoproject.com/weblog/2026/aug/04/security-releases/",
      "tags": [
        "Vendor Advisory"
      ],
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
    }
  ],
  "vulnStatus": "Analyzed",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
      "description": [
        {
          "lang": "en",
          "value": "CWE-83"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "An issue was discovered in Django 5.2 before 5.2.17 and 6.0 before 6.0.8.\n`django.contrib.admin.utils.display_for_field()` renders `URLField` values as clickable links in the admin without validating the URL. A value stored with an unsafe scheme is displayed as a link on changelist and read-only admin pages, which allows cross-site scripting against staff users who click the link.\r\nExploitation requires the unsafe value to already be stored in the database. `URLField` validation through a `ModelForm` or the admin rejects unsafe schemes, so this affects applications that persist `URLField` data without running model validation, for example through direct queryset writes, deserialization, or bulk import of untrusted input.\nDjango would like to thank Egor Saltykov for reporting this issue."
    }
  ],
  "lastModified": "2026-08-17T19:17:54.357",
  "configurations": [
    {
      "nodes": [
        {
          "negate": false,
          "cpeMatch": [
            {
              "criteria": "cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "E20DAA60-EC17-41F8-A6F0-C6F42F887FE6",
              "versionEndExcluding": "5.2.17",
              "versionStartIncluding": "5.2"
            },
            {
              "criteria": "cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "D2E4E199-5735-4911-92F2-73B0AA1D173E",
              "versionEndExcluding": "6.0.8",
              "versionStartIncluding": "6.0"
            }
          ],
          "operator": "OR"
        }
      ]
    }
  ],
  "sourceIdentifier": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
}