PYDANTIC · GHSA-qpmf-fgh3-ff25 · Package
FIX → 2.14.2
When Pydantic validates JSON into a model with extra='allow', it stores extra keys without checking them against the key type declared on __pydantic_extra__. Extra data can therefore hold keys that do not match the declared type, bypassing validation for untrusted JSON input.
first public Oct 29, 2026 · 1 source
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
Applications that parse untrusted JSON into Pydantic models that allow extra fields (extra='allow') and declare a constrained key type on pydantic_extra. Python-mode validation is not affected, and projects without those model settings can skip this.
Not affected if extra-forbid-or-ignore, no-constrained-extra-keys, python-mode-validation
Who cares backend, pydantic, python
pip show pydantic and see whether it falls in >= 2.13.0, < 2.14.2.extra='allow' or extra = "allow" on models that validate JSON, and for __pydantic_extra__ annotated with a constrained key type such as dict[Annotated[str, Field(pattern=...)], ...].When validating JSON data into a model allowing extra data, the keys of extra data aren't validated against the key type annotated on __pydantic_extra__, resulting in extra data not matching the declared type. This is the case if you define __pydantic_extra__ as e.g. dict[Annotated[str, Field(pattern=r'^x_')], int].
The validate_json_by_iteration() method (in pydantic-core/src/validators/model_fields.rs), used to validate JSON data into models, only validates the values of extra data, and stores the keys as is (L605-L623):
ExtraBehavior::Allow => {
// the key is stored as is, without being validated:
let py_key: Bound<'_, PyString> = new_py_string(py, key, state.());
(validator) = &.extras_validator {
validator.(py, value, state) {
(value) => {
model_extra_dict.(&py_key, value)?;
fields_set.(py_key)?;
}
}
}
}
Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
Upgrade to 2.14.2
2.14.2Python mode validation isn't affected.
The issue was fixed in commit https://github.com/pydantic/pydantic/commit/4c65dbda9970a488e2ff21c8693fc6f6d70a3358.
Validation bypass: extra data returned by validation doesn't match the declared type. Affected are applications validating untrusted JSON data into models allowing extra data (with extra='allow'), with a key type annotated on __pydantic_extra__ (e.g. dict[Annotated[str, Field(pattern=...)], int]), using Pydantic from 2.13.0 up to (but excluding) 2.14.2.
Python mode validation isn't affected.