« Volver al listado

CVE-2023-53166

Estado: AnalizadaMedia (4.7)—

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

power: supply: bq25890: Fix external_power_changed race

bq25890_charger_external_power_changed() dereferences bq->charger, which gets sets in bq25890_power_supply_init() like this:

As soon as devm_power_supply_register() has called device_add() the external_power_changed callback can get called. So there is a window where bq25890_charger_external_power_changed() may get called while bq->charger has not been set yet leading to a NULL pointer dereference.

This race hits during boot sometimes on a Lenovo Yoga Book 1 yb1-x90f when the cht_wcove_pwrsrc (extcon) power_supply is done with detecting the connected charger-type which happens to exactly hit the small window:

Leer descripción completaMostrar menos

Fixing this is easy. The external_power_changed callback gets passed the power_supply which will eventually get stored in bq->charger, so bq25890_charger_external_power_changed() can simply directly use the passed in psy argument which is always valid.

Detalles técnicos trazas, registros y código del informe original
  bq->charger = devm_power_supply_register(bq->dev, &bq->desc, &psy_cfg);

  BUG: kernel NULL pointer dereference, address: 0000000000000018
  <snip>
  RIP: 0010:__power_supply_is_supplied_by+0xb/0xb0
  <snip>
  Call Trace:
   <TASK>
   __power_supply_get_supplier_property+0x19/0x50
   class_for_each_device+0xb1/0xe0
   power_supply_get_property_from_supplier+0x2e/0x50
   bq25890_charger_external_power_changed+0x38/0x1b0 [bq25890_charger]
   __power_supply_changed_work+0x30/0x40
   class_for_each_device+0xb1/0xe0
   power_supply_changed_work+0x5f/0xe0
  <snip>

CVSS

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2023-53166",
  "cveTags": [],
  "metrics": {
    "cvssMetricV31": [
      {
        "type": "Primary",
        "source": "nvd@nist.gov",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 4.7,
          "attackVector": "LOCAL",
          "baseSeverity": "MEDIUM",
          "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H",
          "integrityImpact": "NONE",
          "userInteraction": "NONE",
          "attackComplexity": "HIGH",
          "availabilityImpact": "HIGH",
          "privilegesRequired": "LOW",
          "confidentialityImpact": "NONE"
        },
        "impactScore": 3.6,
        "exploitabilityScore": 1
      }
    ]
  },
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "eab25b4f93aa771728127705eb4b235a3b5aad94",
              "lessThan": "72c28207c19c2c46fab8ae994aff25e197fb2949",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "eab25b4f93aa771728127705eb4b235a3b5aad94",
              "lessThan": "9d20fa1982c35697f3f8c4ae0f12791691ae5958",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "eab25b4f93aa771728127705eb4b235a3b5aad94",
              "lessThan": "029a443b9b6424170f00f6dd5b7682e682cce92e",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "drivers/power/supply/bq25890_charger.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.18"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "5.18",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.1.31",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "status": "unaffected",
              "version": "6.3.5",
              "versionType": "semver",
              "lessThanOrEqual": "6.3.*"
            },
            {
              "status": "unaffected",
              "version": "6.4",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "drivers/power/supply/bq25890_charger.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2025-09-15T14:15:38.343",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/029a443b9b6424170f00f6dd5b7682e682cce92e",
      "tags": [
        "Patch"
      ],
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/72c28207c19c2c46fab8ae994aff25e197fb2949",
      "tags": [
        "Patch"
      ],
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9d20fa1982c35697f3f8c4ae0f12791691ae5958",
      "tags": [
        "Patch"
      ],
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Analyzed",
  "weaknesses": [
    {
      "type": "Primary",
      "source": "nvd@nist.gov",
      "description": [
        {
          "lang": "en",
          "value": "CWE-362"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: bq25890: Fix external_power_changed race\n\nbq25890_charger_external_power_changed() dereferences bq->charger,\nwhich gets sets in bq25890_power_supply_init() like this:\n\n  bq->charger = devm_power_supply_register(bq->dev, &bq->desc, &psy_cfg);\n\nAs soon as devm_power_supply_register() has called device_add()\nthe external_power_changed callback can get called. So there is a window\nwhere bq25890_charger_external_power_changed() may get called while\nbq->charger has not been set yet leading to a NULL pointer dereference.\n\nThis race hits during boot sometimes on a Lenovo Yoga Book 1 yb1-x90f\nwhen the cht_wcove_pwrsrc (extcon) power_supply is done with detecting\nthe connected charger-type which happens to exactly hit the small window:\n\n  BUG: kernel NULL pointer dereference, address: 0000000000000018\n  <snip>\n  RIP: 0010:__power_supply_is_supplied_by+0xb/0xb0\n  <snip>\n  Call Trace:\n   <TASK>\n   __power_supply_get_supplier_property+0x19/0x50\n   class_for_each_device+0xb1/0xe0\n   power_supply_get_property_from_supplier+0x2e/0x50\n   bq25890_charger_external_power_changed+0x38/0x1b0 [bq25890_charger]\n   __power_supply_changed_work+0x30/0x40\n   class_for_each_device+0xb1/0xe0\n   power_supply_changed_work+0x5f/0xe0\n  <snip>\n\nFixing this is easy. The external_power_changed callback gets passed\nthe power_supply which will eventually get stored in bq->charger,\nso bq25890_charger_external_power_changed() can simply directly use\nthe passed in psy argument which is always valid."
    }
  ],
  "lastModified": "2026-06-17T06:44:25.533",
  "configurations": [
    {
      "nodes": [
        {
          "negate": false,
          "cpeMatch": [
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "96ED2287-2842-4A17-B79A-9F1F111B827C",
              "versionEndExcluding": "6.1.31",
              "versionStartIncluding": "5.18"
            },
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "34DD94CA-4DA1-41C3-9A9B-92ACD7F4E240",
              "versionEndExcluding": "6.3.5",
              "versionStartIncluding": "6.2"
            },
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:6.4:rc1:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "38BC6744-7D25-4C02-9966-B224CD071D30"
            },
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:6.4:rc2:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "76061B41-CAE9-4467-BEDE-0FFC7956F2A1"
            },
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:6.4:rc3:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "A717BA5B-D535-46A0-A329-A25FE5CEC588"
            }
          ],
          "operator": "OR"
        }
      ]
    }
  ],
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}