<?xml version="1.0" encoding="UTF-8"?>
<cvrfdoc xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cpe="http://cpe.mitre.org/language/2.0" xmlns:cvrf="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/cvrf" xmlns:cvrf-common="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/common" xmlns:cvssv2="http://scap.nist.gov/schema/cvss-v2/1.0" xmlns:cvssv3="https://www.first.org/cvss/cvss-v3.0.xsd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://purl.org/dc/elements/1.1/" xmlns:prod="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/prod" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/1.0" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:vuln="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/vuln" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/cvrf">
  <DocumentTitle xml:lang="en">CVE-2023-31047</DocumentTitle>
  <DocumentType>SUSE CVE</DocumentType>
  <DocumentPublisher Type="Vendor">
    <ContactDetails>security@suse.de</ContactDetails>
    <IssuingAuthority>SUSE Security Team</IssuingAuthority>
  </DocumentPublisher>
  <DocumentTracking>
    <Identification>
      <ID>SUSE CVE-2023-31047</ID>
    </Identification>
    <Status>Interim</Status>
    <Version>1</Version>
    <RevisionHistory>
      <Revision>
        <Number>12</Number>
        <Date>2026-03-05T03:43:16Z</Date>
        <Description>current</Description>
      </Revision>
    </RevisionHistory>
    <InitialReleaseDate>2023-05-19T23:16:05Z</InitialReleaseDate>
    <CurrentReleaseDate>2026-03-05T03:43:16Z</CurrentReleaseDate>
    <Generator>
      <Engine>cve-database/bin/generate-cvrf-cve.pl</Engine>
      <Date>2020-12-27T01:00:00Z</Date>
    </Generator>
  </DocumentTracking>
  <DocumentNotes>
    <Note Title="CVE" Type="Summary" Ordinal="1" xml:lang="en">CVE-2023-31047</Note>
    <Note Title="Mitre CVE Description" Type="Description" Ordinal="2" xml:lang="en">In Django 3.2 before 3.2.19, 4.x before 4.1.9, and 4.2 before 4.2.1, it was possible to bypass validation when using one form field to upload multiple files. This multiple upload has never been supported by forms.FileField or forms.ImageField (only the last uploaded file was validated). However, Django's "Uploading multiple files" documentation suggested otherwise.</Note>
    <Note Title="Terms of Use" Type="Legal Disclaimer" Ordinal="4" xml:lang="en">The CVRF data is provided by SUSE under the Creative Commons License 4.0 with Attribution (CC-BY-4.0).</Note>
  </DocumentNotes>
  <DocumentReferences>
    <Reference Type="Self">
      <URL>https://lists.suse.com/pipermail/sle-security-updates/2023-July/015497.html</URL>
      <Description>E-Mail link for SUSE-SU-2023:2839-1</Description>
    </Reference>
    <Reference Type="Self">
      <URL>https://www.suse.com/support/security/rating/</URL>
      <Description>SUSE Security Ratings</Description>
    </Reference>
  </DocumentReferences>
  <ProductTree xmlns="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/prod">
    <Branch Type="Product Family" Name="HPE Helion OpenStack 8">
      <Branch Type="Product Name" Name="HPE Helion OpenStack 8">
        <FullProductName ProductID="HPE Helion OpenStack 8" CPE="cpe:/o:suse:hpe-helion-openstack:8">HPE Helion OpenStack 8</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="Image SLE-Micro">
      <Branch Type="Product Name" Name="Image SLE-Micro">
        <FullProductName ProductID="Image SLE-Micro">Image SLE-Micro</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="Image SLE-Micro-BYOS">
      <Branch Type="Product Name" Name="Image SLE-Micro-BYOS">
        <FullProductName ProductID="Image SLE-Micro-BYOS">Image SLE-Micro-BYOS</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="Image SLE-Micro-BYOS-EC2">
      <Branch Type="Product Name" Name="Image SLE-Micro-BYOS-EC2">
        <FullProductName ProductID="Image SLE-Micro-BYOS-EC2">Image SLE-Micro-BYOS-EC2</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="Image SLE-Micro-EC2">
      <Branch Type="Product Name" Name="Image SLE-Micro-EC2">
        <FullProductName ProductID="Image SLE-Micro-EC2">Image SLE-Micro-EC2</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="SUSE OpenStack Cloud 8">
      <Branch Type="Product Name" Name="SUSE OpenStack Cloud 8">
        <FullProductName ProductID="SUSE OpenStack Cloud 8" CPE="cpe:/o:suse:suse-openstack-cloud:8">SUSE OpenStack Cloud 8</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="SUSE OpenStack Cloud 9">
      <Branch Type="Product Name" Name="SUSE OpenStack Cloud 9">
        <FullProductName ProductID="SUSE OpenStack Cloud 9" CPE="cpe:/o:suse:suse-openstack-cloud:9">SUSE OpenStack Cloud 9</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="SUSE OpenStack Cloud Crowbar 8">
      <Branch Type="Product Name" Name="SUSE OpenStack Cloud Crowbar 8">
        <FullProductName ProductID="SUSE OpenStack Cloud Crowbar 8" CPE="cpe:/o:suse:suse-openstack-cloud-crowbar:8">SUSE OpenStack Cloud Crowbar 8</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="SUSE OpenStack Cloud Crowbar 9">
      <Branch Type="Product Name" Name="SUSE OpenStack Cloud Crowbar 9">
        <FullProductName ProductID="SUSE OpenStack Cloud Crowbar 9" CPE="cpe:/o:suse:suse-openstack-cloud-crowbar:9">SUSE OpenStack Cloud Crowbar 9</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="openSUSE Leap 15.5">
      <Branch Type="Product Name" Name="openSUSE Leap 15.5">
        <FullProductName ProductID="openSUSE Leap 15.5" CPE="cpe:/o:opensuse:leap:15.5">openSUSE Leap 15.5</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Family" Name="openSUSE Tumbleweed">
      <Branch Type="Product Name" Name="openSUSE Tumbleweed">
        <FullProductName ProductID="openSUSE Tumbleweed" CPE="cpe:/o:opensuse:tumbleweed">openSUSE Tumbleweed</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Version" Name="python-Django">
      <FullProductName ProductID="python-Django" CPE="cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*">python-Django</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python-Django1">
      <FullProductName ProductID="python-Django1" CPE="cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*">python-Django1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python3-Django-2.0.7-150000.1.11.1">
      <FullProductName ProductID="python3-Django-2.0.7-150000.1.11.1">python3-Django-2.0.7-150000.1.11.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python310-Django-4.2.1-1.1">
      <FullProductName ProductID="python310-Django-4.2.1-1.1" CPE="cpe:2.3:a:djangoproject:django:4.2.1:*:*:*:*:*:*:*">python310-Django-4.2.1-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python310-Django4-4.2.14-1.1">
      <FullProductName ProductID="python310-Django4-4.2.14-1.1">python310-Django4-4.2.14-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python311-Django-4.2.1-1.1">
      <FullProductName ProductID="python311-Django-4.2.1-1.1" CPE="cpe:2.3:a:djangoproject:django:4.2.1:*:*:*:*:*:*:*">python311-Django-4.2.1-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python311-Django4-4.2.14-1.1">
      <FullProductName ProductID="python311-Django4-4.2.14-1.1" CPE="cpe:2.3:a:djangoproject:django:4.2.14:*:*:*:*:*:*:*">python311-Django4-4.2.14-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python312-Django4-4.2.14-1.1">
      <FullProductName ProductID="python312-Django4-4.2.14-1.1" CPE="cpe:2.3:a:djangoproject:django:4.2.14:*:*:*:*:*:*:*">python312-Django4-4.2.14-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python312-Django6-6.0-1.1">
      <FullProductName ProductID="python312-Django6-6.0-1.1">python312-Django6-6.0-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python313-Django6-6.0-1.1">
      <FullProductName ProductID="python313-Django6-6.0-1.1">python313-Django6-6.0-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="python39-Django-4.2.1-1.1">
      <FullProductName ProductID="python39-Django-4.2.1-1.1" CPE="cpe:2.3:a:djangoproject:django:4.2.1:*:*:*:*:*:*:*">python39-Django-4.2.1-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1">
      <FullProductName ProductID="regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1">regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1</FullProductName>
    </Branch>
    <Relationship ProductReference="regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1" RelationType="Default Component Of" RelatesToProductReference="Image SLE-Micro">
      <FullProductName ProductID="Image SLE-Micro:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1">regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1 as a component of Image SLE-Micro</FullProductName>
    </Relationship>
    <Relationship ProductReference="regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1" RelationType="Default Component Of" RelatesToProductReference="Image SLE-Micro-BYOS">
      <FullProductName ProductID="Image SLE-Micro-BYOS:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1">regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1 as a component of Image SLE-Micro-BYOS</FullProductName>
    </Relationship>
    <Relationship ProductReference="regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1" RelationType="Default Component Of" RelatesToProductReference="Image SLE-Micro-BYOS-EC2">
      <FullProductName ProductID="Image SLE-Micro-BYOS-EC2:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1">regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1 as a component of Image SLE-Micro-BYOS-EC2</FullProductName>
    </Relationship>
    <Relationship ProductReference="regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1" RelationType="Default Component Of" RelatesToProductReference="Image SLE-Micro-EC2">
      <FullProductName ProductID="Image SLE-Micro-EC2:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1">regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1 as a component of Image SLE-Micro-EC2</FullProductName>
    </Relationship>
    <Relationship ProductReference="python3-Django-2.0.7-150000.1.11.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Leap 15.5">
      <FullProductName ProductID="openSUSE Leap 15.5:python3-Django-2.0.7-150000.1.11.1">python3-Django-2.0.7-150000.1.11.1 as a component of openSUSE Leap 15.5</FullProductName>
    </Relationship>
    <Relationship ProductReference="python310-Django-4.2.1-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python310-Django-4.2.1-1.1">python310-Django-4.2.1-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python310-Django4-4.2.14-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python310-Django4-4.2.14-1.1">python310-Django4-4.2.14-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python311-Django-4.2.1-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python311-Django-4.2.1-1.1">python311-Django-4.2.1-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python311-Django4-4.2.14-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python311-Django4-4.2.14-1.1">python311-Django4-4.2.14-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python312-Django4-4.2.14-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python312-Django4-4.2.14-1.1">python312-Django4-4.2.14-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python312-Django6-6.0-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python312-Django6-6.0-1.1">python312-Django6-6.0-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python313-Django6-6.0-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python313-Django6-6.0-1.1">python313-Django6-6.0-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python39-Django-4.2.1-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:python39-Django-4.2.1-1.1">python39-Django-4.2.1-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="python-Django" RelationType="Default Component Of" RelatesToProductReference="HPE Helion OpenStack 8">
      <FullProductName ProductID="HPE Helion OpenStack 8:python-Django">python-Django as a component of HPE Helion OpenStack 8</FullProductName>
    </Relationship>
    <Relationship ProductReference="python-Django" RelationType="Default Component Of" RelatesToProductReference="SUSE OpenStack Cloud 8">
      <FullProductName ProductID="SUSE OpenStack Cloud 8:python-Django">python-Django as a component of SUSE OpenStack Cloud 8</FullProductName>
    </Relationship>
    <Relationship ProductReference="python-Django1" RelationType="Default Component Of" RelatesToProductReference="SUSE OpenStack Cloud 9">
      <FullProductName ProductID="SUSE OpenStack Cloud 9:python-Django1">python-Django1 as a component of SUSE OpenStack Cloud 9</FullProductName>
    </Relationship>
    <Relationship ProductReference="python-Django" RelationType="Default Component Of" RelatesToProductReference="SUSE OpenStack Cloud Crowbar 8">
      <FullProductName ProductID="SUSE OpenStack Cloud Crowbar 8:python-Django">python-Django as a component of SUSE OpenStack Cloud Crowbar 8</FullProductName>
    </Relationship>
    <Relationship ProductReference="python-Django1" RelationType="Default Component Of" RelatesToProductReference="SUSE OpenStack Cloud Crowbar 9">
      <FullProductName ProductID="SUSE OpenStack Cloud Crowbar 9:python-Django1">python-Django1 as a component of SUSE OpenStack Cloud Crowbar 9</FullProductName>
    </Relationship>
  </ProductTree>
  <Vulnerability xmlns="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/vuln" Ordinal="1">
    <Notes>
      <Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">In Django 3.2 before 3.2.19, 4.x before 4.1.9, and 4.2 before 4.2.1, it was possible to bypass validation when using one form field to upload multiple files. This multiple upload has never been supported by forms.FileField or forms.ImageField (only the last uploaded file was validated). However, Django's "Uploading multiple files" documentation suggested otherwise.</Note>
    </Notes>
    <CVE>CVE-2023-31047</CVE>
    <ProductStatuses>
      <Status Type="Fixed">
        <ProductID>Image SLE-Micro:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1</ProductID>
        <ProductID>Image SLE-Micro-BYOS:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1</ProductID>
        <ProductID>Image SLE-Micro-BYOS-EC2:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1</ProductID>
        <ProductID>Image SLE-Micro-EC2:regionServiceClientConfigEC2-5.0.0-slfo.1.1_1.1</ProductID>
        <ProductID>SUSE Linux Enterprise Module for Open Buildservice Development Tools 15 SP6:python3-Django-2.0.7-150000.1.11.1</ProductID>
        <ProductID>SUSE Linux Enterprise Module for Open Buildservice Development Tools 15 SP7:python3-Django-2.0.7-150000.1.11.1</ProductID>
        <ProductID>openSUSE Leap 15.5:python3-Django-2.0.7-150000.1.11.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python310-Django-4.2.1-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python310-Django4-4.2.14-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python311-Django-4.2.1-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python311-Django4-4.2.14-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python312-Django4-4.2.14-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python312-Django6-6.0-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python313-Django6-6.0-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:python39-Django-4.2.1-1.1</ProductID>
      </Status>
      <Status Type="Will Not Fix">
        <ProductID>HPE Helion OpenStack 8:python-Django</ProductID>
        <ProductID>SUSE OpenStack Cloud 8:python-Django</ProductID>
        <ProductID>SUSE OpenStack Cloud 9:python-Django1</ProductID>
        <ProductID>SUSE OpenStack Cloud Crowbar 8:python-Django</ProductID>
        <ProductID>SUSE OpenStack Cloud Crowbar 9:python-Django1</ProductID>
      </Status>
    </ProductStatuses>
    <Threats>
      <Threat Type="Impact">
        <Description>moderate</Description>
      </Threat>
    </Threats>
    <CVSSScoreSets>
      <ScoreSetV3>
        <BaseScoreV3>5.6</BaseScoreV3>
        <VectorV3>CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L</VectorV3>
      </ScoreSetV3>
    </CVSSScoreSets>
  </Vulnerability>
</cvrfdoc>
