Lucene search

K
cve416baaa9-dc9f-4396-8d5f-8c081fb06d67CVE-2021-47497
HistoryMay 22, 2024 - 9:15 a.m.

CVE-2021-47497

2024-05-2209:15:11
416baaa9-dc9f-4396-8d5f-8c081fb06d67
web.nvd.nist.gov
31
linux kernel
nvmem
vulnerability

6.7 Medium

AI Score

Confidence

Low

0.0004 Low

EPSS

Percentile

13.0%

In the Linux kernel, the following vulnerability has been resolved:

nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells

If a cell has ‘nbits’ equal to a multiple of BITS_PER_BYTE the logic

*p &= GENMASK((cell->nbits%BITS_PER_BYTE) - 1, 0);

will become undefined behavior because nbits modulo BITS_PER_BYTE is 0, and we
subtract one from that making a large number that is then shifted more than the
number of bits that fit into an unsigned long.

UBSAN reports this problem:

UBSAN: shift-out-of-bounds in drivers/nvmem/core.c:1386:8
shift exponent 64 is too large for 64-bit type ‘unsigned long’
CPU: 6 PID: 7 Comm: kworker/u16:0 Not tainted 5.15.0-rc3+ #9
Hardware name: Google Lazor (rev3+) with KB Backlight (DT)
Workqueue: events_unbound deferred_probe_work_func
Call trace:
dump_backtrace+0x0/0x170
show_stack+0x24/0x30
dump_stack_lvl+0x64/0x7c
dump_stack+0x18/0x38
ubsan_epilogue+0x10/0x54
__ubsan_handle_shift_out_of_bounds+0x180/0x194
__nvmem_cell_read+0x1ec/0x21c
nvmem_cell_read+0x58/0x94
nvmem_cell_read_variable_common+0x4c/0xb0
nvmem_cell_read_variable_le_u32+0x40/0x100
a6xx_gpu_init+0x170/0x2f4
adreno_bind+0x174/0x284
component_bind_all+0xf0/0x264
msm_drm_bind+0x1d8/0x7a0
try_to_bring_up_master+0x164/0x1ac
__component_add+0xbc/0x13c
component_add+0x20/0x2c
dp_display_probe+0x340/0x384
platform_probe+0xc0/0x100
really_probe+0x110/0x304
__driver_probe_device+0xb8/0x120
driver_probe_device+0x4c/0xfc
__device_attach_driver+0xb0/0x128
bus_for_each_drv+0x90/0xdc
__device_attach+0xc8/0x174
device_initial_probe+0x20/0x2c
bus_probe_device+0x40/0xa4
deferred_probe_work_func+0x7c/0xb8
process_one_work+0x128/0x21c
process_scheduled_works+0x40/0x54
worker_thread+0x1ec/0x2a8
kthread+0x138/0x158
ret_from_fork+0x10/0x20

Fix it by making sure there are any bits to mask out.

Affected configurations

Vulners
Node
linuxlinux_kernelRange4.34.4.290
OR
linuxlinux_kernelRange4.5.04.9.288
OR
linuxlinux_kernelRange4.10.04.14.252
OR
linuxlinux_kernelRange4.15.04.19.213
OR
linuxlinux_kernelRange4.20.05.4.155
OR
linuxlinux_kernelRange5.5.05.10.75
OR
linuxlinux_kernelRange5.11.05.14.14
OR
linuxlinux_kernelRange5.15.0

CNA Affected

[
  {
    "product": "Linux",
    "vendor": "Linux",
    "defaultStatus": "unaffected",
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "programFiles": [
      "drivers/nvmem/core.c"
    ],
    "versions": [
      {
        "version": "69aba7948cbe",
        "lessThan": "abcb8d33e4d2",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "60df06bbdf49",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "2df6c0230502",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "eb0fc8e7170e",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "0594f1d048d8",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "57e48886401b",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "0e822e5413da",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "69aba7948cbe",
        "lessThan": "5d388fa01fa6",
        "status": "affected",
        "versionType": "git"
      }
    ]
  },
  {
    "product": "Linux",
    "vendor": "Linux",
    "defaultStatus": "affected",
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "programFiles": [
      "drivers/nvmem/core.c"
    ],
    "versions": [
      {
        "version": "4.3",
        "status": "affected"
      },
      {
        "version": "0",
        "lessThan": "4.3",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "4.4.290",
        "lessThanOrEqual": "4.4.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "4.9.288",
        "lessThanOrEqual": "4.9.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "4.14.252",
        "lessThanOrEqual": "4.14.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "4.19.213",
        "lessThanOrEqual": "4.19.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.4.155",
        "lessThanOrEqual": "5.4.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.10.75",
        "lessThanOrEqual": "5.10.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.14.14",
        "lessThanOrEqual": "5.14.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.15",
        "lessThanOrEqual": "*",
        "status": "unaffected",
        "versionType": "original_commit_for_fix"
      }
    ]
  }
]

6.7 Medium

AI Score

Confidence

Low

0.0004 Low

EPSS

Percentile

13.0%