cve-2022-49648
Vulnerability from cvelistv5
Published
2025-02-26 02:23
Modified
2025-05-04 12:45
Severity ?
Summary
tracing/histograms: Fix memory leak problem
Impacted products
LinuxLinux
LinuxLinux
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "kernel/trace/trace_events_hist.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "eb622d5580b9e2ff694f62da6410618bd73853cb",
              "status": "affected",
              "version": "240dd5118a9e0454f280ffeae63f22bd14735733",
              "versionType": "git"
            },
            {
              "lessThan": "ecc6dec12c33aa92c086cd702af9f544ddaf3c75",
              "status": "affected",
              "version": "e92c490f104993cea35e5f5d5108ac12df1850ac",
              "versionType": "git"
            },
            {
              "lessThan": "78a1400c42ee11197eb1f0f85ba51df9a4fdfff0",
              "status": "affected",
              "version": "46bbe5c671e06f070428b9be142cc4ee5cedebac",
              "versionType": "git"
            },
            {
              "lessThan": "22eeff55679d9e7c0f768c79bfbd83e2f8142d89",
              "status": "affected",
              "version": "46bbe5c671e06f070428b9be142cc4ee5cedebac",
              "versionType": "git"
            },
            {
              "lessThan": "4d453eb5e1eec89971aa5b3262857ee26cfdffd3",
              "status": "affected",
              "version": "46bbe5c671e06f070428b9be142cc4ee5cedebac",
              "versionType": "git"
            },
            {
              "lessThan": "7edc3945bdce9c39198a10d6129377a5c53559c2",
              "status": "affected",
              "version": "46bbe5c671e06f070428b9be142cc4ee5cedebac",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "e3a23511638a3dcf0275c1e71a46d1ca2e2e6788",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "kernel/trace/trace_events_hist.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.9"
            },
            {
              "lessThan": "5.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.19.*",
              "status": "unaffected",
              "version": "4.19.253",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.207",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.132",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.56",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.18.*",
              "status": "unaffected",
              "version": "5.18.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.19",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.19.253",
                  "versionStartIncluding": "4.19.149",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.207",
                  "versionStartIncluding": "5.4.69",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.132",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.56",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.18.13",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.19",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.8.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntracing/histograms: Fix memory leak problem\n\nThis reverts commit 46bbe5c671e06f070428b9be142cc4ee5cedebac.\n\nAs commit 46bbe5c671e0 (\"tracing: fix double free\") said, the\n\"double free\" problem reported by clang static analyzer is:\n  \u003e In parse_var_defs() if there is a problem allocating\n  \u003e var_defs.expr, the earlier var_defs.name is freed.\n  \u003e This free is duplicated by free_var_defs() which frees\n  \u003e the rest of the list.\n\nHowever, if there is a problem allocating N-th var_defs.expr:\n  + in parse_var_defs(), the freed \u0027earlier var_defs.name\u0027 is\n    actually the N-th var_defs.name;\n  + then in free_var_defs(), the names from 0th to (N-1)-th are freed;\n\n                        IF ALLOCATING PROBLEM HAPPENED HERE!!! -+\n                                                                 \\\n                                                                  |\n          0th           1th                 (N-1)-th      N-th    V\n          +-------------+-------------+-----+-------------+-----------\nvar_defs: | name | expr | name | expr | ... | name | expr | name | ///\n          +-------------+-------------+-----+-------------+-----------\n\nThese two frees don\u0027t act on same name, so there was no \"double free\"\nproblem before. Conversely, after that commit, we get a \"memory leak\"\nproblem because the above \"N-th var_defs.name\" is not freed.\n\nIf enable CONFIG_DEBUG_KMEMLEAK and inject a fault at where the N-th\nvar_defs.expr allocated, then execute on shell like:\n  $ echo \u0027hist:key=call_site:val=$v1,$v2:v1=bytes_req,v2=bytes_alloc\u0027 \u003e \\\n/sys/kernel/debug/tracing/events/kmem/kmalloc/trigger\n\nThen kmemleak reports:\n  unreferenced object 0xffff8fb100ef3518 (size 8):\n    comm \"bash\", pid 196, jiffies 4295681690 (age 28.538s)\n    hex dump (first 8 bytes):\n      76 31 00 00 b1 8f ff ff                          v1......\n    backtrace:\n      [\u003c0000000038fe4895\u003e] kstrdup+0x2d/0x60\n      [\u003c00000000c99c049a\u003e] event_hist_trigger_parse+0x206f/0x20e0\n      [\u003c00000000ae70d2cc\u003e] trigger_process_regex+0xc0/0x110\n      [\u003c0000000066737a4c\u003e] event_trigger_write+0x75/0xd0\n      [\u003c000000007341e40c\u003e] vfs_write+0xbb/0x2a0\n      [\u003c0000000087fde4c2\u003e] ksys_write+0x59/0xd0\n      [\u003c00000000581e9cdf\u003e] do_syscall_64+0x3a/0x80\n      [\u003c00000000cf3b065c\u003e] entry_SYSCALL_64_after_hwframe+0x46/0xb0"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-05-04T12:45:02.459Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/eb622d5580b9e2ff694f62da6410618bd73853cb"
        },
        {
          "url": "https://git.kernel.org/stable/c/ecc6dec12c33aa92c086cd702af9f544ddaf3c75"
        },
        {
          "url": "https://git.kernel.org/stable/c/78a1400c42ee11197eb1f0f85ba51df9a4fdfff0"
        },
        {
          "url": "https://git.kernel.org/stable/c/22eeff55679d9e7c0f768c79bfbd83e2f8142d89"
        },
        {
          "url": "https://git.kernel.org/stable/c/4d453eb5e1eec89971aa5b3262857ee26cfdffd3"
        },
        {
          "url": "https://git.kernel.org/stable/c/7edc3945bdce9c39198a10d6129377a5c53559c2"
        }
      ],
      "title": "tracing/histograms: Fix memory leak problem",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-49648",
    "datePublished": "2025-02-26T02:23:52.035Z",
    "dateReserved": "2025-02-26T02:21:30.432Z",
    "dateUpdated": "2025-05-04T12:45:02.459Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2022-49648\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-02-26T07:01:39.957\",\"lastModified\":\"2025-03-11T22:35:11.613\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ntracing/histograms: Fix memory leak problem\\n\\nThis reverts commit 46bbe5c671e06f070428b9be142cc4ee5cedebac.\\n\\nAs commit 46bbe5c671e0 (\\\"tracing: fix double free\\\") said, the\\n\\\"double free\\\" problem reported by clang static analyzer is:\\n  \u003e In parse_var_defs() if there is a problem allocating\\n  \u003e var_defs.expr, the earlier var_defs.name is freed.\\n  \u003e This free is duplicated by free_var_defs() which frees\\n  \u003e the rest of the list.\\n\\nHowever, if there is a problem allocating N-th var_defs.expr:\\n  + in parse_var_defs(), the freed \u0027earlier var_defs.name\u0027 is\\n    actually the N-th var_defs.name;\\n  + then in free_var_defs(), the names from 0th to (N-1)-th are freed;\\n\\n                        IF ALLOCATING PROBLEM HAPPENED HERE!!! -+\\n                                                                 \\\\\\n                                                                  |\\n          0th           1th                 (N-1)-th      N-th    V\\n          +-------------+-------------+-----+-------------+-----------\\nvar_defs: | name | expr | name | expr | ... | name | expr | name | ///\\n          +-------------+-------------+-----+-------------+-----------\\n\\nThese two frees don\u0027t act on same name, so there was no \\\"double free\\\"\\nproblem before. Conversely, after that commit, we get a \\\"memory leak\\\"\\nproblem because the above \\\"N-th var_defs.name\\\" is not freed.\\n\\nIf enable CONFIG_DEBUG_KMEMLEAK and inject a fault at where the N-th\\nvar_defs.expr allocated, then execute on shell like:\\n  $ echo \u0027hist:key=call_site:val=$v1,$v2:v1=bytes_req,v2=bytes_alloc\u0027 \u003e \\\\\\n/sys/kernel/debug/tracing/events/kmem/kmalloc/trigger\\n\\nThen kmemleak reports:\\n  unreferenced object 0xffff8fb100ef3518 (size 8):\\n    comm \\\"bash\\\", pid 196, jiffies 4295681690 (age 28.538s)\\n    hex dump (first 8 bytes):\\n      76 31 00 00 b1 8f ff ff                          v1......\\n    backtrace:\\n      [\u003c0000000038fe4895\u003e] kstrdup+0x2d/0x60\\n      [\u003c00000000c99c049a\u003e] event_hist_trigger_parse+0x206f/0x20e0\\n      [\u003c00000000ae70d2cc\u003e] trigger_process_regex+0xc0/0x110\\n      [\u003c0000000066737a4c\u003e] event_trigger_write+0x75/0xd0\\n      [\u003c000000007341e40c\u003e] vfs_write+0xbb/0x2a0\\n      [\u003c0000000087fde4c2\u003e] ksys_write+0x59/0xd0\\n      [\u003c00000000581e9cdf\u003e] do_syscall_64+0x3a/0x80\\n      [\u003c00000000cf3b065c\u003e] entry_SYSCALL_64_after_hwframe+0x46/0xb0\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: tracing/histograms: Fix memory leak problem Esto revierte el commit 46bbe5c671e06f070428b9be142cc4ee5cedebac. Como dec\u00eda el commit 46bbe5c671e0 (\\\"tracing: fix double free\\\"), el problema de \\\"doble liberaci\u00f3n\\\" informado por el analizador est\u00e1tico de clang es: \u0026gt; En parse_var_defs(), si hay un problema al asignar var_defs.expr, se libera el var_defs.name anterior. \u0026gt; Esta liberaci\u00f3n se duplica mediante free_var_defs(), que libera el resto de la lista. Sin embargo, si hay un problema al asignar la N-\u00e9sima var_defs.expr: + en parse_var_defs(), el \u0027var_defs.name anterior\u0027 liberado es en realidad el N-\u00e9simo var_defs.name; + entonces en free_var_defs(), los nombres del 0 al (N-1)-\u00e9simo se liberan; \u00a1SI SUCEDI\u00d3 UN PROBLEMA DE ASIGNACI\u00d3N AQU\u00cd!!!  -+ \\\\ | 0th 1th (N-1)-th N-th V +-------------+-------------+-----+-------------+----------- var_defs: | name | expr | name | expr | ... | name | expr | name | /// +-------------+-------------+-----+-------------+----------- Estas dos liberaciones no act\u00faan sobre el mismo nombre, por lo que antes no hab\u00eda un problema de \\\"doble liberaci\u00f3n\\\". Por el contrario, despu\u00e9s de esa confirmaci\u00f3n, tenemos un problema de \\\"p\u00e9rdida de memoria\\\" porque el \\\"N-\u00e9simo var_defs.name\\\" anterior no se libera. Si habilita CONFIG_DEBUG_KMEMLEAK e inyecta un error en el lugar donde se asign\u00f3 el N-\u00e9simo var_defs.expr, entonces ejecute en el shell de esta manera: $ echo \u0027hist:key=call_site:val=$v1,$v2:v1=bytes_req,v2=bytes_alloc\u0027 \u0026gt; \\\\ /sys/kernel/debug/tracing/events/kmem/kmalloc/trigger Then kmemleak reports: unreferenced object 0xffff8fb100ef3518 (size 8): comm \\\"bash\\\", pid 196, jiffies 4295681690 (age 28.538s) hex dump (first 8 bytes): 76 31 00 00 b1 8f ff ff v1...... backtrace: [\u0026lt;0000000038fe4895\u0026gt;] kstrdup+0x2d/0x60 [\u0026lt;00000000c99c049a\u0026gt;] event_hist_trigger_parse+0x206f/0x20e0 [\u0026lt;00000000ae70d2cc\u0026gt;] trigger_process_regex+0xc0/0x110 [\u0026lt;0000000066737a4c\u0026gt;] event_trigger_write+0x75/0xd0 [\u0026lt;000000007341e40c\u0026gt;] vfs_write+0xbb/0x2a0 [\u0026lt;0000000087fde4c2\u0026gt;] ksys_write+0x59/0xd0 [\u0026lt;00000000581e9cdf\u0026gt;] do_syscall_64+0x3a/0x80 [\u0026lt;00000000cf3b065c\u0026gt;] entry_SYSCALL_64_after_hwframe+0x46/0xb0 \"}],\"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:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-401\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.19.149\",\"versionEndExcluding\":\"4.19.253\",\"matchCriteriaId\":\"09EE9BBC-7D0D-4330-9AB8-A660909D800A\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.4.69\",\"versionEndExcluding\":\"5.4.207\",\"matchCriteriaId\":\"A61D2E61-AF99-4E32-AB1E-CF7ECE0A15AA\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.8.13\",\"versionEndExcluding\":\"5.10.132\",\"matchCriteriaId\":\"03678599-1EF3-4852-9209-86F4922C0CFF\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.11\",\"versionEndExcluding\":\"5.15.56\",\"matchCriteriaId\":\"AF59CE2F-BA66-4BFD-83AB-4576F3D1B49A\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.16\",\"versionEndExcluding\":\"5.18.13\",\"matchCriteriaId\":\"640221A7-96EE-4B48-8FE1-BA810131789B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:5.19:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"A8C30C2D-F82D-4D37-AB48-D76ABFBD5377\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:5.19:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"BF8547FC-C849-4F1B-804B-A93AE2F04A92\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:5.19:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"F3068028-F453-4A1C-B80F-3F5609ACEF60\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:5.19:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"2E9C0DB0-D349-489F-A3D6-B77214E93A8A\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:5.19:rc5:*:*:*:*:*:*\",\"matchCriteriaId\":\"1A0DE3B7-0FFB-45AA-9BD6-19870CA7C6FD\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:5.19:rc6:*:*:*:*:*:*\",\"matchCriteriaId\":\"00AE778B-BAEE-49EB-9F84-003B73D7862A\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/22eeff55679d9e7c0f768c79bfbd83e2f8142d89\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/4d453eb5e1eec89971aa5b3262857ee26cfdffd3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/78a1400c42ee11197eb1f0f85ba51df9a4fdfff0\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/7edc3945bdce9c39198a10d6129377a5c53559c2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/eb622d5580b9e2ff694f62da6410618bd73853cb\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/ecc6dec12c33aa92c086cd702af9f544ddaf3c75\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading...

Loading...

Loading...
  • 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.