<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 12 Oct 2026 14:44:36 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-342358</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-342358</link>
      <description>EUVD-2026-342358</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-342358</guid>
    </item>
    <item>
      <title>fkie_cve-2026-54656</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-54656</link>
      <description>&lt;p&gt;datamodel-code-generator generates Pydantic v2 models, dataclasses, TypedDict, and msgspec.Struct from OpenAPI, JSON Schema, GraphQL, Avro, Protobuf, and raw JSON, YAML, or CSV. From 0.52.1 until 0.60.2, datamodel-code-generator interpolates validators from --extra-template-data in src/datamodel_code_generator/model/pydantic_v2/base_model.py through _process_validators into @field_validator decorators without safe validation, allowing Python code execution when the generated Pydantic v2 model is imported. This issue is fixed in version 0.60.2.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;datamodel-code-generator generates Pydantic v2 models, dataclasses, TypedDict, and msgspec.Struct from OpenAPI, JSON Schema, GraphQL, Avro, Protobuf, and raw JSON, YAML, or CSV. From 0.52.1 until 0.60.2, datamodel-code-generator interpolates validators from --extra-template-data in src/datamodel_code_generator/model/pydantic_v2/base_model.py through _process_validators into @field_validator decorators without safe validation, allowing Python code execution when the generated Pydantic v2 model is imported. This issue is fixed in version 0.60.2.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-54656</guid>
    </item>
    <item>
      <title>GHSA-8m8r-38jm-f355 — `datamodel-code-generator` vulnerable to code execution on import via unescaped `validators` entries in --extra-templat…</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-8m8r-38jm-f355</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: datamodel-code-generator&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;When the Pydantic v2 output mode is in use, `datamodel-code-generator` reads a `validators` array from each model entry in the `--extra-template-data` file and synthesises a Pydantic `@field_validator(...)` decorator from each entry. The field names and the validator mode are interpolated into the decorator call wrapped in *unescaped* single quotes. A value containing `&amp;#39;` breaks out of the string literal, letting an attacker emit an arbitrary positional Python expression into the decorator. The expression is evaluated at class-definition time, i.e. the moment the developer imports the generated module. This is the same trust model as the recently-published GHSA-wjv6-jcfj-mf9r (extras-file comment injection) but the impact is full RCE rather than a docstring leak.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Sink: `src/datamodel_code_generator/model/pydantic_v2/base_model.py`, `_process_validators` (lines 405–449, at tag `0.60.1` / commit `a321547e`):&lt;/p&gt;
&lt;p&gt;```python
def _process_validators(self) -&amp;gt; None:
    validators = self.extra_template_data.get(&amp;#34;validators&amp;#34;)
    if not validators:
        return
    ...
    for validator in validators:
        fields = validator.get(&amp;#34;fields&amp;#34;) or [validator.get(&amp;#34;field&amp;#34;)]
        fields = [f for f in fields if f]
        if not fields:
            continue
        function_path: str = validator[&amp;#34;function&amp;#34;]
        function_name = function_path.rsplit(&amp;#34;.&amp;#34;, 1)[-1]
        mode = validator.get(&amp;#34;mode&amp;#34;, &amp;#34;after&amp;#34;)
        fields_str = &amp;#34;, &amp;#34;.join(f&amp;#34;&amp;#39;{f}&amp;#39;&amp;#34; for f in field…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: datamodel-code-generator&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;When the Pydantic v2 output mode is in use, `datamodel-code-generator` reads a `validators` array from each model entry in the `--extra-template-data` file and synthesises a Pydantic `@field_validator(...)` decorator from each entry. The field names and the validator mode are interpolated into the decorator call wrapped in *unescaped* single quotes. A value containing `&amp;#39;` breaks out of the string literal, letting an attacker emit an arbitrary positional Python expression into the decorator. The expression is evaluated at class-definition time, i.e. the moment the developer imports the generated module. This is the same trust model as the recently-published GHSA-wjv6-jcfj-mf9r (extras-file comment injection) but the impact is full RCE rather than a docstring leak.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Sink: `src/datamodel_code_generator/model/pydantic_v2/base_model.py`, `_process_validators` (lines 405–449, at tag `0.60.1` / commit `a321547e`):&lt;/p&gt;
&lt;p&gt;```python
def _process_validators(self) -&amp;gt; None:
    validators = self.extra_template_data.get(&amp;#34;validators&amp;#34;)
    if not validators:
        return
    ...
    for validator in validators:
        fields = validator.get(&amp;#34;fields&amp;#34;) or [validator.get(&amp;#34;field&amp;#34;)]
        fields = [f for f in fields if f]
        if not fields:
            continue
        function_path: str = validator[&amp;#34;function&amp;#34;]
        function_name = function_path.rsplit(&amp;#34;.&amp;#34;, 1)[-1]
        mode = validator.get(&amp;#34;mode&amp;#34;, &amp;#34;after&amp;#34;)
        fields_str = &amp;#34;, &amp;#34;.join(f&amp;#34;&amp;#39;{f}&amp;#39;&amp;#34; for f in field…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-8m8r-38jm-f355</guid>
    </item>
    <item>
      <title>PYSEC-2026-3559 — `datamodel-code-generator` vulnerable to code execution on import via unescaped `validators` entries in --extra-templat…</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-3559</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: datamodel-code-generator&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;When the Pydantic v2 output mode is in use, `datamodel-code-generator` reads a `validators` array from each model entry in the `--extra-template-data` file and synthesises a Pydantic `@field_validator(...)` decorator from each entry. The field names and the validator mode are interpolated into the decorator call wrapped in *unescaped* single quotes. A value containing `&amp;#39;` breaks out of the string literal, letting an attacker emit an arbitrary positional Python expression into the decorator. The expression is evaluated at class-definition time, i.e. the moment the developer imports the generated module. This is the same trust model as the recently-published GHSA-wjv6-jcfj-mf9r (extras-file comment injection) but the impact is full RCE rather than a docstring leak.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Sink: `src/datamodel_code_generator/model/pydantic_v2/base_model.py`, `_process_validators` (lines 405–449, at tag `0.60.1` / commit `a321547e`):&lt;/p&gt;
&lt;p&gt;```python
def _process_validators(self) -&amp;gt; None:
    validators = self.extra_template_data.get(&amp;#34;validators&amp;#34;)
    if not validators:
        return
    ...
    for validator in validators:
        fields = validator.get(&amp;#34;fields&amp;#34;) or [validator.get(&amp;#34;field&amp;#34;)]
        fields = [f for f in fields if f]
        if not fields:
            continue
        function_path: str = validator[&amp;#34;function&amp;#34;]
        function_name = function_path.rsplit(&amp;#34;.&amp;#34;, 1)[-1]
        mode = validator.get(&amp;#34;mode&amp;#34;, &amp;#34;after&amp;#34;)
        fields_str = &amp;#34;, &amp;#34;.join(f&amp;#34;&amp;#39;{f}&amp;#39;&amp;#34; for f in field…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: datamodel-code-generator&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;When the Pydantic v2 output mode is in use, `datamodel-code-generator` reads a `validators` array from each model entry in the `--extra-template-data` file and synthesises a Pydantic `@field_validator(...)` decorator from each entry. The field names and the validator mode are interpolated into the decorator call wrapped in *unescaped* single quotes. A value containing `&amp;#39;` breaks out of the string literal, letting an attacker emit an arbitrary positional Python expression into the decorator. The expression is evaluated at class-definition time, i.e. the moment the developer imports the generated module. This is the same trust model as the recently-published GHSA-wjv6-jcfj-mf9r (extras-file comment injection) but the impact is full RCE rather than a docstring leak.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Sink: `src/datamodel_code_generator/model/pydantic_v2/base_model.py`, `_process_validators` (lines 405–449, at tag `0.60.1` / commit `a321547e`):&lt;/p&gt;
&lt;p&gt;```python
def _process_validators(self) -&amp;gt; None:
    validators = self.extra_template_data.get(&amp;#34;validators&amp;#34;)
    if not validators:
        return
    ...
    for validator in validators:
        fields = validator.get(&amp;#34;fields&amp;#34;) or [validator.get(&amp;#34;field&amp;#34;)]
        fields = [f for f in fields if f]
        if not fields:
            continue
        function_path: str = validator[&amp;#34;function&amp;#34;]
        function_name = function_path.rsplit(&amp;#34;.&amp;#34;, 1)[-1]
        mode = validator.get(&amp;#34;mode&amp;#34;, &amp;#34;after&amp;#34;)
        fields_str = &amp;#34;, &amp;#34;.join(f&amp;#34;&amp;#39;{f}&amp;#39;&amp;#34; for f in field…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-3559</guid>
    </item>
  </channel>
</rss>
