CVE-2024-43825 (GCVE-0-2024-43825)
Vulnerability from cvelistv5
Published
2024-08-17 09:21
Modified
2026-08-05 11:36
Summary
In the Linux kernel, the following vulnerability has been resolved: iio: Fix the sorting functionality in iio_gts_build_avail_time_table The sorting in iio_gts_build_avail_time_table is not working as intended. It could result in an out-of-bounds access when the time is zero. Here are more details: 1. When the gts->itime_table[i].time_us is zero, e.g., the time sequence is `3, 0, 1`, the inner for-loop will not terminate and do out-of-bound writes. This is because once `times[j] > new`, the value `new` will be added in the current position and the `times[j]` will be moved to `j+1` position, which makes the if-condition always hold. Meanwhile, idx will be added one, making the loop keep running without termination and out-of-bound write. 2. If none of the gts->itime_table[i].time_us is zero, the elements will just be copied without being sorted as described in the comment "Sort times from all tables to one and remove duplicates". For more details, please refer to https://lore.kernel.org/all/6dd0d822-046c-4dd2-9532-79d7ab96ec05@gmail.com.
Impacted products
Vendor Product Version
Linux Linux Version: 38416c28e16890b52fdd5eb73479299ec3f062f3
Version: 38416c28e16890b52fdd5eb73479299ec3f062f3
Version: 38416c28e16890b52fdd5eb73479299ec3f062f3
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-43825",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:08:48.020961Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-12T17:33:24.429Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/iio/industrialio-gts-helper.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "31ff8464ef540785344994986a010031410f9ff3",
              "status": "affected",
              "version": "38416c28e16890b52fdd5eb73479299ec3f062f3",
              "versionType": "git"
            },
            {
              "lessThan": "b5046de32fd1532c3f67065197fc1da82f0b5193",
              "status": "affected",
              "version": "38416c28e16890b52fdd5eb73479299ec3f062f3",
              "versionType": "git"
            },
            {
              "lessThan": "5acc3f971a01be48d5ff4252d8f9cdb87998cdfb",
              "status": "affected",
              "version": "38416c28e16890b52fdd5eb73479299ec3f062f3",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/iio/industrialio-gts-helper.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.4"
            },
            {
              "lessThan": "6.4",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.44",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.10.*",
              "status": "unaffected",
              "version": "6.10.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.11",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.44",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10.3",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niio: Fix the sorting functionality in iio_gts_build_avail_time_table\n\nThe sorting in iio_gts_build_avail_time_table is not working as intended.\nIt could result in an out-of-bounds access when the time is zero.\n\nHere are more details:\n\n1. When the gts-\u003eitime_table[i].time_us is zero, e.g., the time\nsequence is `3, 0, 1`, the inner for-loop will not terminate and do\nout-of-bound writes. This is because once `times[j] \u003e new`, the value\n`new` will be added in the current position and the `times[j]` will be\nmoved to `j+1` position, which makes the if-condition always hold.\nMeanwhile, idx will be added one, making the loop keep running without\ntermination and out-of-bound write.\n2. If none of the gts-\u003eitime_table[i].time_us is zero, the elements\nwill just be copied without being sorted as described in the comment\n\"Sort times from all tables to one and remove duplicates\".\n\nFor more details, please refer to\nhttps://lore.kernel.org/all/6dd0d822-046c-4dd2-9532-79d7ab96ec05@gmail.com."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable function is only reachable through `devm_iio_init_iio_gts()` during IIO driver probe/module load on the local system, and its corrupted output is consumed via local sysfs `*_integration_time_available` reads. There is no network- or peer-supplied data anywhere on the path.\nAC:L - For an affected time table the overflow is fully deterministic \u2014 no race, no memory-layout luck, no timing window; every probe of the device runs the unbounded memmove loop identically.\nPR:L - No privilege check guards the corruption itself: it occurs automatically during device binding, and the resulting out-of-bounds heap contents are exposed through the world-readable sysfs integration-time attribute that any unprivileged local user can read.\nUI:N - The table is built automatically when the IIO sensor driver probes at boot or module load; no victim action is required, and reading back the leaked heap data is a plain sysfs read.\nS:U - Both the corrupted `times` allocation and the impacted slab neighbours live in the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - `iio_gts_us_to_int_micro()` reads `idx` entries from the undersized `times` buffer and those out-of-bounds heap bytes are published to userspace through `iio_gts_avail_times()`/`read_avail`, giving an unbounded kernel heap read primitive rather than a single bounded leak.\nI:H - The unterminated inner loop performs repeated `memmove()`s writing attacker-independent but unbounded data past the end of the kmalloc\u0027d `times` object, overwriting adjacent slab objects \u2014 an out-of-bounds write that is a control-flow-hijack primitive per standard heap-corruption analysis.\nA:H - The runaway loop smashes the kernel heap and never terminates on its own, producing slab corruption, oops/panic, or a hang during probe."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:36:39.524Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/31ff8464ef540785344994986a010031410f9ff3"
        },
        {
          "url": "https://git.kernel.org/stable/c/b5046de32fd1532c3f67065197fc1da82f0b5193"
        },
        {
          "url": "https://git.kernel.org/stable/c/5acc3f971a01be48d5ff4252d8f9cdb87998cdfb"
        }
      ],
      "title": "iio: Fix the sorting functionality in iio_gts_build_avail_time_table",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-43825",
    "datePublished": "2024-08-17T09:21:45.215Z",
    "dateReserved": "2024-08-17T09:11:59.272Z",
    "dateUpdated": "2026-08-05T11:36:39.524Z",
    "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-43825\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T16:08:48.020961Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:23.207Z\"}}], \"cna\": {\"title\": \"iio: Fix the sorting functionality in iio_gts_build_avail_time_table\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"38416c28e16890b52fdd5eb73479299ec3f062f3\", \"lessThan\": \"31ff8464ef540785344994986a010031410f9ff3\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"38416c28e16890b52fdd5eb73479299ec3f062f3\", \"lessThan\": \"b5046de32fd1532c3f67065197fc1da82f0b5193\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"38416c28e16890b52fdd5eb73479299ec3f062f3\", \"lessThan\": \"5acc3f971a01be48d5ff4252d8f9cdb87998cdfb\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/iio/industrialio-gts-helper.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.4\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.4\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.44\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.10.3\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.10.*\"}, {\"status\": \"unaffected\", \"version\": \"6.11\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/iio/industrialio-gts-helper.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/31ff8464ef540785344994986a010031410f9ff3\"}, {\"url\": \"https://git.kernel.org/stable/c/b5046de32fd1532c3f67065197fc1da82f0b5193\"}, {\"url\": \"https://git.kernel.org/stable/c/5acc3f971a01be48d5ff4252d8f9cdb87998cdfb\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\niio: Fix the sorting functionality in iio_gts_build_avail_time_table\\n\\nThe sorting in iio_gts_build_avail_time_table is not working as intended.\\nIt could result in an out-of-bounds access when the time is zero.\\n\\nHere are more details:\\n\\n1. When the gts-\u003eitime_table[i].time_us is zero, e.g., the time\\nsequence is `3, 0, 1`, the inner for-loop will not terminate and do\\nout-of-bound writes. This is because once `times[j] \u003e new`, the value\\n`new` will be added in the current position and the `times[j]` will be\\nmoved to `j+1` position, which makes the if-condition always hold.\\nMeanwhile, idx will be added one, making the loop keep running without\\ntermination and out-of-bound write.\\n2. If none of the gts-\u003eitime_table[i].time_us is zero, the elements\\nwill just be copied without being sorted as described in the comment\\n\\\"Sort times from all tables to one and remove duplicates\\\".\\n\\nFor more details, please refer to\\nhttps://lore.kernel.org/all/6dd0d822-046c-4dd2-9532-79d7ab96ec05@gmail.com.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.44\", \"versionStartIncluding\": \"6.4\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.10.3\", \"versionStartIncluding\": \"6.4\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.11\", \"versionStartIncluding\": \"6.4\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-05-11T20:30:32.018Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-43825\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-05-11T20:30:32.018Z\", \"dateReserved\": \"2024-08-17T09:11:59.272Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-08-17T09:21:45.215Z\", \"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…