# CVE-2026-107377: datamodel-code-generator: Protobuf weak-import path traversal allows files to be written outside the temporary directory

> Attacker-controlled Protobuf schemas can write files outside the temporary directory, potentially overwriting existing files with syntax declarations.

- **Severity:** High 7.5 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 8 Oct 2026
- **Updated:** 14 Oct 2026
- **Also known as:** ECHO-b8c0-0024-5488, GHSA-77xj-x4rm-935c, PYSEC-2026-4205, UBUNTU-CVE-2026-107377, openSUSE-SU-2026:12096-1

## What is CVE-2026-107377?

CVE-2026-107377 is a high-severity path traversal vulnerability in datamodel-code-generator, published on 8 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

datamodel-code-generator generates Python data models from schema definitions. From 0.59.0 until 0.81.0, an attacker-controlled Protobuf schema can supply absolute or parent-directory paths captured by WEAK_IMPORT_PATTERN and consumed by _write_missing_weak_imports in src/datamodel_code_generator/parser/protobuf.py. Exploitation requires a victim or automated job to process the attacker-controlled schema with Protobuf input support, which requires the grpcio-tools package. The paths escape the weak_imports temporary directory before protoc runs, allowing creation of directory trees and new files or overwrite of existing writable files with a generated Protobuf syntax declaration. The effect persists when later Protobuf compilation fails. The written content is limited to a proto2 or proto3 syntax declaration, and direct arbitrary code execution has not been demonstrated. This issue is fixed in version 0.81.0.

Weakness: CWE-73 (External Control of File Name or Path), CWE-22 (Improper Limitation of a Pathname to a Restricted Directory)

## Which versions are affected by CVE-2026-107377?

3 open source packages ship an affected version, including datamodel-code-generator.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `datamodel-code-generator` | PyPI | From 0.59.0 | 0.81.0 |
| `datamodel-code-generator` | PyPI | From 0.59.0 | 0.81.0 |
| `datamodel-code-generator` | PyPI | From 0.59.0 | 0.81.0 |
| `python-datamodel-code-generator` | openSUSE:Tumbleweed | All versions | 0.83.0-1.1 |

## How do I fix CVE-2026-107377?

Upgrade datamodel-code-generator to 0.81.0 or later.

## Is CVE-2026-107377 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-107377 exists.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-107377 and fix it if it is affected.

What it is: CVE-2026-107377 is a high-severity path traversal vulnerability in datamodel-code-generator, published on 8 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-107377 exists.

Affected packages and fixed versions:
- datamodel-code-generator (PyPI): affected from 0.59.0; fixed in 0.81.0
- datamodel-code-generator (PyPI): affected from 0.59.0; fixed in 0.81.0
- datamodel-code-generator (PyPI): affected from 0.59.0; fixed in 0.81.0

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-107377/ (Markdown: https://insights.sbomify.com/CVE-2026-107377/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-107377
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-107377
- OSV: https://osv.dev/vulnerability/CVE-2026-107377

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-107377/
Summaries are generated and may contain mistakes; the official description above is the record.
