cve-2023-52854
Vulnerability from cvelistv5
Published
2024-05-21 15:31
Modified
2024-12-19 08:27
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: padata: Fix refcnt handling in padata_free_shell() In a high-load arm64 environment, the pcrypt_aead01 test in LTP can lead to system UAF (Use-After-Free) issues. Due to the lengthy analysis of the pcrypt_aead01 function call, I'll describe the problem scenario using a simplified model: Suppose there's a user of padata named `user_function` that adheres to the padata requirement of calling `padata_free_shell` after `serial()` has been invoked, as demonstrated in the following code: ```c struct request { struct padata_priv padata; struct completion *done; }; void parallel(struct padata_priv *padata) { do_something(); } void serial(struct padata_priv *padata) { struct request *request = container_of(padata, struct request, padata); complete(request->done); } void user_function() { DECLARE_COMPLETION(done) padata->parallel = parallel; padata->serial = serial; padata_do_parallel(); wait_for_completion(&done); padata_free_shell(); } ``` In the corresponding padata.c file, there's the following code: ```c static void padata_serial_worker(struct work_struct *serial_work) { ... cnt = 0; while (!list_empty(&local_list)) { ... padata->serial(padata); cnt++; } local_bh_enable(); if (refcount_sub_and_test(cnt, &pd->refcnt)) padata_free_pd(pd); } ``` Because of the high system load and the accumulation of unexecuted softirq at this moment, `local_bh_enable()` in padata takes longer to execute than usual. Subsequently, when accessing `pd->refcnt`, `pd` has already been released by `padata_free_shell()`, resulting in a UAF issue with `pd->refcnt`. The fix is straightforward: add `refcount_dec_and_test` before calling `padata_free_pd` in `padata_free_shell`.
Impacted products
Vendor Product Version
Linux Linux Version: 07928d9bfc81640bab36f5190e8725894d93b659
Version: 07928d9bfc81640bab36f5190e8725894d93b659
Version: 07928d9bfc81640bab36f5190e8725894d93b659
Version: 07928d9bfc81640bab36f5190e8725894d93b659
Version: 07928d9bfc81640bab36f5190e8725894d93b659
Version: 07928d9bfc81640bab36f5190e8725894d93b659
Create a notification for this product.
   Linux Linux Version: 5.6
Create a notification for this product.
Show details on NVD website


{
   containers: {
      adp: [
         {
            metrics: [
               {
                  other: {
                     content: {
                        id: "CVE-2023-52854",
                        options: [
                           {
                              Exploitation: "none",
                           },
                           {
                              Automatable: "no",
                           },
                           {
                              "Technical Impact": "partial",
                           },
                        ],
                        role: "CISA Coordinator",
                        timestamp: "2024-05-22T18:22:41.019729Z",
                        version: "2.0.3",
                     },
                     type: "ssvc",
                  },
               },
            ],
            providerMetadata: {
               dateUpdated: "2024-06-04T17:23:36.501Z",
               orgId: "134c704f-9b21-4f2e-91b3-4a467353bcc0",
               shortName: "CISA-ADP",
            },
            title: "CISA ADP Vulnrichment",
         },
         {
            providerMetadata: {
               dateUpdated: "2024-08-02T23:11:36.064Z",
               orgId: "af854a3a-2127-422b-91ae-364da2661108",
               shortName: "CVE",
            },
            references: [
               {
                  tags: [
                     "x_transferred",
                  ],
                  url: "https://git.kernel.org/stable/c/41aad9d6953984d134fc50f631f24ef476875d4d",
               },
               {
                  tags: [
                     "x_transferred",
                  ],
                  url: "https://git.kernel.org/stable/c/0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5",
               },
               {
                  tags: [
                     "x_transferred",
                  ],
                  url: "https://git.kernel.org/stable/c/c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275",
               },
               {
                  tags: [
                     "x_transferred",
                  ],
                  url: "https://git.kernel.org/stable/c/1e901bcb8af19416b65f5063a4af7996e5a51d7f",
               },
               {
                  tags: [
                     "x_transferred",
                  ],
                  url: "https://git.kernel.org/stable/c/1734a79e951914f1db2c65e635012a35db1c674b",
               },
               {
                  tags: [
                     "x_transferred",
                  ],
                  url: "https://git.kernel.org/stable/c/7ddc21e317b360c3444de3023bcc83b85fabae2f",
               },
            ],
            title: "CVE Program Container",
         },
      ],
      cna: {
         affected: [
            {
               defaultStatus: "unaffected",
               product: "Linux",
               programFiles: [
                  "kernel/padata.c",
               ],
               repo: "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
               vendor: "Linux",
               versions: [
                  {
                     lessThan: "41aad9d6953984d134fc50f631f24ef476875d4d",
                     status: "affected",
                     version: "07928d9bfc81640bab36f5190e8725894d93b659",
                     versionType: "git",
                  },
                  {
                     lessThan: "0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5",
                     status: "affected",
                     version: "07928d9bfc81640bab36f5190e8725894d93b659",
                     versionType: "git",
                  },
                  {
                     lessThan: "c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275",
                     status: "affected",
                     version: "07928d9bfc81640bab36f5190e8725894d93b659",
                     versionType: "git",
                  },
                  {
                     lessThan: "1e901bcb8af19416b65f5063a4af7996e5a51d7f",
                     status: "affected",
                     version: "07928d9bfc81640bab36f5190e8725894d93b659",
                     versionType: "git",
                  },
                  {
                     lessThan: "1734a79e951914f1db2c65e635012a35db1c674b",
                     status: "affected",
                     version: "07928d9bfc81640bab36f5190e8725894d93b659",
                     versionType: "git",
                  },
                  {
                     lessThan: "7ddc21e317b360c3444de3023bcc83b85fabae2f",
                     status: "affected",
                     version: "07928d9bfc81640bab36f5190e8725894d93b659",
                     versionType: "git",
                  },
               ],
            },
            {
               defaultStatus: "affected",
               product: "Linux",
               programFiles: [
                  "kernel/padata.c",
               ],
               repo: "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
               vendor: "Linux",
               versions: [
                  {
                     status: "affected",
                     version: "5.6",
                  },
                  {
                     lessThan: "5.6",
                     status: "unaffected",
                     version: "0",
                     versionType: "semver",
                  },
                  {
                     lessThanOrEqual: "5.10.*",
                     status: "unaffected",
                     version: "5.10.201",
                     versionType: "semver",
                  },
                  {
                     lessThanOrEqual: "5.15.*",
                     status: "unaffected",
                     version: "5.15.139",
                     versionType: "semver",
                  },
                  {
                     lessThanOrEqual: "6.1.*",
                     status: "unaffected",
                     version: "6.1.63",
                     versionType: "semver",
                  },
                  {
                     lessThanOrEqual: "6.5.*",
                     status: "unaffected",
                     version: "6.5.12",
                     versionType: "semver",
                  },
                  {
                     lessThanOrEqual: "6.6.*",
                     status: "unaffected",
                     version: "6.6.2",
                     versionType: "semver",
                  },
                  {
                     lessThanOrEqual: "*",
                     status: "unaffected",
                     version: "6.7",
                     versionType: "original_commit_for_fix",
                  },
               ],
            },
         ],
         descriptions: [
            {
               lang: "en",
               value: "In the Linux kernel, the following vulnerability has been resolved:\n\npadata: Fix refcnt handling in padata_free_shell()\n\nIn a high-load arm64 environment, the pcrypt_aead01 test in LTP can lead\nto system UAF (Use-After-Free) issues. Due to the lengthy analysis of\nthe pcrypt_aead01 function call, I'll describe the problem scenario\nusing a simplified model:\n\nSuppose there's a user of padata named `user_function` that adheres to\nthe padata requirement of calling `padata_free_shell` after `serial()`\nhas been invoked, as demonstrated in the following code:\n\n```c\nstruct request {\n    struct padata_priv padata;\n    struct completion *done;\n};\n\nvoid parallel(struct padata_priv *padata) {\n    do_something();\n}\n\nvoid serial(struct padata_priv *padata) {\n    struct request *request = container_of(padata,\n    \t\t\t\tstruct request,\n\t\t\t\tpadata);\n    complete(request->done);\n}\n\nvoid user_function() {\n    DECLARE_COMPLETION(done)\n    padata->parallel = parallel;\n    padata->serial = serial;\n    padata_do_parallel();\n    wait_for_completion(&done);\n    padata_free_shell();\n}\n```\n\nIn the corresponding padata.c file, there's the following code:\n\n```c\nstatic void padata_serial_worker(struct work_struct *serial_work) {\n    ...\n    cnt = 0;\n\n    while (!list_empty(&local_list)) {\n        ...\n        padata->serial(padata);\n        cnt++;\n    }\n\n    local_bh_enable();\n\n    if (refcount_sub_and_test(cnt, &pd->refcnt))\n        padata_free_pd(pd);\n}\n```\n\nBecause of the high system load and the accumulation of unexecuted\nsoftirq at this moment, `local_bh_enable()` in padata takes longer\nto execute than usual. Subsequently, when accessing `pd->refcnt`,\n`pd` has already been released by `padata_free_shell()`, resulting\nin a UAF issue with `pd->refcnt`.\n\nThe fix is straightforward: add `refcount_dec_and_test` before calling\n`padata_free_pd` in `padata_free_shell`.",
            },
         ],
         providerMetadata: {
            dateUpdated: "2024-12-19T08:27:15.508Z",
            orgId: "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            shortName: "Linux",
         },
         references: [
            {
               url: "https://git.kernel.org/stable/c/41aad9d6953984d134fc50f631f24ef476875d4d",
            },
            {
               url: "https://git.kernel.org/stable/c/0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5",
            },
            {
               url: "https://git.kernel.org/stable/c/c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275",
            },
            {
               url: "https://git.kernel.org/stable/c/1e901bcb8af19416b65f5063a4af7996e5a51d7f",
            },
            {
               url: "https://git.kernel.org/stable/c/1734a79e951914f1db2c65e635012a35db1c674b",
            },
            {
               url: "https://git.kernel.org/stable/c/7ddc21e317b360c3444de3023bcc83b85fabae2f",
            },
         ],
         title: "padata: Fix refcnt handling in padata_free_shell()",
         x_generator: {
            engine: "bippy-5f407fcff5a0",
         },
      },
   },
   cveMetadata: {
      assignerOrgId: "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      assignerShortName: "Linux",
      cveId: "CVE-2023-52854",
      datePublished: "2024-05-21T15:31:49.235Z",
      dateReserved: "2024-05-21T15:19:24.256Z",
      dateUpdated: "2024-12-19T08:27:15.508Z",
      state: "PUBLISHED",
   },
   dataType: "CVE_RECORD",
   dataVersion: "5.1",
   "vulnerability-lookup:meta": {
      nvd: "{\"cve\":{\"id\":\"CVE-2023-52854\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-05-21T16:15:22.377\",\"lastModified\":\"2025-02-03T16:13:08.960\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\npadata: Fix refcnt handling in padata_free_shell()\\n\\nIn a high-load arm64 environment, the pcrypt_aead01 test in LTP can lead\\nto system UAF (Use-After-Free) issues. Due to the lengthy analysis of\\nthe pcrypt_aead01 function call, I'll describe the problem scenario\\nusing a simplified model:\\n\\nSuppose there's a user of padata named `user_function` that adheres to\\nthe padata requirement of calling `padata_free_shell` after `serial()`\\nhas been invoked, as demonstrated in the following code:\\n\\n```c\\nstruct request {\\n    struct padata_priv padata;\\n    struct completion *done;\\n};\\n\\nvoid parallel(struct padata_priv *padata) {\\n    do_something();\\n}\\n\\nvoid serial(struct padata_priv *padata) {\\n    struct request *request = container_of(padata,\\n    \\t\\t\\t\\tstruct request,\\n\\t\\t\\t\\tpadata);\\n    complete(request->done);\\n}\\n\\nvoid user_function() {\\n    DECLARE_COMPLETION(done)\\n    padata->parallel = parallel;\\n    padata->serial = serial;\\n    padata_do_parallel();\\n    wait_for_completion(&done);\\n    padata_free_shell();\\n}\\n```\\n\\nIn the corresponding padata.c file, there's the following code:\\n\\n```c\\nstatic void padata_serial_worker(struct work_struct *serial_work) {\\n    ...\\n    cnt = 0;\\n\\n    while (!list_empty(&local_list)) {\\n        ...\\n        padata->serial(padata);\\n        cnt++;\\n    }\\n\\n    local_bh_enable();\\n\\n    if (refcount_sub_and_test(cnt, &pd->refcnt))\\n        padata_free_pd(pd);\\n}\\n```\\n\\nBecause of the high system load and the accumulation of unexecuted\\nsoftirq at this moment, `local_bh_enable()` in padata takes longer\\nto execute than usual. Subsequently, when accessing `pd->refcnt`,\\n`pd` has already been released by `padata_free_shell()`, resulting\\nin a UAF issue with `pd->refcnt`.\\n\\nThe fix is straightforward: add `refcount_dec_and_test` before calling\\n`padata_free_pd` in `padata_free_shell`.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: padata: corrige el manejo de refcnt en padata_free_shell(). En un entorno arm64 de alta carga, la prueba pcrypt_aead01 en LTP puede provocar problemas de UAF (Use-After-Free) del sistema. Debido al extenso análisis de la llamada a la función pcrypt_aead01, describiré el escenario del problema usando un modelo simplificado: supongamos que hay un usuario de padata llamado `user_function` que cumple con el requisito de padata de llamar a `padata_free_shell` después de `serial()`. ha sido invocado, como se demuestra en el siguiente código: ```c struct request { struct padata_priv padata; finalización de la estructura *hecho; }; void paralelo(struct padata_priv *padata) { hacer_algo(); } void serial(struct padata_priv *padata) { solicitud de estructura *request = container_of(padata, solicitud de estructura, padata); completar(solicitud->hecho); } void user_function() { DECLARE_COMPLETION(hecho) padata->parallel = parallel; padata->serial = serial; padata_do_parallel(); wait_for_completion(&hecho); padata_free_shell(); } ``` En el archivo padata.c correspondiente, hay el siguiente código: ```c static void padata_serial_worker(struct work_struct *serial_work) { ... cnt = 0; while (!list_empty(&local_list)) { ... padata->serial(padata); cnt++; } local_bh_enable(); if (refcount_sub_and_test(cnt, &pd->refcnt)) padata_free_pd(pd); } ``` Debido a la alta carga del sistema y la acumulación de software no ejecutado en este momento, `local_bh_enable()` en padata tarda más de lo habitual en ejecutarse. Posteriormente, al acceder a `pd->refcnt`, `pd` ya ha sido liberado por `padata_free_shell()`, lo que genera un problema de UAF con `pd->refcnt`. La solución es sencilla: agregue `refcount_dec_and_test` antes de llamar a `padata_free_pd` en `padata_free_shell`.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-416\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"3.16.84\",\"versionEndExcluding\":\"3.17\",\"matchCriteriaId\":\"04270E31-70AC-4AF3-9072-2B0D2B4AF674\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.4.215\",\"versionEndExcluding\":\"4.5\",\"matchCriteriaId\":\"2E234F5F-73BF-40B3-8B72-04A9358453C8\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.9.215\",\"versionEndExcluding\":\"4.10\",\"matchCriteriaId\":\"71F6952C-9E92-4DD4-B6A6-4B7BCC874288\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.14.172\",\"versionEndExcluding\":\"4.15\",\"matchCriteriaId\":\"35D52B0E-248A-42A0-B3C9-78EB65C172A6\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.19.103\",\"versionEndExcluding\":\"4.20\",\"matchCriteriaId\":\"9A00E397-9719-4A33-9898-4062ED92C311\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.4.19\",\"versionEndExcluding\":\"5.5\",\"matchCriteriaId\":\"F8D27E1D-B88C-4DA9-AA0B-5EE142C053FB\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.5.3\",\"versionEndExcluding\":\"5.10.201\",\"matchCriteriaId\":\"AB058081-871A-435F-9925-7F2B13539E02\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.11\",\"versionEndExcluding\":\"5.15.139\",\"matchCriteriaId\":\"81424D14-B38F-47B3-A1B8-BC3B60BB96EA\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.16\",\"versionEndExcluding\":\"6.1.63\",\"matchCriteriaId\":\"80E1EA7E-2788-466C-9FFB-34AFA1B052F0\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.2\",\"versionEndExcluding\":\"6.5.12\",\"matchCriteriaId\":\"825F64D9-E99F-49AA-8A7B-EF7C2965C5B2\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.6\",\"versionEndExcluding\":\"6.6.2\",\"matchCriteriaId\":\"4CBFF885-A4D3-4F21-B6FD-4D770034C048\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/1734a79e951914f1db2c65e635012a35db1c674b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/1e901bcb8af19416b65f5063a4af7996e5a51d7f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/41aad9d6953984d134fc50f631f24ef476875d4d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/7ddc21e317b360c3444de3023bcc83b85fabae2f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/1734a79e951914f1db2c65e635012a35db1c674b\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/1e901bcb8af19416b65f5063a4af7996e5a51d7f\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/41aad9d6953984d134fc50f631f24ef476875d4d\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/7ddc21e317b360c3444de3023bcc83b85fabae2f\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]}]}}",
      vulnrichment: {
         containers: "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/41aad9d6953984d134fc50f631f24ef476875d4d\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/1e901bcb8af19416b65f5063a4af7996e5a51d7f\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/1734a79e951914f1db2c65e635012a35db1c674b\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/7ddc21e317b360c3444de3023bcc83b85fabae2f\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T23:11:36.064Z\"}}, {\"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2023-52854\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-05-22T18:22:41.019729Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-05-23T19:01:25.632Z\"}, \"title\": \"CISA ADP Vulnrichment\"}], \"cna\": {\"title\": \"padata: Fix refcnt handling in padata_free_shell()\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"07928d9bfc81\", \"lessThan\": \"41aad9d69539\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"07928d9bfc81\", \"lessThan\": \"0dd34a7ad395\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"07928d9bfc81\", \"lessThan\": \"c7c26d0ef5d2\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"07928d9bfc81\", \"lessThan\": \"1e901bcb8af1\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"07928d9bfc81\", \"lessThan\": \"1734a79e9519\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"07928d9bfc81\", \"lessThan\": \"7ddc21e317b3\", \"versionType\": \"git\"}], \"programFiles\": [\"kernel/padata.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.6\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.6\", \"versionType\": \"custom\"}, {\"status\": \"unaffected\", \"version\": \"5.10.201\", \"versionType\": \"custom\", \"lessThanOrEqual\": \"5.10.*\"}, {\"status\": \"unaffected\", \"version\": \"5.15.139\", \"versionType\": \"custom\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"6.1.63\", \"versionType\": \"custom\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.5.12\", \"versionType\": \"custom\", \"lessThanOrEqual\": \"6.5.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.2\", \"versionType\": \"custom\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"kernel/padata.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/41aad9d6953984d134fc50f631f24ef476875d4d\"}, {\"url\": \"https://git.kernel.org/stable/c/0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5\"}, {\"url\": \"https://git.kernel.org/stable/c/c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275\"}, {\"url\": \"https://git.kernel.org/stable/c/1e901bcb8af19416b65f5063a4af7996e5a51d7f\"}, {\"url\": \"https://git.kernel.org/stable/c/1734a79e951914f1db2c65e635012a35db1c674b\"}, {\"url\": \"https://git.kernel.org/stable/c/7ddc21e317b360c3444de3023bcc83b85fabae2f\"}], \"x_generator\": {\"engine\": \"bippy-a5840b7849dd\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\npadata: Fix refcnt handling in padata_free_shell()\\n\\nIn a high-load arm64 environment, the pcrypt_aead01 test in LTP can lead\\nto system UAF (Use-After-Free) issues. Due to the lengthy analysis of\\nthe pcrypt_aead01 function call, I'll describe the problem scenario\\nusing a simplified model:\\n\\nSuppose there's a user of padata named `user_function` that adheres to\\nthe padata requirement of calling `padata_free_shell` after `serial()`\\nhas been invoked, as demonstrated in the following code:\\n\\n```c\\nstruct request {\\n    struct padata_priv padata;\\n    struct completion *done;\\n};\\n\\nvoid parallel(struct padata_priv *padata) {\\n    do_something();\\n}\\n\\nvoid serial(struct padata_priv *padata) {\\n    struct request *request = container_of(padata,\\n    \\t\\t\\t\\tstruct request,\\n\\t\\t\\t\\tpadata);\\n    complete(request->done);\\n}\\n\\nvoid user_function() {\\n    DECLARE_COMPLETION(done)\\n    padata->parallel = parallel;\\n    padata->serial = serial;\\n    padata_do_parallel();\\n    wait_for_completion(&done);\\n    padata_free_shell();\\n}\\n```\\n\\nIn the corresponding padata.c file, there's the following code:\\n\\n```c\\nstatic void padata_serial_worker(struct work_struct *serial_work) {\\n    ...\\n    cnt = 0;\\n\\n    while (!list_empty(&local_list)) {\\n        ...\\n        padata->serial(padata);\\n        cnt++;\\n    }\\n\\n    local_bh_enable();\\n\\n    if (refcount_sub_and_test(cnt, &pd->refcnt))\\n        padata_free_pd(pd);\\n}\\n```\\n\\nBecause of the high system load and the accumulation of unexecuted\\nsoftirq at this moment, `local_bh_enable()` in padata takes longer\\nto execute than usual. Subsequently, when accessing `pd->refcnt`,\\n`pd` has already been released by `padata_free_shell()`, resulting\\nin a UAF issue with `pd->refcnt`.\\n\\nThe fix is straightforward: add `refcount_dec_and_test` before calling\\n`padata_free_pd` in `padata_free_shell`.\"}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2024-05-29T05:18:30.184Z\"}}}",
         cveMetadata: "{\"cveId\": \"CVE-2023-52854\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2024-08-02T23:11:36.064Z\", \"dateReserved\": \"2024-05-21T15:19:24.256Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-21T15:31:49.235Z\", \"assignerShortName\": \"Linux\"}",
         dataType: "CVE_RECORD",
         dataVersion: "5.1",
      },
   },
}


Log in or create an account to share your comment.

Security Advisory comment format.

This schema specifies the format of a comment related to a security advisory.

UUIDv4 of the comment
UUIDv4 of the Vulnerability-Lookup instance
When the comment was created originally
When the comment was last updated
Title of the comment
Description of the comment
The identifier of the vulnerability (CVE ID, GHSA-ID, PYSEC ID, etc.).



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.