CVE-2024-38576 (GCVE-0-2024-38576)
Vulnerability from cvelistv5
Published
2024-06-19 13:37
Modified
2026-08-05 11:32
Summary
In the Linux kernel, the following vulnerability has been resolved: rcu: Fix buffer overflow in print_cpu_stall_info() The rcuc-starvation output from print_cpu_stall_info() might overflow the buffer if there is a huge difference in jiffies difference. The situation might seem improbable, but computers sometimes get very confused about time, which can result in full-sized integers, and, in this case, buffer overflow. Also, the unsigned jiffies difference is printed using %ld, which is normally for signed integers. This is intentional for debugging purposes, but it is not obvious from the code. This commit therefore changes sprintf() to snprintf() and adds a clarifying comment about intention of %ld format. Found by Linux Verification Center (linuxtesting.org) with SVACE.
Impacted products
Vendor Product Version
Linux Linux Version: 245a62982502255314b63dd2c4daaedd1cd595a6
Version: 245a62982502255314b63dd2c4daaedd1cd595a6
Version: 245a62982502255314b63dd2c4daaedd1cd595a6
Version: 245a62982502255314b63dd2c4daaedd1cd595a6
Version: 245a62982502255314b63dd2c4daaedd1cd595a6
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 7.1,
              "baseSeverity": "HIGH",
              "confidentialityImpact": "HIGH",
              "integrityImpact": "NONE",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2024-38576",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-06-20T15:40:30.043568Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "description": "CWE-noinfo Not enough information",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-11-07T17:27:02.961Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T04:12:25.929Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/e2228ed3fe7aa838fba87c79a76fb1ad9ea47138"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/afb39909bfb5c08111f99e21bf5be7505f59ff1c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/9351e1338539cb7f319ffc1210fa9b2aa27384b5"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/4c3e2ef4d8ddd313c8ce3ac30505940bea8d6257"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3758f7d9917bd7ef0482c4184c0ad673b4c4e069"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "kernel/rcu/tree_stall.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "e2228ed3fe7aa838fba87c79a76fb1ad9ea47138",
              "status": "affected",
              "version": "245a62982502255314b63dd2c4daaedd1cd595a6",
              "versionType": "git"
            },
            {
              "lessThan": "afb39909bfb5c08111f99e21bf5be7505f59ff1c",
              "status": "affected",
              "version": "245a62982502255314b63dd2c4daaedd1cd595a6",
              "versionType": "git"
            },
            {
              "lessThan": "9351e1338539cb7f319ffc1210fa9b2aa27384b5",
              "status": "affected",
              "version": "245a62982502255314b63dd2c4daaedd1cd595a6",
              "versionType": "git"
            },
            {
              "lessThan": "4c3e2ef4d8ddd313c8ce3ac30505940bea8d6257",
              "status": "affected",
              "version": "245a62982502255314b63dd2c4daaedd1cd595a6",
              "versionType": "git"
            },
            {
              "lessThan": "3758f7d9917bd7ef0482c4184c0ad673b4c4e069",
              "status": "affected",
              "version": "245a62982502255314b63dd2c4daaedd1cd595a6",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "kernel/rcu/tree_stall.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.93",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.33",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.8.*",
              "status": "unaffected",
              "version": "6.8.12",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.9.*",
              "status": "unaffected",
              "version": "6.9.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.10",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.93",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.33",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8.12",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9.3",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nrcu: Fix buffer overflow in print_cpu_stall_info()\n\nThe rcuc-starvation output from print_cpu_stall_info() might overflow the\nbuffer if there is a huge difference in jiffies difference.  The situation\nmight seem improbable, but computers sometimes get very confused about\ntime, which can result in full-sized integers, and, in this case,\nbuffer overflow.\n\nAlso, the unsigned jiffies difference is printed using %ld, which is\nnormally for signed integers.  This is intentional for debugging purposes,\nbut it is not obvious from the code.\n\nThis commit therefore changes sprintf() to snprintf() and adds a\nclarifying comment about intention of %ld format.\n\nFound by Linux Verification Center (linuxtesting.org) with SVACE."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code sits in core RCU stall detection (kernel/rcu/tree_stall.h), reached only from the scheduler-clock interrupt via check_cpu_stall(); there is no network, adjacent, or physical data path into it. The most an attacker can do is create local system conditions (heavy load, CPU starvation) that make an RCU stall warning fire.\nAC:H - Three conditions all lie outside attacker control: rcuc kthreads must exist (requires CONFIG_PREEMPT_RT or the boot parameter rcutree.use_softirq=0, non-default on mainstream kernels), an RCU CPU stall must actually be declared, and the jiffies delta must exceed ~1e8 (27.8 h at HZ=1000) or be a corrupted backwards value that the attacker cannot influence. The commit author himself describes the triggering situation as \"improbable\" and dependent on the machine being \"very confused about time.\"\nPR:L - No authentication gate protects the path itself, but reaching it requires being on the system to generate the CPU/RCU starvation load that provokes a stall warning, which an ordinary unprivileged local user can attempt. Choosing the higher of Low versus High since no capability check or root requirement guards the RCU stall detector.\nUI:N - The stall detector fires autonomously from the scheduler-clock interrupt with no victim action required. No file open, mount, or other user operation is involved.\nS:U - The overflow corrupts the kernel stack frame of print_cpu_stall_info() within the same kernel security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - The out-of-bounds write corrupts adjacent stack frame contents, including the ticks_title char pointer that is dereferenced by the very next pr_err(\"%s\", ...), which can dump arbitrary adjacent kernel memory to the console/dmesg. Memory corruption of this kind is leverageable for kernel information disclosure.\nI:H - This is an out-of-bounds stack write of up to 12 bytes past a 32-byte buffer, overwriting the stack canary, saved registers, and potentially the return address of print_cpu_stall_info(). Per scoring guidance an out-of-bounds write is High integrity impact regardless of how constrained the written bytes are.\nA:H - The overflow occurs in hard-IRQ context with interrupts disabled while holding the raw rnp-\u003elock spinlock; on stack-protector kernels it trips __stack_chk_fail() and panics the machine, and without it the corrupted frame yields a bad pointer dereference or corrupted return leading to an oops. Either outcome is a full kernel crash."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:32:53.593Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/e2228ed3fe7aa838fba87c79a76fb1ad9ea47138"
        },
        {
          "url": "https://git.kernel.org/stable/c/afb39909bfb5c08111f99e21bf5be7505f59ff1c"
        },
        {
          "url": "https://git.kernel.org/stable/c/9351e1338539cb7f319ffc1210fa9b2aa27384b5"
        },
        {
          "url": "https://git.kernel.org/stable/c/4c3e2ef4d8ddd313c8ce3ac30505940bea8d6257"
        },
        {
          "url": "https://git.kernel.org/stable/c/3758f7d9917bd7ef0482c4184c0ad673b4c4e069"
        }
      ],
      "title": "rcu: Fix buffer overflow in print_cpu_stall_info()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-38576",
    "datePublished": "2024-06-19T13:37:35.142Z",
    "dateReserved": "2024-06-18T19:36:34.924Z",
    "dateUpdated": "2026-08-05T11:32:53.593Z",
    "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/e2228ed3fe7aa838fba87c79a76fb1ad9ea47138\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/afb39909bfb5c08111f99e21bf5be7505f59ff1c\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/9351e1338539cb7f319ffc1210fa9b2aa27384b5\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/4c3e2ef4d8ddd313c8ce3ac30505940bea8d6257\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/3758f7d9917bd7ef0482c4184c0ad673b4c4e069\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T04:12:25.929Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 7.1, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"HIGH\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-38576\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-06-20T15:40:30.043568Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"description\": \"CWE-noinfo Not enough information\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-06-20T15:40:41.143Z\"}}], \"cna\": {\"title\": \"rcu: Fix buffer overflow in print_cpu_stall_info()\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"245a62982502\", \"lessThan\": \"e2228ed3fe7a\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"245a62982502\", \"lessThan\": \"afb39909bfb5\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"245a62982502\", \"lessThan\": \"9351e1338539\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"245a62982502\", \"lessThan\": \"4c3e2ef4d8dd\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"245a62982502\", \"lessThan\": \"3758f7d9917b\", \"versionType\": \"git\"}], \"programFiles\": [\"kernel/rcu/tree_stall.h\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.0\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.0\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.1.93\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.33\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8.12\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.8.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9.3\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.9.*\"}, {\"status\": \"unaffected\", \"version\": \"6.10\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"kernel/rcu/tree_stall.h\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/e2228ed3fe7aa838fba87c79a76fb1ad9ea47138\"}, {\"url\": \"https://git.kernel.org/stable/c/afb39909bfb5c08111f99e21bf5be7505f59ff1c\"}, {\"url\": \"https://git.kernel.org/stable/c/9351e1338539cb7f319ffc1210fa9b2aa27384b5\"}, {\"url\": \"https://git.kernel.org/stable/c/4c3e2ef4d8ddd313c8ce3ac30505940bea8d6257\"}, {\"url\": \"https://git.kernel.org/stable/c/3758f7d9917bd7ef0482c4184c0ad673b4c4e069\"}], \"x_generator\": {\"engine\": \"bippy-9e1c9544281a\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nrcu: Fix buffer overflow in print_cpu_stall_info()\\n\\nThe rcuc-starvation output from print_cpu_stall_info() might overflow the\\nbuffer if there is a huge difference in jiffies difference.  The situation\\nmight seem improbable, but computers sometimes get very confused about\\ntime, which can result in full-sized integers, and, in this case,\\nbuffer overflow.\\n\\nAlso, the unsigned jiffies difference is printed using %ld, which is\\nnormally for signed integers.  This is intentional for debugging purposes,\\nbut it is not obvious from the code.\\n\\nThis commit therefore changes sprintf() to snprintf() and adds a\\nclarifying comment about intention of %ld format.\\n\\nFound by Linux Verification Center (linuxtesting.org) with SVACE.\"}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2024-11-05T09:30:13.421Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-38576\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2024-11-07T17:27:02.961Z\", \"dateReserved\": \"2024-06-18T19:36:34.924Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-06-19T13:37:35.142Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.1"
    }
  }
}


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…