GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-93119 (GCVE-0-2026-93119)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:11 – Updated: 2026-09-17 16:11
VLAI
Title
usb: ljca: bound bank_num in ljca_enumerate_gpio()
Summary
In the Linux kernel, the following vulnerability has been resolved: usb: ljca: bound bank_num in ljca_enumerate_gpio() ljca_enumerate_gpio() reads desc->bank_num from the device and loops valid_pin[i] = get_unaligned_le32(...) for i < bank_num. valid_pin[] holds only LJCA_MAX_GPIO_NUM / 32 = 2 entries. Two checks run before the loop. The reply length must match struct_size(desc, bank_desc, bank_num). The product pins_per_bank * bank_num must not exceed LJCA_MAX_GPIO_NUM. Neither one bounds bank_num against the size of valid_pin[]. The reply is capped at LJCA_MAX_PAYLOAD_SIZE (60) bytes, so the struct_size check limits bank_num to 9. A device that reports bank_num 9 with pins_per_bank 7 still passes both checks. gpio_num is 63 and the reply is 56 bytes. The loop then writes nine u32 into the two entry array and overruns valid_pin[] on the stack. A broken or malicious LJCA device can therefore overflow the stack. Reject a bank_num that does not fit valid_pin[].
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: acd6199f195d6de814ac4090ce0864a613b1580e , < 0069593170a3d177de793c9a0b36989c4f069111 (git)
Affected: acd6199f195d6de814ac4090ce0864a613b1580e , < aed958c4f784a29cf42abb3e54af51a16bddde46 (git)
Affected: acd6199f195d6de814ac4090ce0864a613b1580e , < 9c4bc8f7426aa001387800bf0140bfc5087a6de3 (git)
Affected: acd6199f195d6de814ac4090ce0864a613b1580e , < dd9483726d0f16c1a56879c3edb65128259a4e2b (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.7
Unaffected: 0 , < 6.7 (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/usb/misc/usb-ljca.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "0069593170a3d177de793c9a0b36989c4f069111",
              "status": "affected",
              "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
              "versionType": "git"
            },
            {
              "lessThan": "aed958c4f784a29cf42abb3e54af51a16bddde46",
              "status": "affected",
              "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
              "versionType": "git"
            },
            {
              "lessThan": "9c4bc8f7426aa001387800bf0140bfc5087a6de3",
              "status": "affected",
              "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
              "versionType": "git"
            },
            {
              "lessThan": "dd9483726d0f16c1a56879c3edb65128259a4e2b",
              "status": "affected",
              "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/usb/misc/usb-ljca.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.7"
            },
            {
              "lessThan": "6.7",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: ljca: bound bank_num in ljca_enumerate_gpio()\n\nljca_enumerate_gpio() reads desc-\u003ebank_num from the device and loops\nvalid_pin[i] = get_unaligned_le32(...) for i \u003c bank_num. valid_pin[]\nholds only LJCA_MAX_GPIO_NUM / 32 = 2 entries.\n\nTwo checks run before the loop. The reply length must match\nstruct_size(desc, bank_desc, bank_num). The product\npins_per_bank * bank_num must not exceed LJCA_MAX_GPIO_NUM. Neither one\nbounds bank_num against the size of valid_pin[]. The reply is capped at\nLJCA_MAX_PAYLOAD_SIZE (60) bytes, so the struct_size check limits\nbank_num to 9. A device that reports bank_num 9 with pins_per_bank 7\nstill passes both checks. gpio_num is 63 and the reply is 56 bytes. The\nloop then writes nine u32 into the two entry array and overruns\nvalid_pin[] on the stack.\n\nA broken or malicious LJCA device can therefore overflow the stack.\nReject a bank_num that does not fit valid_pin[]."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-17T16:11:25.867Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/0069593170a3d177de793c9a0b36989c4f069111"
        },
        {
          "url": "https://git.kernel.org/stable/c/aed958c4f784a29cf42abb3e54af51a16bddde46"
        },
        {
          "url": "https://git.kernel.org/stable/c/9c4bc8f7426aa001387800bf0140bfc5087a6de3"
        },
        {
          "url": "https://git.kernel.org/stable/c/dd9483726d0f16c1a56879c3edb65128259a4e2b"
        }
      ],
      "title": "usb: ljca: bound bank_num in ljca_enumerate_gpio()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-93119",
    "datePublished": "2026-09-17T16:11:25.867Z",
    "dateReserved": "2026-09-17T16:02:15.086Z",
    "dateUpdated": "2026-09-17T16:11:25.867Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/usb/misc/usb-ljca.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "0069593170a3d177de793c9a0b36989c4f069111",
                    "status": "affected",
                    "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "aed958c4f784a29cf42abb3e54af51a16bddde46",
                    "status": "affected",
                    "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "9c4bc8f7426aa001387800bf0140bfc5087a6de3",
                    "status": "affected",
                    "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "dd9483726d0f16c1a56879c3edb65128259a4e2b",
                    "status": "affected",
                    "version": "acd6199f195d6de814ac4090ce0864a613b1580e",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/usb/misc/usb-ljca.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.7"
                  },
                  {
                    "lessThan": "6.7",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: ljca: bound bank_num in ljca_enumerate_gpio()\n\nljca_enumerate_gpio() reads desc-\u003ebank_num from the device and loops\nvalid_pin[i] = get_unaligned_le32(...) for i \u003c bank_num. valid_pin[]\nholds only LJCA_MAX_GPIO_NUM / 32 = 2 entries.\n\nTwo checks run before the loop. The reply length must match\nstruct_size(desc, bank_desc, bank_num). The product\npins_per_bank * bank_num must not exceed LJCA_MAX_GPIO_NUM. Neither one\nbounds bank_num against the size of valid_pin[]. The reply is capped at\nLJCA_MAX_PAYLOAD_SIZE (60) bytes, so the struct_size check limits\nbank_num to 9. A device that reports bank_num 9 with pins_per_bank 7\nstill passes both checks. gpio_num is 63 and the reply is 56 bytes. The\nloop then writes nine u32 into the two entry array and overruns\nvalid_pin[] on the stack.\n\nA broken or malicious LJCA device can therefore overflow the stack.\nReject a bank_num that does not fit valid_pin[]."
          }
        ],
        "id": "CVE-2026-93119",
        "lastModified": "2026-09-17T17:18:06.553",
        "metrics": {},
        "published": "2026-09-17T17:18:06.553",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/0069593170a3d177de793c9a0b36989c4f069111"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/9c4bc8f7426aa001387800bf0140bfc5087a6de3"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/aed958c4f784a29cf42abb3e54af51a16bddde46"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/dd9483726d0f16c1a56879c3edb65128259a4e2b"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…