cve-2021-47497
Vulnerability from cvelistv5
Published
2024-05-22 08:19
Modified
2024-08-04 05:39
Severity
Summary
nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells
Impacted products
VendorProduct
LinuxLinux
LinuxLinux
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2021-47497",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-05-22T17:50:37.993929Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:13:32.686Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:39:59.611Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/abcb8d33e4d2215ccde5ab5ccf9f730a59d79d97"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/60df06bbdf497e37ed25ad40572c362e5b0998df"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/2df6c023050205c4d04ffc121bc549f65cb8d1df"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/eb0fc8e7170e61eaf65d28dee4a8baf4e86b19ca"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/0594f1d048d8dc338eb9a240021b1d00ae1eb082"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/57e48886401b14cd351423fabfec2cfd18df4f66"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/0e822e5413da1af28cca350cb1cb42b6133bdcae"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/5d388fa01fa6eb310ac023a363a6cb216d9d8fe9"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvmem/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "abcb8d33e4d2",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "60df06bbdf49",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "2df6c0230502",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "eb0fc8e7170e",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "0594f1d048d8",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "57e48886401b",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "0e822e5413da",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            },
            {
              "lessThan": "5d388fa01fa6",
              "status": "affected",
              "version": "69aba7948cbe",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvmem/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.3"
            },
            {
              "lessThan": "4.3",
              "status": "unaffected",
              "version": "0",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "4.4.*",
              "status": "unaffected",
              "version": "4.4.290",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "4.9.*",
              "status": "unaffected",
              "version": "4.9.288",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "4.14.*",
              "status": "unaffected",
              "version": "4.14.252",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "4.19.*",
              "status": "unaffected",
              "version": "4.19.213",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.155",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.75",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "5.14.*",
              "status": "unaffected",
              "version": "5.14.14",
              "versionType": "custom"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvmem: Fix shift-out-of-bound (UBSAN) with byte size cells\n\nIf a cell has \u0027nbits\u0027 equal to a multiple of BITS_PER_BYTE the logic\n\n *p \u0026= GENMASK((cell-\u003enbits%BITS_PER_BYTE) - 1, 0);\n\nwill become undefined behavior because nbits modulo BITS_PER_BYTE is 0, and we\nsubtract one from that making a large number that is then shifted more than the\nnumber of bits that fit into an unsigned long.\n\nUBSAN reports this problem:\n\n UBSAN: shift-out-of-bounds in drivers/nvmem/core.c:1386:8\n shift exponent 64 is too large for 64-bit type \u0027unsigned long\u0027\n CPU: 6 PID: 7 Comm: kworker/u16:0 Not tainted 5.15.0-rc3+ #9\n Hardware name: Google Lazor (rev3+) with KB Backlight (DT)\n Workqueue: events_unbound deferred_probe_work_func\n Call trace:\n  dump_backtrace+0x0/0x170\n  show_stack+0x24/0x30\n  dump_stack_lvl+0x64/0x7c\n  dump_stack+0x18/0x38\n  ubsan_epilogue+0x10/0x54\n  __ubsan_handle_shift_out_of_bounds+0x180/0x194\n  __nvmem_cell_read+0x1ec/0x21c\n  nvmem_cell_read+0x58/0x94\n  nvmem_cell_read_variable_common+0x4c/0xb0\n  nvmem_cell_read_variable_le_u32+0x40/0x100\n  a6xx_gpu_init+0x170/0x2f4\n  adreno_bind+0x174/0x284\n  component_bind_all+0xf0/0x264\n  msm_drm_bind+0x1d8/0x7a0\n  try_to_bring_up_master+0x164/0x1ac\n  __component_add+0xbc/0x13c\n  component_add+0x20/0x2c\n  dp_display_probe+0x340/0x384\n  platform_probe+0xc0/0x100\n  really_probe+0x110/0x304\n  __driver_probe_device+0xb8/0x120\n  driver_probe_device+0x4c/0xfc\n  __device_attach_driver+0xb0/0x128\n  bus_for_each_drv+0x90/0xdc\n  __device_attach+0xc8/0x174\n  device_initial_probe+0x20/0x2c\n  bus_probe_device+0x40/0xa4\n  deferred_probe_work_func+0x7c/0xb8\n  process_one_work+0x128/0x21c\n  process_scheduled_works+0x40/0x54\n  worker_thread+0x1ec/0x2a8\n  kthread+0x138/0x158\n  ret_from_fork+0x10/0x20\n\nFix it by making sure there are any bits to mask out."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2024-05-29T05:08:59.303Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/abcb8d33e4d2215ccde5ab5ccf9f730a59d79d97"
        },
        {
          "url": "https://git.kernel.org/stable/c/60df06bbdf497e37ed25ad40572c362e5b0998df"
        },
        {
          "url": "https://git.kernel.org/stable/c/2df6c023050205c4d04ffc121bc549f65cb8d1df"
        },
        {
          "url": "https://git.kernel.org/stable/c/eb0fc8e7170e61eaf65d28dee4a8baf4e86b19ca"
        },
        {
          "url": "https://git.kernel.org/stable/c/0594f1d048d8dc338eb9a240021b1d00ae1eb082"
        },
        {
          "url": "https://git.kernel.org/stable/c/57e48886401b14cd351423fabfec2cfd18df4f66"
        },
        {
          "url": "https://git.kernel.org/stable/c/0e822e5413da1af28cca350cb1cb42b6133bdcae"
        },
        {
          "url": "https://git.kernel.org/stable/c/5d388fa01fa6eb310ac023a363a6cb216d9d8fe9"
        }
      ],
      "title": "nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells",
      "x_generator": {
        "engine": "bippy-a5840b7849dd"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47497",
    "datePublished": "2024-05-22T08:19:44.144Z",
    "dateReserved": "2024-05-22T06:20:56.203Z",
    "dateUpdated": "2024-08-04T05:39:59.611Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2021-47497\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-05-22T09:15:11.513\",\"lastModified\":\"2024-05-22T12:46:53.887\",\"vulnStatus\":\"Awaiting Analysis\",\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnvmem: Fix shift-out-of-bound (UBSAN) with byte size cells\\n\\nIf a cell has \u0027nbits\u0027 equal to a multiple of BITS_PER_BYTE the logic\\n\\n *p \u0026= GENMASK((cell-\u003enbits%BITS_PER_BYTE) - 1, 0);\\n\\nwill become undefined behavior because nbits modulo BITS_PER_BYTE is 0, and we\\nsubtract one from that making a large number that is then shifted more than the\\nnumber of bits that fit into an unsigned long.\\n\\nUBSAN reports this problem:\\n\\n UBSAN: shift-out-of-bounds in drivers/nvmem/core.c:1386:8\\n shift exponent 64 is too large for 64-bit type \u0027unsigned long\u0027\\n CPU: 6 PID: 7 Comm: kworker/u16:0 Not tainted 5.15.0-rc3+ #9\\n Hardware name: Google Lazor (rev3+) with KB Backlight (DT)\\n Workqueue: events_unbound deferred_probe_work_func\\n Call trace:\\n  dump_backtrace+0x0/0x170\\n  show_stack+0x24/0x30\\n  dump_stack_lvl+0x64/0x7c\\n  dump_stack+0x18/0x38\\n  ubsan_epilogue+0x10/0x54\\n  __ubsan_handle_shift_out_of_bounds+0x180/0x194\\n  __nvmem_cell_read+0x1ec/0x21c\\n  nvmem_cell_read+0x58/0x94\\n  nvmem_cell_read_variable_common+0x4c/0xb0\\n  nvmem_cell_read_variable_le_u32+0x40/0x100\\n  a6xx_gpu_init+0x170/0x2f4\\n  adreno_bind+0x174/0x284\\n  component_bind_all+0xf0/0x264\\n  msm_drm_bind+0x1d8/0x7a0\\n  try_to_bring_up_master+0x164/0x1ac\\n  __component_add+0xbc/0x13c\\n  component_add+0x20/0x2c\\n  dp_display_probe+0x340/0x384\\n  platform_probe+0xc0/0x100\\n  really_probe+0x110/0x304\\n  __driver_probe_device+0xb8/0x120\\n  driver_probe_device+0x4c/0xfc\\n  __device_attach_driver+0xb0/0x128\\n  bus_for_each_drv+0x90/0xdc\\n  __device_attach+0xc8/0x174\\n  device_initial_probe+0x20/0x2c\\n  bus_probe_device+0x40/0xa4\\n  deferred_probe_work_func+0x7c/0xb8\\n  process_one_work+0x128/0x21c\\n  process_scheduled_works+0x40/0x54\\n  worker_thread+0x1ec/0x2a8\\n  kthread+0x138/0x158\\n  ret_from_fork+0x10/0x20\\n\\nFix it by making sure there are any bits to mask out.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se resolvi\u00f3 la siguiente vulnerabilidad: nvmem: corrige el desplazamiento fuera de los l\u00edmites (UBSAN) con celdas de tama\u00f1o de bytes. Si una celda tiene \u0027nbits\u0027 iguales a un m\u00faltiplo de BITS_PER_BYTE, la l\u00f3gica *p \u0026amp;= GENMASK( (celda-\u0026gt;nbits%BITS_PER_BYTE) - 1, 0); se convertir\u00e1 en un comportamiento indefinido porque el m\u00f3dulo de nbits BITS_PER_BYTE es 0, y restamos uno de eso, lo que genera un n\u00famero grande que luego se desplaza m\u00e1s que el n\u00famero de bits que caben en un largo sin signo. UBSAN informa este problema: UBSAN: desplazamiento fuera de los l\u00edmites en drivers/nvmem/core.c:1386:8 el exponente de desplazamiento 64 es demasiado grande para el tipo de 64 bits \u0027largo sin firmar\u0027 CPU: 6 PID: 7 Comm: kworker /u16:0 Not tainted 5.15.0-rc3+ #9 Nombre del hardware: Google Lazor (rev3+) con KB Backlight (DT) Cola de trabajo: events_unbound deferred_probe_work_func Rastreo de llamadas: 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 mem_cell_read_variable_le_u32+0x40/0x100 a6xx_gpu_init+0x170/0x2f4 adreno_bind+0x174/0x284 componente_bind_all+0xf0/0x264 msm_drm_bind +0x1d8/0x7a0 try_to_bring_up_master+0x164/0x1ac __component_add+0xbc/0x13c componente_add+0x20/0x2c dp_display_probe+0x340/0x384 platform_probe+0xc0/0x100 very_probe+0x110/0x304 _device+0xb8/0x120 driver_probe_device+0x4c/0xfc __device_attach_driver+0xb0/0x128 bus_for_each_drv +0x90/0xdc __device_attach+0xc8/0x174 dispositivo_inicial_probe+0x20/0x2c bus_probe_device+0x40/0xa4 diferido_probe_work_func+0x7c/0xb8 proceso_one_work+0x128/0x21c proceso_scheduled_works+0x40/0x54 trabajador_hilo+0 x1ec/0x2a8 kthread+0x138/0x158 ret_from_fork+0x10/0x20 Arreglar asegur\u00e1ndose de que haya partes que enmascarar.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0594f1d048d8dc338eb9a240021b1d00ae1eb082\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/0e822e5413da1af28cca350cb1cb42b6133bdcae\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/2df6c023050205c4d04ffc121bc549f65cb8d1df\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/57e48886401b14cd351423fabfec2cfd18df4f66\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5d388fa01fa6eb310ac023a363a6cb216d9d8fe9\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/60df06bbdf497e37ed25ad40572c362e5b0998df\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/abcb8d33e4d2215ccde5ab5ccf9f730a59d79d97\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/eb0fc8e7170e61eaf65d28dee4a8baf4e86b19ca\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading...

Loading...