CVE-2021-47035 (GCVE-0-2021-47035)
Vulnerability from cvelistv5
Published
2024-02-28 08:13
Modified
2026-08-05 08:45
Summary
In the Linux kernel, the following vulnerability has been resolved: iommu/vt-d: Remove WO permissions on second-level paging entries When the first level page table is used for IOVA translation, it only supports Read-Only and Read-Write permissions. The Write-Only permission is not supported as the PRESENT bit (implying Read permission) should always set. When using second level, we still give separate permissions that allows WriteOnly which seems inconsistent and awkward. We want to have consistent behavior. After moving to 1st level, we don't want things to work sometimes, and break if we use 2nd level for the same mappings. Hence remove this configuration.
Impacted products
Vendor Product Version
Linux Linux Version: b802d070a52a1565b47daaa808872cfbd4a17b01
Version: b802d070a52a1565b47daaa808872cfbd4a17b01
Version: b802d070a52a1565b47daaa808872cfbd4a17b01
Version: b802d070a52a1565b47daaa808872cfbd4a17b01
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2021-47035",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-03-05T18:13:47.892266Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:14:09.941Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:24:39.557Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/c848416cc05afc1589edba04fe00b85c2f797ee3"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/89bd620798704a8805fc9db0d71d7f812cf5b3d2"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/25faff78138933244c678c7fc78f7c0340fa04a0"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/66c24699f266ff310381a9552d3576eea8ad6e20"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/eea53c5816889ee8b64544fa2e9311a81184ff9c"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/intel/iommu.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "89bd620798704a8805fc9db0d71d7f812cf5b3d2",
              "status": "affected",
              "version": "b802d070a52a1565b47daaa808872cfbd4a17b01",
              "versionType": "git"
            },
            {
              "lessThan": "25faff78138933244c678c7fc78f7c0340fa04a0",
              "status": "affected",
              "version": "b802d070a52a1565b47daaa808872cfbd4a17b01",
              "versionType": "git"
            },
            {
              "lessThan": "66c24699f266ff310381a9552d3576eea8ad6e20",
              "status": "affected",
              "version": "b802d070a52a1565b47daaa808872cfbd4a17b01",
              "versionType": "git"
            },
            {
              "lessThan": "eea53c5816889ee8b64544fa2e9311a81184ff9c",
              "status": "affected",
              "version": "b802d070a52a1565b47daaa808872cfbd4a17b01",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/intel/iommu.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.6"
            },
            {
              "lessThan": "5.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.38",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.11.*",
              "status": "unaffected",
              "version": "5.11.21",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.12.*",
              "status": "unaffected",
              "version": "5.12.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.13",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.38",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.11.21",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.12.4",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.13",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/vt-d: Remove WO permissions on second-level paging entries\n\nWhen the first level page table is used for IOVA translation, it only\nsupports Read-Only and Read-Write permissions. The Write-Only permission\nis not supported as the PRESENT bit (implying Read permission) should\nalways set. When using second level, we still give separate permissions\nthat allows WriteOnly which seems inconsistent and awkward. We want to\nhave consistent behavior. After moving to 1st level, we don\u0027t want things\nto work sometimes, and break if we use 2nd level for the same mappings.\nHence remove this configuration."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable path is Intel VT-d `__domain_mapping` during local DMA/IOMMU map setup (dma-iommu DMA_FROM_DEVICE, VFIO/iommufd map ioctls), not a network-facing packet or protocol path.\nAC:L - Creating write-only IOMMU mappings is deterministic whenever DMA_FROM_DEVICE or an explicit WO VFIO map is requested; no race or attacker-uncontrollable hardware state is required.\nPR:L - Ordinary unprivileged I/O triggers kernel DMA_FROM_DEVICE maps, and VFIO/iommufd device assignment is gated by device-file permissions rather than init-namespace root, so low privileges suffice.\nUI:N - The attacker (or their assigned device/VMM) drives the mapping and DMA themselves; no separate victim action is required.\nS:C - Incorrect second- vs first-level PTE permission bits weaken or break the IOMMU DMA isolation boundary, so a device can obtain access rights different from those requested and reach memory outside the intended domain authority.\nC:H - Forcing PRESENT/READ on intended write-only DMA_FROM_DEVICE pages (FL behavior, and the inconsistency with SL) lets a malicious or guest-assigned device DMA-read host buffer contents that should have been write-only.\nI:H - Wrong IOMMU PTE permissions corrupt the DMA access-control mechanism itself and can allow device DMA writes under unintended effective rights, yielding an integrity compromise across the isolation boundary.\nA:H - The fix commit states SL WO mappings can break where FL worked, producing IOMMU/DMA faults, dead devices, or kernel fault handling that denies availability."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:45:38.812Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/89bd620798704a8805fc9db0d71d7f812cf5b3d2"
        },
        {
          "url": "https://git.kernel.org/stable/c/25faff78138933244c678c7fc78f7c0340fa04a0"
        },
        {
          "url": "https://git.kernel.org/stable/c/66c24699f266ff310381a9552d3576eea8ad6e20"
        },
        {
          "url": "https://git.kernel.org/stable/c/eea53c5816889ee8b64544fa2e9311a81184ff9c"
        }
      ],
      "title": "iommu/vt-d: Remove WO permissions on second-level paging entries",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47035",
    "datePublished": "2024-02-28T08:13:43.404Z",
    "dateReserved": "2024-02-27T18:42:55.964Z",
    "dateUpdated": "2026-08-05T08:45:38.812Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/c848416cc05afc1589edba04fe00b85c2f797ee3\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/89bd620798704a8805fc9db0d71d7f812cf5b3d2\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/25faff78138933244c678c7fc78f7c0340fa04a0\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/66c24699f266ff310381a9552d3576eea8ad6e20\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/eea53c5816889ee8b64544fa2e9311a81184ff9c\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-04T05:24:39.557Z\"}}, {\"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2021-47035\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-03-05T18:13:47.892266Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-05-23T19:01:15.551Z\"}, \"title\": \"CISA ADP Vulnrichment\"}], \"cna\": {\"title\": \"iommu/vt-d: Remove WO permissions on second-level paging entries\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 8.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable path is Intel VT-d `__domain_mapping` during local DMA/IOMMU map setup (dma-iommu DMA_FROM_DEVICE, VFIO/iommufd map ioctls), not a network-facing packet or protocol path.\\nAC:L - Creating write-only IOMMU mappings is deterministic whenever DMA_FROM_DEVICE or an explicit WO VFIO map is requested; no race or attacker-uncontrollable hardware state is required.\\nPR:L - Ordinary unprivileged I/O triggers kernel DMA_FROM_DEVICE maps, and VFIO/iommufd device assignment is gated by device-file permissions rather than init-namespace root, so low privileges suffice.\\nUI:N - The attacker (or their assigned device/VMM) drives the mapping and DMA themselves; no separate victim action is required.\\nS:C - Incorrect second- vs first-level PTE permission bits weaken or break the IOMMU DMA isolation boundary, so a device can obtain access rights different from those requested and reach memory outside the intended domain authority.\\nC:H - Forcing PRESENT/READ on intended write-only DMA_FROM_DEVICE pages (FL behavior, and the inconsistency with SL) lets a malicious or guest-assigned device DMA-read host buffer contents that should have been write-only.\\nI:H - Wrong IOMMU PTE permissions corrupt the DMA access-control mechanism itself and can allow device DMA writes under unintended effective rights, yielding an integrity compromise across the isolation boundary.\\nA:H - The fix commit states SL WO mappings can break where FL worked, producing IOMMU/DMA faults, dead devices, or kernel fault handling that denies availability.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"b802d070a52a1565b47daaa808872cfbd4a17b01\", \"lessThan\": \"89bd620798704a8805fc9db0d71d7f812cf5b3d2\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"b802d070a52a1565b47daaa808872cfbd4a17b01\", \"lessThan\": \"25faff78138933244c678c7fc78f7c0340fa04a0\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"b802d070a52a1565b47daaa808872cfbd4a17b01\", \"lessThan\": \"66c24699f266ff310381a9552d3576eea8ad6e20\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"b802d070a52a1565b47daaa808872cfbd4a17b01\", \"lessThan\": \"eea53c5816889ee8b64544fa2e9311a81184ff9c\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/iommu/intel/iommu.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.6\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.6\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.10.38\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.10.*\"}, {\"status\": \"unaffected\", \"version\": \"5.11.21\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.11.*\"}, {\"status\": \"unaffected\", \"version\": \"5.12.4\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.12.*\"}, {\"status\": \"unaffected\", \"version\": \"5.13\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/iommu/intel/iommu.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/89bd620798704a8805fc9db0d71d7f812cf5b3d2\"}, {\"url\": \"https://git.kernel.org/stable/c/25faff78138933244c678c7fc78f7c0340fa04a0\"}, {\"url\": \"https://git.kernel.org/stable/c/66c24699f266ff310381a9552d3576eea8ad6e20\"}, {\"url\": \"https://git.kernel.org/stable/c/eea53c5816889ee8b64544fa2e9311a81184ff9c\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\niommu/vt-d: Remove WO permissions on second-level paging entries\\n\\nWhen the first level page table is used for IOVA translation, it only\\nsupports Read-Only and Read-Write permissions. The Write-Only permission\\nis not supported as the PRESENT bit (implying Read permission) should\\nalways set. When using second level, we still give separate permissions\\nthat allows WriteOnly which seems inconsistent and awkward. We want to\\nhave consistent behavior. After moving to 1st level, we don\u0027t want things\\nto work sometimes, and break if we use 2nd level for the same mappings.\\nHence remove this configuration.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.10.38\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.11.21\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.12.4\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.13\", \"versionStartIncluding\": \"5.6\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T08:45:38.812Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2021-47035\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T08:45:38.812Z\", \"dateReserved\": \"2024-02-27T18:42:55.964Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-02-28T08:13:43.404Z\", \"assignerShortName\": \"Linux\"}",
      "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 seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…