CVE-2026-27953 (GCVE-0-2026-27953)

Vulnerability from cvelistv5 – Published: 2026-03-19 20:23 – Updated: 2026-03-20 18:10
VLAI?
Title
ormar has a Pydantic Validation Bypass via Kwargs Injection in Model Constructor
Summary
ormar is a async mini ORM for Python. Versions 0.23.0 and below are vulnerable to Pydantic validation bypass through the model constructor, allowing any unauthenticated user to skip all field validation by injecting "__pk_only__": true into a JSON request body. By injecting "__pk_only__": true into a JSON request body, an unauthenticated attacker can skip all field validation and persist unvalidated data directly to the database. A secondary __excluded__ parameter injection uses the same pattern to selectively nullify arbitrary model fields (e.g., email or role) during construction. This affects ormar's canonical FastAPI integration pattern recommended in its official documentation, enabling privilege escalation, data integrity violations, and business logic bypass in any application using ormar.Model directly as a request body parameter. This issue has been fixed in version 0.23.1.
CWE
  • CWE-915 - Improperly Controlled Modification of Dynamically-Determined Object Attributes
  • CWE-20 - Improper Input Validation
Assigner
Impacted products
Vendor Product Version
ormar-orm ormar Affected: < 0.23.1
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-27953",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-03-20T17:04:35.323858Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-03-20T18:10:57.521Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "product": "ormar",
          "vendor": "ormar-orm",
          "versions": [
            {
              "status": "affected",
              "version": "\u003c 0.23.1"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "ormar is a async mini ORM for Python. Versions 0.23.0 and below are vulnerable to Pydantic validation bypass through the model constructor, allowing any unauthenticated user to skip all field validation by injecting \"__pk_only__\": true into a JSON request body. By injecting \"__pk_only__\": true into a JSON request body, an unauthenticated attacker can skip all field validation and persist unvalidated data directly to the database. A secondary __excluded__ parameter injection uses the same pattern to selectively nullify arbitrary model fields (e.g., email or role) during construction. This affects ormar\u0027s canonical FastAPI integration pattern recommended in its official documentation, enabling privilege escalation, data integrity violations, and business logic bypass in any application using ormar.Model directly as a request body parameter. This issue has been fixed in version 0.23.1."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "attackComplexity": "LOW",
            "attackVector": "NETWORK",
            "availabilityImpact": "LOW",
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "confidentialityImpact": "NONE",
            "integrityImpact": "HIGH",
            "privilegesRequired": "LOW",
            "scope": "UNCHANGED",
            "userInteraction": "NONE",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L",
            "version": "3.1"
          }
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-915",
              "description": "CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes",
              "lang": "en",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "cweId": "CWE-20",
              "description": "CWE-20: Improper Input Validation",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-03-19T20:23:06.379Z",
        "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
        "shortName": "GitHub_M"
      },
      "references": [
        {
          "name": "https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8",
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/commit/7f22aa21a7614b993970345b392dabb0ccde0ab3",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/commit/7f22aa21a7614b993970345b392dabb0ccde0ab3"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/blob/master/examples/fastapi_quick_start.py#L55",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/blob/master/examples/fastapi_quick_start.py#L55"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/blob/master/ormar/fields/foreign_key.py#L41",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/blob/master/ormar/fields/foreign_key.py#L41"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/helpers/pydantic.py#L108",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/helpers/pydantic.py#L108"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/model.py#L89",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/model.py#L89"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L128",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L128"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L292",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L292"
        },
        {
          "name": "https://github.com/ormar-orm/ormar/releases/tag/0.23.1",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/ormar-orm/ormar/releases/tag/0.23.1"
        }
      ],
      "source": {
        "advisory": "GHSA-f964-whrq-44h8",
        "discovery": "UNKNOWN"
      },
      "title": "ormar has a Pydantic Validation Bypass via Kwargs Injection in Model Constructor"
    }
  },
  "cveMetadata": {
    "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
    "assignerShortName": "GitHub_M",
    "cveId": "CVE-2026-27953",
    "datePublished": "2026-03-19T20:23:06.379Z",
    "dateReserved": "2026-02-25T03:11:36.691Z",
    "dateUpdated": "2026-03-20T18:10:57.521Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-27953\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2026-03-19T21:17:09.573\",\"lastModified\":\"2026-03-27T21:48:05.810\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"ormar is a async mini ORM for Python. Versions 0.23.0 and below are vulnerable to Pydantic validation bypass through the model constructor, allowing any unauthenticated user to skip all field validation by injecting \\\"__pk_only__\\\": true into a JSON request body. By injecting \\\"__pk_only__\\\": true into a JSON request body, an unauthenticated attacker can skip all field validation and persist unvalidated data directly to the database. A secondary __excluded__ parameter injection uses the same pattern to selectively nullify arbitrary model fields (e.g., email or role) during construction. This affects ormar\u0027s canonical FastAPI integration pattern recommended in its official documentation, enabling privilege escalation, data integrity violations, and business logic bypass in any application using ormar.Model directly as a request body parameter. This issue has been fixed in version 0.23.1.\"},{\"lang\":\"es\",\"value\":\"ormar es un mini ORM as\u00edncrono para Python. Las versiones 0.23.0 e inferiores son vulnerables a un bypass de validaci\u00f3n de Pydantic a trav\u00e9s del constructor del modelo, permitiendo a cualquier usuario no autenticado omitir toda la validaci\u00f3n de campos inyectando \u0027__pk_only__\u0027: true en un cuerpo de solicitud JSON. Al inyectar \u0027__pk_only__\u0027: true en un cuerpo de solicitud JSON, un atacante no autenticado puede omitir toda la validaci\u00f3n de campos y persistir datos no validados directamente en la base de datos. Una inyecci\u00f3n de par\u00e1metro secundaria __excluded__ utiliza el mismo patr\u00f3n para anular selectivamente campos de modelo arbitrarios (p. ej., correo electr\u00f3nico o rol) durante la construcci\u00f3n. Esto afecta el patr\u00f3n can\u00f3nico de integraci\u00f3n de FastAPI de ormar recomendado en su documentaci\u00f3n oficial, permitiendo la escalada de privilegios, violaciones de integridad de datos y bypass de l\u00f3gica de negocio en cualquier aplicaci\u00f3n que utilice ormar.Model directamente como par\u00e1metro del cuerpo de la solicitud. Este problema ha sido solucionado en la versi\u00f3n 0.23.1.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L\",\"baseScore\":7.1,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"LOW\"},\"exploitabilityScore\":2.8,\"impactScore\":4.2},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":9.8,\"baseSeverity\":\"CRITICAL\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":5.9}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-20\"},{\"lang\":\"en\",\"value\":\"CWE-915\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:collerek:ormar:*:*:*:*:*:python:*:*\",\"versionEndExcluding\":\"0.23.1\",\"matchCriteriaId\":\"28060AA9-6E58-42EE-9043-CC3998D6B0ED\"}]}]}],\"references\":[{\"url\":\"https://github.com/ormar-orm/ormar/blob/master/examples/fastapi_quick_start.py#L55\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/blob/master/ormar/fields/foreign_key.py#L41\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/blob/master/ormar/models/helpers/pydantic.py#L108\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/blob/master/ormar/models/model.py#L89\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L128\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L292\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/commit/7f22aa21a7614b993970345b392dabb0ccde0ab3\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/ormar-orm/ormar/releases/tag/0.23.1\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\",\"Release Notes\"]},{\"url\":\"https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Exploit\",\"Mitigation\",\"Vendor Advisory\"]},{\"url\":\"https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8\",\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"tags\":[\"Exploit\",\"Mitigation\",\"Vendor Advisory\"]}]}}",
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-27953\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-03-20T17:04:35.323858Z\"}}}], \"references\": [{\"url\": \"https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-03-20T17:04:45.691Z\"}}], \"cna\": {\"title\": \"ormar has a Pydantic Validation Bypass via Kwargs Injection in Model Constructor\", \"source\": {\"advisory\": \"GHSA-f964-whrq-44h8\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 7.1, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"LOW\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"NONE\"}}], \"affected\": [{\"vendor\": \"ormar-orm\", \"product\": \"ormar\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003c 0.23.1\"}]}], \"references\": [{\"url\": \"https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8\", \"name\": \"https://github.com/ormar-orm/ormar/security/advisories/GHSA-f964-whrq-44h8\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/commit/7f22aa21a7614b993970345b392dabb0ccde0ab3\", \"name\": \"https://github.com/ormar-orm/ormar/commit/7f22aa21a7614b993970345b392dabb0ccde0ab3\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/blob/master/examples/fastapi_quick_start.py#L55\", \"name\": \"https://github.com/ormar-orm/ormar/blob/master/examples/fastapi_quick_start.py#L55\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/fields/foreign_key.py#L41\", \"name\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/fields/foreign_key.py#L41\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/helpers/pydantic.py#L108\", \"name\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/helpers/pydantic.py#L108\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/model.py#L89\", \"name\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/model.py#L89\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L128\", \"name\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L128\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L292\", \"name\": \"https://github.com/ormar-orm/ormar/blob/master/ormar/models/newbasemodel.py#L292\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/ormar-orm/ormar/releases/tag/0.23.1\", \"name\": \"https://github.com/ormar-orm/ormar/releases/tag/0.23.1\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"ormar is a async mini ORM for Python. Versions 0.23.0 and below are vulnerable to Pydantic validation bypass through the model constructor, allowing any unauthenticated user to skip all field validation by injecting \\\"__pk_only__\\\": true into a JSON request body. By injecting \\\"__pk_only__\\\": true into a JSON request body, an unauthenticated attacker can skip all field validation and persist unvalidated data directly to the database. A secondary __excluded__ parameter injection uses the same pattern to selectively nullify arbitrary model fields (e.g., email or role) during construction. This affects ormar\u0027s canonical FastAPI integration pattern recommended in its official documentation, enabling privilege escalation, data integrity violations, and business logic bypass in any application using ormar.Model directly as a request body parameter. This issue has been fixed in version 0.23.1.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-915\", \"description\": \"CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes\"}]}, {\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-20\", \"description\": \"CWE-20: Improper Input Validation\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2026-03-19T20:23:06.379Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-27953\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-03-20T18:10:57.521Z\", \"dateReserved\": \"2026-02-25T03:11:36.691Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2026-03-19T20:23:06.379Z\", \"assignerShortName\": \"GitHub_M\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.


Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…