CVE-2021-47060
Vulnerability from cvelistv5
Published
2024-02-29 22:37
Modified
2024-12-19 07:34
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: Stop looking for coalesced MMIO zones if the bus is destroyed Abort the walk of coalesced MMIO zones if kvm_io_bus_unregister_dev() fails to allocate memory for the new instance of the bus. If it can't instantiate a new bus, unregister_dev() destroys all devices _except_ the target device. But, it doesn't tell the caller that it obliterated the bus and invoked the destructor for all devices that were on the bus. In the coalesced MMIO case, this can result in a deleted list entry dereference due to attempting to continue iterating on coalesced_zones after future entries (in the walk) have been deleted. Opportunistically add curly braces to the for-loop, which encompasses many lines but sneaks by without braces due to the guts being a single if statement.
Impacted products
Vendor Product Version
Linux Linux Version: 5.9
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 6,
              "baseSeverity": "MEDIUM",
              "confidentialityImpact": "HIGH",
              "integrityImpact": "NONE",
              "privilegesRequired": "HIGH",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2021-47060",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-03-05T19:24:08.098826Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "description": "CWE-noinfo Not enough information",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-11-07T16:31:59.196Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:24:39.796Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/7d1bc32d6477ff96a32695ea4be8144e4513ab2d"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/2a20592baff59c5351c5200ec667e1a2aa22af85"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/168e82f640ed1891a700bdb43e37da354b2ab63c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/50cbad42bfea8c052b7ca590bd4126cdc898713c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/5d3c4c79384af06e3c8e25b7770b6247496b4417"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/linux/kvm_host.h",
            "virt/kvm/coalesced_mmio.c",
            "virt/kvm/kvm_main.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "7d1bc32d6477ff96a32695ea4be8144e4513ab2d",
              "status": "affected",
              "version": "41b2ea7a6a11e2b1a7f2c29e1675a709a6b2b98d",
              "versionType": "git"
            },
            {
              "lessThan": "2a20592baff59c5351c5200ec667e1a2aa22af85",
              "status": "affected",
              "version": "f65886606c2d3b562716de030706dfe1bea4ed5e",
              "versionType": "git"
            },
            {
              "lessThan": "168e82f640ed1891a700bdb43e37da354b2ab63c",
              "status": "affected",
              "version": "f65886606c2d3b562716de030706dfe1bea4ed5e",
              "versionType": "git"
            },
            {
              "lessThan": "50cbad42bfea8c052b7ca590bd4126cdc898713c",
              "status": "affected",
              "version": "f65886606c2d3b562716de030706dfe1bea4ed5e",
              "versionType": "git"
            },
            {
              "lessThan": "5d3c4c79384af06e3c8e25b7770b6247496b4417",
              "status": "affected",
              "version": "f65886606c2d3b562716de030706dfe1bea4ed5e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/linux/kvm_host.h",
            "virt/kvm/coalesced_mmio.c",
            "virt/kvm/kvm_main.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.9"
            },
            {
              "lessThan": "5.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.119",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.37",
              "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"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: Stop looking for coalesced MMIO zones if the bus is destroyed\n\nAbort the walk of coalesced MMIO zones if kvm_io_bus_unregister_dev()\nfails to allocate memory for the new instance of the bus.  If it can\u0027t\ninstantiate a new bus, unregister_dev() destroys all devices _except_ the\ntarget device.   But, it doesn\u0027t tell the caller that it obliterated the\nbus and invoked the destructor for all devices that were on the bus.  In\nthe coalesced MMIO case, this can result in a deleted list entry\ndereference due to attempting to continue iterating on coalesced_zones\nafter future entries (in the walk) have been deleted.\n\nOpportunistically add curly braces to the for-loop, which encompasses\nmany lines but sneaks by without braces due to the guts being a single\nif statement."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2024-12-19T07:34:30.448Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/7d1bc32d6477ff96a32695ea4be8144e4513ab2d"
        },
        {
          "url": "https://git.kernel.org/stable/c/2a20592baff59c5351c5200ec667e1a2aa22af85"
        },
        {
          "url": "https://git.kernel.org/stable/c/168e82f640ed1891a700bdb43e37da354b2ab63c"
        },
        {
          "url": "https://git.kernel.org/stable/c/50cbad42bfea8c052b7ca590bd4126cdc898713c"
        },
        {
          "url": "https://git.kernel.org/stable/c/5d3c4c79384af06e3c8e25b7770b6247496b4417"
        }
      ],
      "title": "KVM: Stop looking for coalesced MMIO zones if the bus is destroyed",
      "x_generator": {
        "engine": "bippy-5f407fcff5a0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47060",
    "datePublished": "2024-02-29T22:37:34.885Z",
    "dateReserved": "2024-02-29T22:33:44.294Z",
    "dateUpdated": "2024-12-19T07:34:30.448Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2021-47060\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-02-29T23:15:07.740\",\"lastModified\":\"2024-11-21T06:35:17.280\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nKVM: Stop looking for coalesced MMIO zones if the bus is destroyed\\n\\nAbort the walk of coalesced MMIO zones if kvm_io_bus_unregister_dev()\\nfails to allocate memory for the new instance of the bus.  If it can\u0027t\\ninstantiate a new bus, unregister_dev() destroys all devices _except_ the\\ntarget device.   But, it doesn\u0027t tell the caller that it obliterated the\\nbus and invoked the destructor for all devices that were on the bus.  In\\nthe coalesced MMIO case, this can result in a deleted list entry\\ndereference due to attempting to continue iterating on coalesced_zones\\nafter future entries (in the walk) have been deleted.\\n\\nOpportunistically add curly braces to the for-loop, which encompasses\\nmany lines but sneaks by without braces due to the guts being a single\\nif statement.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: KVM: deja de buscar zonas MMIO fusionadas si el bus se destruye. Cancela el recorrido de las zonas MMIO fusionadas si kvm_io_bus_unregister_dev() no puede asignar memoria para la nueva instancia del bus. Si no puede crear una instancia de un nuevo bus, unregister_dev() destruye todos los dispositivos _excepto_ el dispositivo de destino. Pero no le dice a la persona que llama que destruy\u00f3 el bus e invoc\u00f3 el destructor para todos los dispositivos que estaban en el bus. En el caso de MMIO fusionado, esto puede resultar en una desreferencia de entrada de lista eliminada debido al intento de continuar iterando en coalesced_zones despu\u00e9s de que se hayan eliminado entradas futuras (en el recorrido). De manera oportunista, agregue llaves al bucle for, que abarca muchas l\u00edneas pero se escapa sin llaves debido a que el valor es una sola declaraci\u00f3n if.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:H\",\"baseScore\":6.0,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"HIGH\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":0.8,\"impactScore\":5.2}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/168e82f640ed1891a700bdb43e37da354b2ab63c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/2a20592baff59c5351c5200ec667e1a2aa22af85\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/50cbad42bfea8c052b7ca590bd4126cdc898713c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5d3c4c79384af06e3c8e25b7770b6247496b4417\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/7d1bc32d6477ff96a32695ea4be8144e4513ab2d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/168e82f640ed1891a700bdb43e37da354b2ab63c\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://git.kernel.org/stable/c/2a20592baff59c5351c5200ec667e1a2aa22af85\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://git.kernel.org/stable/c/50cbad42bfea8c052b7ca590bd4126cdc898713c\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://git.kernel.org/stable/c/5d3c4c79384af06e3c8e25b7770b6247496b4417\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://git.kernel.org/stable/c/7d1bc32d6477ff96a32695ea4be8144e4513ab2d\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"}]}}"
  }
}


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.
  • 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.