CVE-2025-38067 (GCVE-0-2025-38067)
Vulnerability from cvelistv5
Published
2025-06-18 09:33
Modified
2025-07-17 16:55
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: rseq: Fix segfault on registration when rseq_cs is non-zero The rseq_cs field is documented as being set to 0 by user-space prior to registration, however this is not currently enforced by the kernel. This can result in a segfault on return to user-space if the value stored in the rseq_cs field doesn't point to a valid struct rseq_cs. The correct solution to this would be to fail the rseq registration when the rseq_cs field is non-zero. However, some older versions of glibc will reuse the rseq area of previous threads without clearing the rseq_cs field and will also terminate the process if the rseq registration fails in a secondary thread. This wasn't caught in testing because in this case the leftover rseq_cs does point to a valid struct rseq_cs. What we can do is clear the rseq_cs field on registration when it's non-zero which will prevent segfaults on registration and won't break the glibc versions that reuse rseq areas on thread creation.
Impacted products
Vendor Product Version
Linux Linux Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Version: d7822b1e24f2df5df98c76f0e94a5416349ff759
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "kernel/rseq.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "48900d839a3454050fd5822e34be8d54c4ec9b86",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            },
            {
              "lessThan": "3e4028ef31b69286c9d4878cee0330235f53f218",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            },
            {
              "lessThan": "b2b05d0dc2f4f0646922068af435aed5763d16ba",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            },
            {
              "lessThan": "eaf112069a904b6207b4106ff083e0208232a2eb",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            },
            {
              "lessThan": "f004f58d18a2d3dc761cf973ad27b4a5997bd876",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            },
            {
              "lessThan": "2df285dab00fa03a3ef939b6cb0d0d0aeb0791db",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            },
            {
              "lessThan": "fd881d0a085fc54354414aed990ccf05f282ba53",
              "status": "affected",
              "version": "d7822b1e24f2df5df98c76f0e94a5416349ff759",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "kernel/rseq.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.18"
            },
            {
              "lessThan": "4.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.240",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.189",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.146",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.99",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.14.*",
              "status": "unaffected",
              "version": "6.14.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.240",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.189",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.146",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.99",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.39",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14.9",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15",
                  "versionStartIncluding": "4.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nrseq: Fix segfault on registration when rseq_cs is non-zero\n\nThe rseq_cs field is documented as being set to 0 by user-space prior to\nregistration, however this is not currently enforced by the kernel. This\ncan result in a segfault on return to user-space if the value stored in\nthe rseq_cs field doesn\u0027t point to a valid struct rseq_cs.\n\nThe correct solution to this would be to fail the rseq registration when\nthe rseq_cs field is non-zero. However, some older versions of glibc\nwill reuse the rseq area of previous threads without clearing the\nrseq_cs field and will also terminate the process if the rseq\nregistration fails in a secondary thread. This wasn\u0027t caught in testing\nbecause in this case the leftover rseq_cs does point to a valid struct\nrseq_cs.\n\nWhat we can do is clear the rseq_cs field on registration when it\u0027s\nnon-zero which will prevent segfaults on registration and won\u0027t break\nthe glibc versions that reuse rseq areas on thread creation."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-07-17T16:55:33.456Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/48900d839a3454050fd5822e34be8d54c4ec9b86"
        },
        {
          "url": "https://git.kernel.org/stable/c/3e4028ef31b69286c9d4878cee0330235f53f218"
        },
        {
          "url": "https://git.kernel.org/stable/c/b2b05d0dc2f4f0646922068af435aed5763d16ba"
        },
        {
          "url": "https://git.kernel.org/stable/c/eaf112069a904b6207b4106ff083e0208232a2eb"
        },
        {
          "url": "https://git.kernel.org/stable/c/f004f58d18a2d3dc761cf973ad27b4a5997bd876"
        },
        {
          "url": "https://git.kernel.org/stable/c/2df285dab00fa03a3ef939b6cb0d0d0aeb0791db"
        },
        {
          "url": "https://git.kernel.org/stable/c/fd881d0a085fc54354414aed990ccf05f282ba53"
        }
      ],
      "title": "rseq: Fix segfault on registration when rseq_cs is non-zero",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-38067",
    "datePublished": "2025-06-18T09:33:45.518Z",
    "dateReserved": "2025-04-16T04:51:23.980Z",
    "dateUpdated": "2025-07-17T16:55:33.456Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-38067\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-06-18T10:15:39.780\",\"lastModified\":\"2025-07-17T17:15:36.333\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nrseq: Fix segfault on registration when rseq_cs is non-zero\\n\\nThe rseq_cs field is documented as being set to 0 by user-space prior to\\nregistration, however this is not currently enforced by the kernel. This\\ncan result in a segfault on return to user-space if the value stored in\\nthe rseq_cs field doesn\u0027t point to a valid struct rseq_cs.\\n\\nThe correct solution to this would be to fail the rseq registration when\\nthe rseq_cs field is non-zero. However, some older versions of glibc\\nwill reuse the rseq area of previous threads without clearing the\\nrseq_cs field and will also terminate the process if the rseq\\nregistration fails in a secondary thread. This wasn\u0027t caught in testing\\nbecause in this case the leftover rseq_cs does point to a valid struct\\nrseq_cs.\\n\\nWhat we can do is clear the rseq_cs field on registration when it\u0027s\\nnon-zero which will prevent segfaults on registration and won\u0027t break\\nthe glibc versions that reuse rseq areas on thread creation.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: rseq: Arreglar violaci\u00f3n de segmentaci\u00f3n en el registro cuando rseq_cs no es cero El campo rseq_cs est\u00e1 documentado como establecido a 0 por el espacio de usuario antes del registro, sin embargo esto no es aplicado actualmente por el kernel. Esto puede resultar en una violaci\u00f3n de segmentaci\u00f3n al regresar al espacio de usuario si el valor almacenado en el campo rseq_cs no apunta a una estructura rseq_cs v\u00e1lida. La soluci\u00f3n correcta para esto ser\u00eda fallar el registro de rseq cuando el campo rseq_cs no es cero. Sin embargo, algunas versiones anteriores de glibc reutilizar\u00e1n el \u00e1rea rseq de subprocesos anteriores sin borrar el campo rseq_cs y tambi\u00e9n terminar\u00e1n el proceso si el registro de rseq falla en un subproceso secundario. Esto no fue detectado en las pruebas porque en este caso el rseq_cs restante apunta a una estructura rseq_cs v\u00e1lida. Lo que podemos hacer es borrar el campo rseq_cs durante el registro cuando no sea cero, lo que evitar\u00e1 errores de segmentaci\u00f3n en el registro y no da\u00f1ar\u00e1 las versiones de glibc que reutilizan \u00e1reas rseq en la creaci\u00f3n de subprocesos.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/2df285dab00fa03a3ef939b6cb0d0d0aeb0791db\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/3e4028ef31b69286c9d4878cee0330235f53f218\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/48900d839a3454050fd5822e34be8d54c4ec9b86\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b2b05d0dc2f4f0646922068af435aed5763d16ba\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/eaf112069a904b6207b4106ff083e0208232a2eb\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f004f58d18a2d3dc761cf973ad27b4a5997bd876\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/fd881d0a085fc54354414aed990ccf05f282ba53\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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.


Loading…

Loading…