CVE-2024-57804 (GCVE-0-2024-57804)
Vulnerability from cvelistv5
Published
2025-01-11 12:39
Modified
2026-10-21 12:35
Summary
In the Linux kernel, the following vulnerability has been resolved: scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs The driver, through the SAS transport, exposes a sysfs interface to enable/disable PHYs in a controller/expander setup. When multiple PHYs are disabled and enabled in rapid succession, the persistent and current config pages related to SAS IO unit/SAS Expander pages could get corrupted. Use separate memory for each config request.
Impacted products
Vendor Product Version
Linux Linux Version: 32d457d5a2af9bf5ddbe28297eabf1fc93451665
Version: 32d457d5a2af9bf5ddbe28297eabf1fc93451665
Version: 32d457d5a2af9bf5ddbe28297eabf1fc93451665
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-57804",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-15T21:41:29.743004Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-15T21:51:49.145Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/scsi/mpi3mr/mpi3mr.h",
            "drivers/scsi/mpi3mr/mpi3mr_fw.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "d7dade716905b189f17cc1601cbb4b421a811a28",
              "status": "affected",
              "version": "32d457d5a2af9bf5ddbe28297eabf1fc93451665",
              "versionType": "git"
            },
            {
              "lessThan": "869fdc6f0606060301aef648231e186c7c542f5a",
              "status": "affected",
              "version": "32d457d5a2af9bf5ddbe28297eabf1fc93451665",
              "versionType": "git"
            },
            {
              "lessThan": "711201a8b8334a397440ac0b859df0054e174bc9",
              "status": "affected",
              "version": "32d457d5a2af9bf5ddbe28297eabf1fc93451665",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/scsi/mpi3mr/mpi3mr.h",
            "drivers/scsi/mpi3mr/mpi3mr_fw.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.1"
            },
            {
              "lessThan": "6.1",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.160",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.13",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.160",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.8",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs\n\nThe driver, through the SAS transport, exposes a sysfs interface to\nenable/disable PHYs in a controller/expander setup.  When multiple PHYs\nare disabled and enabled in rapid succession, the persistent and current\nconfig pages related to SAS IO unit/SAS Expander pages could get\ncorrupted.\n\nUse separate memory for each config request."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.3,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code is reached only through local sysfs attributes under /sys/class/sas_phy/ (phy error counters, enable, link rate) and the bsg device; there is no network-facing path into mpi3mr config-page processing.\nAC:L - The attacker controls both sides of the race by concurrently reading the world-readable phy error-counter attributes across multiple phys/threads, each of which memsets and reuses the shared mrioc-\u003ecfg_page outside cfg_cmds.mutex; the commit itself notes the corruption occurs on operations \"in rapid succession\", with no attacker-uncontrollable precondition.\nPR:L - The SAS transport exports invalid_dword_count, running_disparity_error_count, loss_of_dword_sync_count and phy_reset_problem_count with S_IRUGO (0444), and reading them invokes mpi3mr_transport_get_linkerrors() -\u003e mpi3mr_cfg_get_sas_phy_pg1() -\u003e mpi3mr_process_cfg_req(), so an unprivileged local user can drive the racy shared-buffer path and corrupt config requests issued by any other context, including a privileged WRITE_PERSISTENT.\nUI:N - The attacker\u0027s own concurrent sysfs reads race each other and race the driver\u0027s internal discovery/reset config-page reads; no victim action is required to trigger the corruption.\nS:U - The corrupted state is the HBA driver\u0027s DMA buffer and the controller configuration it manages, all within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:L - A thread\u0027s post-mutex read-out memcpy can return a different config page\u0027s contents (device SAS addresses/WWNs, enclosure identifiers, expander topology, driver page settings), which are then surfaced to unprivileged userspace through the world-readable phy sysfs attributes; the leak is bounded to the 1024-byte shared config buffer rather than arbitrary kernel memory.\nI:H - mpi3mr_cfg_set_sas_io_unit_pg1() performs WRITE_CURRENT and WRITE_PERSISTENT with a payload staged in the unlocked shared buffer, so a racing reader causes zeroed/foreign data to be DMA\u0027d into the controller\u0027s non-volatile SAS IO Unit / SAS Expander configuration, and garbled reads poison the driver\u0027s SAS topology state (device handles, SAS addresses, port IDs) used for I/O routing \u2014 a direct and serious integrity loss.\nA:H - A corrupted persistent SAS IO Unit Page 1 leaves PHYs disabled or with invalid link rates, so storage behind the HBA fails to come back and the misconfiguration survives reboot; additionally a botched config request drives mpi3mr_check_rh_fault_ioc(MPI3MR_RESET_FROM_CFG_REQ_TIMEOUT), diag-faulting and resetting the controller and potentially marking it unrecoverable, stalling all attached I/O."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-21T12:35:41.092Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/d7dade716905b189f17cc1601cbb4b421a811a28"
        },
        {
          "url": "https://git.kernel.org/stable/c/869fdc6f0606060301aef648231e186c7c542f5a"
        },
        {
          "url": "https://git.kernel.org/stable/c/711201a8b8334a397440ac0b859df0054e174bc9"
        }
      ],
      "title": "scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-57804",
    "datePublished": "2025-01-11T12:39:50.958Z",
    "dateReserved": "2025-01-09T09:50:31.793Z",
    "dateUpdated": "2026-10-21T12:35:41.092Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-57804\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-15T21:41:29.743004Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-15T21:41:30.451Z\"}}], \"cna\": {\"title\": \"scsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.3, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable code is reached only through local sysfs attributes under /sys/class/sas_phy/ (phy error counters, enable, link rate) and the bsg device; there is no network-facing path into mpi3mr config-page processing.\\nAC:L - The attacker controls both sides of the race by concurrently reading the world-readable phy error-counter attributes across multiple phys/threads, each of which memsets and reuses the shared mrioc-\u003ecfg_page outside cfg_cmds.mutex; the commit itself notes the corruption occurs on operations \\\"in rapid succession\\\", with no attacker-uncontrollable precondition.\\nPR:L - The SAS transport exports invalid_dword_count, running_disparity_error_count, loss_of_dword_sync_count and phy_reset_problem_count with S_IRUGO (0444), and reading them invokes mpi3mr_transport_get_linkerrors() -\u003e mpi3mr_cfg_get_sas_phy_pg1() -\u003e mpi3mr_process_cfg_req(), so an unprivileged local user can drive the racy shared-buffer path and corrupt config requests issued by any other context, including a privileged WRITE_PERSISTENT.\\nUI:N - The attacker\u0027s own concurrent sysfs reads race each other and race the driver\u0027s internal discovery/reset config-page reads; no victim action is required to trigger the corruption.\\nS:U - The corrupted state is the HBA driver\u0027s DMA buffer and the controller configuration it manages, all within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\\nC:L - A thread\u0027s post-mutex read-out memcpy can return a different config page\u0027s contents (device SAS addresses/WWNs, enclosure identifiers, expander topology, driver page settings), which are then surfaced to unprivileged userspace through the world-readable phy sysfs attributes; the leak is bounded to the 1024-byte shared config buffer rather than arbitrary kernel memory.\\nI:H - mpi3mr_cfg_set_sas_io_unit_pg1() performs WRITE_CURRENT and WRITE_PERSISTENT with a payload staged in the unlocked shared buffer, so a racing reader causes zeroed/foreign data to be DMA\u0027d into the controller\u0027s non-volatile SAS IO Unit / SAS Expander configuration, and garbled reads poison the driver\u0027s SAS topology state (device handles, SAS addresses, port IDs) used for I/O routing \\u2014 a direct and serious integrity loss.\\nA:H - A corrupted persistent SAS IO Unit Page 1 leaves PHYs disabled or with invalid link rates, so storage behind the HBA fails to come back and the misconfiguration survives reboot; additionally a botched config request drives mpi3mr_check_rh_fault_ioc(MPI3MR_RESET_FROM_CFG_REQ_TIMEOUT), diag-faulting and resetting the controller and potentially marking it unrecoverable, stalling all attached I/O.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"32d457d5a2af9bf5ddbe28297eabf1fc93451665\", \"lessThan\": \"d7dade716905b189f17cc1601cbb4b421a811a28\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"32d457d5a2af9bf5ddbe28297eabf1fc93451665\", \"lessThan\": \"869fdc6f0606060301aef648231e186c7c542f5a\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"32d457d5a2af9bf5ddbe28297eabf1fc93451665\", \"lessThan\": \"711201a8b8334a397440ac0b859df0054e174bc9\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/scsi/mpi3mr/mpi3mr.h\", \"drivers/scsi/mpi3mr/mpi3mr_fw.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.1\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.1\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.160\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.12.8\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.12.*\"}, {\"status\": \"unaffected\", \"version\": \"6.13\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/scsi/mpi3mr/mpi3mr.h\", \"drivers/scsi/mpi3mr/mpi3mr_fw.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/d7dade716905b189f17cc1601cbb4b421a811a28\"}, {\"url\": \"https://git.kernel.org/stable/c/869fdc6f0606060301aef648231e186c7c542f5a\"}, {\"url\": \"https://git.kernel.org/stable/c/711201a8b8334a397440ac0b859df0054e174bc9\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nscsi: mpi3mr: Fix corrupt config pages PHY state is switched in sysfs\\n\\nThe driver, through the SAS transport, exposes a sysfs interface to\\nenable/disable PHYs in a controller/expander setup.  When multiple PHYs\\nare disabled and enabled in rapid succession, the persistent and current\\nconfig pages related to SAS IO unit/SAS Expander pages could get\\ncorrupted.\\n\\nUse separate memory for each config request.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.160\", \"versionStartIncluding\": \"6.1\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.12.8\", \"versionStartIncluding\": \"6.1\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.13\", \"versionStartIncluding\": \"6.1\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-10-21T12:35:41.092Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-57804\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-21T12:35:41.092Z\", \"dateReserved\": \"2025-01-09T09:50:31.793Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2025-01-11T12:39:50.958Z\", \"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…