cve-2021-47097
Vulnerability from cvelistv5
Published
2024-03-04 18:10
Modified
2024-08-04 05:24
Severity
Summary
Input: elantech - fix stack out of bound access in elantech_change_report_id()
Impacted products
VendorProduct
LinuxLinux
LinuxLinux
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2021-47097",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-03-06T20:23:43.853175Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:14:19.316Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:24:39.882Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/a7f95328c6f0afffdc4555f16e3bbab8bbf0d9be"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/676c572439e58b7ee6b7ca3f1e5595382921045c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/dfd5b60b5342b6b505a104e48f08ad9b9bdbbd7b"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/1d72d9f960ccf1052a0630a68c3d358791dbdaaa"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/input/mouse/elantech.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a7f95328c6f0",
              "status": "affected",
              "version": "9e4815cf1785",
              "versionType": "git"
            },
            {
              "lessThan": "676c572439e5",
              "status": "affected",
              "version": "dde807b4a442",
              "versionType": "git"
            },
            {
              "lessThan": "dfd5b60b5342",
              "status": "affected",
              "version": "e4c9062717fe",
              "versionType": "git"
            },
            {
              "lessThan": "1d72d9f960cc",
              "status": "affected",
              "version": "e4c9062717fe",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/input/mouse/elantech.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.11"
            },
            {
              "lessThan": "5.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.169",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.89",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.12",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.16",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nInput: elantech - fix stack out of bound access in elantech_change_report_id()\n\nThe array param[] in elantech_change_report_id() must be at least 3\nbytes, because elantech_read_reg_params() is calling ps2_command() with\nPSMOUSE_CMD_GETINFO, that is going to access 3 bytes from param[], but\nit\u0027s defined in the stack as an array of 2 bytes, therefore we have a\npotential stack out-of-bounds access here, also confirmed by KASAN:\n\n[    6.512374] BUG: KASAN: stack-out-of-bounds in __ps2_command+0x372/0x7e0\n[    6.512397] Read of size 1 at addr ffff8881024d77c2 by task kworker/2:1/118\n\n[    6.512416] CPU: 2 PID: 118 Comm: kworker/2:1 Not tainted 5.13.0-22-generic #22+arighi20211110\n[    6.512428] Hardware name: LENOVO 20T8000QGE/20T8000QGE, BIOS R1AET32W (1.08 ) 08/14/2020\n[    6.512436] Workqueue: events_long serio_handle_event\n[    6.512453] Call Trace:\n[    6.512462]  show_stack+0x52/0x58\n[    6.512474]  dump_stack+0xa1/0xd3\n[    6.512487]  print_address_description.constprop.0+0x1d/0x140\n[    6.512502]  ? __ps2_command+0x372/0x7e0\n[    6.512516]  __kasan_report.cold+0x7d/0x112\n[    6.512527]  ? _raw_write_lock_irq+0x20/0xd0\n[    6.512539]  ? __ps2_command+0x372/0x7e0\n[    6.512552]  kasan_report+0x3c/0x50\n[    6.512564]  __asan_load1+0x6a/0x70\n[    6.512575]  __ps2_command+0x372/0x7e0\n[    6.512589]  ? ps2_drain+0x240/0x240\n[    6.512601]  ? dev_printk_emit+0xa2/0xd3\n[    6.512612]  ? dev_vprintk_emit+0xc5/0xc5\n[    6.512621]  ? __kasan_check_write+0x14/0x20\n[    6.512634]  ? mutex_lock+0x8f/0xe0\n[    6.512643]  ? __mutex_lock_slowpath+0x20/0x20\n[    6.512655]  ps2_command+0x52/0x90\n[    6.512670]  elantech_ps2_command+0x4f/0xc0 [psmouse]\n[    6.512734]  elantech_change_report_id+0x1e6/0x256 [psmouse]\n[    6.512799]  ? elantech_report_trackpoint.constprop.0.cold+0xd/0xd [psmouse]\n[    6.512863]  ? ps2_command+0x7f/0x90\n[    6.512877]  elantech_query_info.cold+0x6bd/0x9ed [psmouse]\n[    6.512943]  ? elantech_setup_ps2+0x460/0x460 [psmouse]\n[    6.513005]  ? psmouse_reset+0x69/0xb0 [psmouse]\n[    6.513064]  ? psmouse_attr_set_helper+0x2a0/0x2a0 [psmouse]\n[    6.513122]  ? phys_pmd_init+0x30e/0x521\n[    6.513137]  elantech_init+0x8a/0x200 [psmouse]\n[    6.513200]  ? elantech_init_ps2+0xf0/0xf0 [psmouse]\n[    6.513249]  ? elantech_query_info+0x440/0x440 [psmouse]\n[    6.513296]  ? synaptics_send_cmd+0x60/0x60 [psmouse]\n[    6.513342]  ? elantech_query_info+0x440/0x440 [psmouse]\n[    6.513388]  ? psmouse_try_protocol+0x11e/0x170 [psmouse]\n[    6.513432]  psmouse_extensions+0x65d/0x6e0 [psmouse]\n[    6.513476]  ? psmouse_try_protocol+0x170/0x170 [psmouse]\n[    6.513519]  ? mutex_unlock+0x22/0x40\n[    6.513526]  ? ps2_command+0x7f/0x90\n[    6.513536]  ? psmouse_probe+0xa3/0xf0 [psmouse]\n[    6.513580]  psmouse_switch_protocol+0x27d/0x2e0 [psmouse]\n[    6.513624]  psmouse_connect+0x272/0x530 [psmouse]\n[    6.513669]  serio_driver_probe+0x55/0x70\n[    6.513679]  really_probe+0x190/0x720\n[    6.513689]  driver_probe_device+0x160/0x1f0\n[    6.513697]  device_driver_attach+0x119/0x130\n[    6.513705]  ? device_driver_attach+0x130/0x130\n[    6.513713]  __driver_attach+0xe7/0x1a0\n[    6.513720]  ? device_driver_attach+0x130/0x130\n[    6.513728]  bus_for_each_dev+0xfb/0x150\n[    6.513738]  ? subsys_dev_iter_exit+0x10/0x10\n[    6.513748]  ? _raw_write_unlock_bh+0x30/0x30\n[    6.513757]  driver_attach+0x2d/0x40\n[    6.513764]  serio_handle_event+0x199/0x3d0\n[    6.513775]  process_one_work+0x471/0x740\n[    6.513785]  worker_thread+0x2d2/0x790\n[    6.513794]  ? process_one_work+0x740/0x740\n[    6.513802]  kthread+0x1b4/0x1e0\n[    6.513809]  ? set_kthread_struct+0x80/0x80\n[    6.513816]  ret_from_fork+0x22/0x30\n\n[    6.513832] The buggy address belongs to the page:\n[    6.513838] page:00000000bc35e189 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1024d7\n[    6.513847] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)\n[    6.513860] raw: 0\n---truncated---"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2024-05-29T05:02:02.164Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a7f95328c6f0afffdc4555f16e3bbab8bbf0d9be"
        },
        {
          "url": "https://git.kernel.org/stable/c/676c572439e58b7ee6b7ca3f1e5595382921045c"
        },
        {
          "url": "https://git.kernel.org/stable/c/dfd5b60b5342b6b505a104e48f08ad9b9bdbbd7b"
        },
        {
          "url": "https://git.kernel.org/stable/c/1d72d9f960ccf1052a0630a68c3d358791dbdaaa"
        }
      ],
      "title": "Input: elantech - fix stack out of bound access in elantech_change_report_id()",
      "x_generator": {
        "engine": "bippy-a5840b7849dd"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47097",
    "datePublished": "2024-03-04T18:10:49.194Z",
    "dateReserved": "2024-02-29T22:33:44.301Z",
    "dateUpdated": "2024-08-04T05:24:39.882Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2021-47097\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-03-04T18:15:08.017\",\"lastModified\":\"2024-03-05T13:41:01.900\",\"vulnStatus\":\"Awaiting Analysis\",\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nInput: elantech - fix stack out of bound access in elantech_change_report_id()\\n\\nThe array param[] in elantech_change_report_id() must be at least 3\\nbytes, because elantech_read_reg_params() is calling ps2_command() with\\nPSMOUSE_CMD_GETINFO, that is going to access 3 bytes from param[], but\\nit\u0027s defined in the stack as an array of 2 bytes, therefore we have a\\npotential stack out-of-bounds access here, also confirmed by KASAN:\\n\\n[    6.512374] BUG: KASAN: stack-out-of-bounds in __ps2_command+0x372/0x7e0\\n[    6.512397] Read of size 1 at addr ffff8881024d77c2 by task kworker/2:1/118\\n\\n[    6.512416] CPU: 2 PID: 118 Comm: kworker/2:1 Not tainted 5.13.0-22-generic #22+arighi20211110\\n[    6.512428] Hardware name: LENOVO 20T8000QGE/20T8000QGE, BIOS R1AET32W (1.08 ) 08/14/2020\\n[    6.512436] Workqueue: events_long serio_handle_event\\n[    6.512453] Call Trace:\\n[    6.512462]  show_stack+0x52/0x58\\n[    6.512474]  dump_stack+0xa1/0xd3\\n[    6.512487]  print_address_description.constprop.0+0x1d/0x140\\n[    6.512502]  ? __ps2_command+0x372/0x7e0\\n[    6.512516]  __kasan_report.cold+0x7d/0x112\\n[    6.512527]  ? _raw_write_lock_irq+0x20/0xd0\\n[    6.512539]  ? __ps2_command+0x372/0x7e0\\n[    6.512552]  kasan_report+0x3c/0x50\\n[    6.512564]  __asan_load1+0x6a/0x70\\n[    6.512575]  __ps2_command+0x372/0x7e0\\n[    6.512589]  ? ps2_drain+0x240/0x240\\n[    6.512601]  ? dev_printk_emit+0xa2/0xd3\\n[    6.512612]  ? dev_vprintk_emit+0xc5/0xc5\\n[    6.512621]  ? __kasan_check_write+0x14/0x20\\n[    6.512634]  ? mutex_lock+0x8f/0xe0\\n[    6.512643]  ? __mutex_lock_slowpath+0x20/0x20\\n[    6.512655]  ps2_command+0x52/0x90\\n[    6.512670]  elantech_ps2_command+0x4f/0xc0 [psmouse]\\n[    6.512734]  elantech_change_report_id+0x1e6/0x256 [psmouse]\\n[    6.512799]  ? elantech_report_trackpoint.constprop.0.cold+0xd/0xd [psmouse]\\n[    6.512863]  ? ps2_command+0x7f/0x90\\n[    6.512877]  elantech_query_info.cold+0x6bd/0x9ed [psmouse]\\n[    6.512943]  ? elantech_setup_ps2+0x460/0x460 [psmouse]\\n[    6.513005]  ? psmouse_reset+0x69/0xb0 [psmouse]\\n[    6.513064]  ? psmouse_attr_set_helper+0x2a0/0x2a0 [psmouse]\\n[    6.513122]  ? phys_pmd_init+0x30e/0x521\\n[    6.513137]  elantech_init+0x8a/0x200 [psmouse]\\n[    6.513200]  ? elantech_init_ps2+0xf0/0xf0 [psmouse]\\n[    6.513249]  ? elantech_query_info+0x440/0x440 [psmouse]\\n[    6.513296]  ? synaptics_send_cmd+0x60/0x60 [psmouse]\\n[    6.513342]  ? elantech_query_info+0x440/0x440 [psmouse]\\n[    6.513388]  ? psmouse_try_protocol+0x11e/0x170 [psmouse]\\n[    6.513432]  psmouse_extensions+0x65d/0x6e0 [psmouse]\\n[    6.513476]  ? psmouse_try_protocol+0x170/0x170 [psmouse]\\n[    6.513519]  ? mutex_unlock+0x22/0x40\\n[    6.513526]  ? ps2_command+0x7f/0x90\\n[    6.513536]  ? psmouse_probe+0xa3/0xf0 [psmouse]\\n[    6.513580]  psmouse_switch_protocol+0x27d/0x2e0 [psmouse]\\n[    6.513624]  psmouse_connect+0x272/0x530 [psmouse]\\n[    6.513669]  serio_driver_probe+0x55/0x70\\n[    6.513679]  really_probe+0x190/0x720\\n[    6.513689]  driver_probe_device+0x160/0x1f0\\n[    6.513697]  device_driver_attach+0x119/0x130\\n[    6.513705]  ? device_driver_attach+0x130/0x130\\n[    6.513713]  __driver_attach+0xe7/0x1a0\\n[    6.513720]  ? device_driver_attach+0x130/0x130\\n[    6.513728]  bus_for_each_dev+0xfb/0x150\\n[    6.513738]  ? subsys_dev_iter_exit+0x10/0x10\\n[    6.513748]  ? _raw_write_unlock_bh+0x30/0x30\\n[    6.513757]  driver_attach+0x2d/0x40\\n[    6.513764]  serio_handle_event+0x199/0x3d0\\n[    6.513775]  process_one_work+0x471/0x740\\n[    6.513785]  worker_thread+0x2d2/0x790\\n[    6.513794]  ? process_one_work+0x740/0x740\\n[    6.513802]  kthread+0x1b4/0x1e0\\n[    6.513809]  ? set_kthread_struct+0x80/0x80\\n[    6.513816]  ret_from_fork+0x22/0x30\\n\\n[    6.513832] The buggy address belongs to the page:\\n[    6.513838] page:00000000bc35e189 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1024d7\\n[    6.513847] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)\\n[    6.513860] raw: 0\\n---truncated---\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: Entrada: elantech - arregla la pila fuera del acceso limitado en elantech_change_report_id() El par\u00e1metro de matriz[] en elantech_change_report_id() debe tener al menos 3 bytes, porque elantech_read_reg_params() est\u00e1 llamando a ps2_command( ) con PSMOUSE_CMD_GETINFO, que acceder\u00e1 a 3 bytes desde param[], pero est\u00e1 definido en la pila como una matriz de 2 bytes, por lo tanto, aqu\u00ed tenemos un posible acceso fuera de los l\u00edmites a la pila, tambi\u00e9n confirmado por KASAN: [6.512374 ] ERROR: KASAN: pila fuera de los l\u00edmites en __ps2_command+0x372/0x7e0 [6.512397] Lectura del tama\u00f1o 1 en la direcci\u00f3n ffff8881024d77c2 por tarea kworker/2:1/118 [6.512416] CPU: 2 PID: 118 Comm: kworker/ 2:1 No contaminado 5.13.0-22-generic #22+arighi20211110 [6.512428] Nombre de hardware: LENOVO 20T8000QGE/20T8000QGE, BIOS R1AET32W (1.08) 14/08/2020 [6.512436] Cola de trabajo: events_long serio_handle_even t [6.512453] Seguimiento de llamadas: [6.512462] show_stack+0x52/0x58 [6.512474] dump_stack+0xa1/0xd3 [6.512487] print_address_description.constprop.0+0x1d/0x140 [6.512502]? __ps2_command+0x372/0x7e0 [6.512516] __kasan_report.cold+0x7d/0x112 [6.512527] ? _raw_write_lock_irq+0x20/0xd0 [6.512539]? __ps2_command+0x372/0x7e0 [ 6.512552] kasan_report+0x3c/0x50 [ 6.512564] __asan_load1+0x6a/0x70 [ 6.512575] __ps2_command+0x372/0x7e0 [ 6.512589] ? ps2_drain+0x240/0x240 [6.512601]? dev_printk_emit+0xa2/0xd3 [6.512612]? dev_vprintk_emit+0xc5/0xc5 [6.512621]? __kasan_check_write+0x14/0x20 [6.512634]? mutex_lock+0x8f/0xe0 [6.512643]? __mutex_lock_slowpath+0x20/0x20 [ 6.512655] ps2_command+0x52/0x90 [ 6.512670] elantech_ps2_command+0x4f/0xc0 [psmouse] [ 6.512734] elantech_change_report_id+0x1e6/0x256 [psmouse] [ 6.512799] ? elantech_report_trackpoint.constprop.0.cold+0xd/0xd [psmouse] [6.512863]? ps2_command+0x7f/0x90 [6.512877] elantech_query_info.cold+0x6bd/0x9ed [psmouse] [6.512943] ? elantech_setup_ps2+0x460/0x460 [psmouse] [6.513005]? psmouse_reset+0x69/0xb0 [psmouse] [6.513064]? psmouse_attr_set_helper+0x2a0/0x2a0 [psmouse] [6.513122]? phys_pmd_init+0x30e/0x521 [6.513137] elantech_init+0x8a/0x200 [psmouse] [6.513200]? elantech_init_ps2+0xf0/0xf0 [psmouse] [6.513249]? elantech_query_info+0x440/0x440 [psmouse] [6.513296]? synaptics_send_cmd+0x60/0x60 [psmouse] [6.513342]? elantech_query_info+0x440/0x440 [psmouse] [6.513388]? psmouse_try_protocol+0x11e/0x170 [psmouse] [6.513432] psmouse_extensions+0x65d/0x6e0 [psmouse] [6.513476]? psmouse_try_protocol+0x170/0x170 [psmouse] [6.513519]? mutex_unlock+0x22/0x40 [6.513526]? ps2_command+0x7f/0x90 [6.513536]? psmouse_probe+0xa3/0xf0 [psmouse] [ 6.513580] psmouse_switch_protocol+0x27d/0x2e0 [psmouse] [ 6.513624] psmouse_connect+0x272/0x530 [psmouse] [ 6.513669] serio_driver_probe+0x55/0x70 [ 6.513679] realmente_probe+0x190/0x720 [ 6.513689] driver_probe_device +0x160/0x1f0 [6.513697] dispositivo_driver_attach+0x119/0x130 [6.513705] ? dispositivo_driver_attach+0x130/0x130 [6.513713] __driver_attach+0xe7/0x1a0 [6.513720]? device_driver_attach+0x130/0x130 [6.513728] bus_for_each_dev+0xfb/0x150 [6.513738]? subsys_dev_iter_exit+0x10/0x10 [6.513748]? _raw_write_unlock_bh+0x30/0x30 [ 6.513757] driver_attach+0x2d/0x40 [ 6.513764] serio_handle_event+0x199/0x3d0 [ 6.513775] Process_one_work+0x471/0x740 [ 6.513785] trabajador_thread+0x2d2 /0x790 [6.513794] ? Process_one_work+0x740/0x740 [6.513802] kthread+0x1b4/0x1e0 [6.513809]? set_kthread_struct+0x80/0x80 [6.513816] ret_from_fork+0x22/0x30 [6.513832] La direcci\u00f3n del error pertenece a la p\u00e1gina: [6.513838] p\u00e1gina:00000000bc35e189 refcount:0 mapcount:0 mapeo:0000000000000000 index:0x0 pfn:0x1024d7 [6.513847] banderas: 0x17ffffc0000000(nodo=0|zona=2|lastcpupid=0x1fffff) [6.513860] sin procesar: 0\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1d72d9f960ccf1052a0630a68c3d358791dbdaaa\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/676c572439e58b7ee6b7ca3f1e5595382921045c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/a7f95328c6f0afffdc4555f16e3bbab8bbf0d9be\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/dfd5b60b5342b6b505a104e48f08ad9b9bdbbd7b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading...

Loading...