FKIE_CVE-2026-74702

Vulnerability from fkie_nvd - Published: 2026-08-22 16:16 - Updated: 2026-10-14 13:10
Summary
In the Linux kernel, the following vulnerability has been resolved: vhost-scsi: reject feature changes after endpoint vhost_scsi_setup_vq_cmds() runs from VHOST_SCSI_SET_ENDPOINT and allocates each command's protection scatterlist array (prot_sgl) according to the acknowledged VIRTIO_SCSI_F_T10_PI bit. The command pools are not rebuilt when VHOST_SET_FEATURES changes that bit later. Although virtio feature bits must not change after feature negotiation, vhost_scsi_set_features() currently accepts such a request after the endpoint is active and updates acked_features. Enabling T10-PI after endpoint setup therefore leaves prot_sgl NULL while the I/O path follows the new feature bit. For a 129-page protection payload, vhost_scsi_mapal() passes the missing first chunk to sg_alloc_table_chained(): sg_alloc_table_chained(table, 129, first_chunk=NULL, nents_first_chunk=inline_sg_cnt) sg_pool_index() then hits: BUG_ON(nents > SG_CHUNK_SIZE); /* 129 > 128 */ The kernel reported the following call trace and register state: Call Trace: <TASK> ? __sg_alloc_table+0x1d8/0x250 ? __pfx_vhost_run_work_list+0x10/0x10 [vhost] sg_alloc_table_chained+0x59/0xf0 ? __pfx_sg_pool_alloc+0x10/0x10 ? vhost_scsi_calc_sgls.constprop.0+0x43/0x60 [vhost_scsi] vhost_scsi_handle_vq+0xf02/0x1700 [vhost_scsi] ? __pfx_vhost_scsi_handle_vq+0x10/0x10 [vhost_scsi] vhost_scsi_handle_kick+0x37/0x50 [vhost_scsi] vhost_run_work_list+0x8e/0xd0 [vhost] vhost_task_fn+0xe1/0x210 ret_from_fork+0x348/0x540 </TASK> RIP: 0010:0x4 CR2 = 0x4 RSP: 0018:ffffc90000dbf940 EFLAGS: 00010202 RAX: ffffffff82396810 RBX: ffff88811dc28b80 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000820 RDI: 0000000000000081 VHOST_F_LOG_ALL is a vhost-specific runtime feature and remains the only exception. Reject changes to any feature other than VHOST_F_LOG_ALL while the endpoint is active. This preserves the existing runtime log toggle while preventing feature-dependent command resources and data-path state from becoming inconsistent. Userspace must clear the endpoint before changing any other negotiated feature and set the endpoint up again afterward.
Impacted products
Vendor Product Version

{
  "affected": [
    {
      "affectedData": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/vhost/scsi.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a06e4611d45518896fbff4f45d9581578b107e91",
              "status": "affected",
              "version": "bf2d650391be508dd8b5e188b65ed32300cf3489",
              "versionType": "git"
            },
            {
              "lessThan": "9a3eb77a612f9d158e4d27df43677a014e9cfa55",
              "status": "affected",
              "version": "bf2d650391be508dd8b5e188b65ed32300cf3489",
              "versionType": "git"
            },
            {
              "lessThan": "42bc45df5905e2b7dccb72adaf7730f66cfbe03f",
              "status": "affected",
              "version": "bf2d650391be508dd8b5e188b65ed32300cf3489",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/vhost/scsi.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.15"
            },
            {
              "lessThan": "6.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.45",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "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\nvhost-scsi: reject feature changes after endpoint\n\nvhost_scsi_setup_vq_cmds() runs from VHOST_SCSI_SET_ENDPOINT and allocates\neach command\u0027s protection scatterlist array (prot_sgl) according to the\nacknowledged VIRTIO_SCSI_F_T10_PI bit.  The command pools are not rebuilt\nwhen VHOST_SET_FEATURES changes that bit later.\n\nAlthough virtio feature bits must not change after feature negotiation,\nvhost_scsi_set_features() currently accepts such a request after the\nendpoint is active and updates acked_features.  Enabling T10-PI after\nendpoint setup therefore leaves prot_sgl NULL while the I/O path follows\nthe new feature bit.\n\nFor a 129-page protection payload, vhost_scsi_mapal() passes the missing\nfirst chunk to sg_alloc_table_chained():\n\n  sg_alloc_table_chained(table, 129, first_chunk=NULL,\n                         nents_first_chunk=inline_sg_cnt)\n\nsg_pool_index() then hits:\n\n  BUG_ON(nents \u003e SG_CHUNK_SIZE);   /* 129 \u003e 128 */\n\nThe kernel reported the following call trace and register state:\n\n  Call Trace:\n   \u003cTASK\u003e\n   ? __sg_alloc_table+0x1d8/0x250\n   ? __pfx_vhost_run_work_list+0x10/0x10 [vhost]\n   sg_alloc_table_chained+0x59/0xf0\n   ? __pfx_sg_pool_alloc+0x10/0x10\n   ? vhost_scsi_calc_sgls.constprop.0+0x43/0x60 [vhost_scsi]\n   vhost_scsi_handle_vq+0xf02/0x1700 [vhost_scsi]\n   ? __pfx_vhost_scsi_handle_vq+0x10/0x10 [vhost_scsi]\n   vhost_scsi_handle_kick+0x37/0x50 [vhost_scsi]\n   vhost_run_work_list+0x8e/0xd0 [vhost]\n   vhost_task_fn+0xe1/0x210\n   ret_from_fork+0x348/0x540\n   \u003c/TASK\u003e\n\n  RIP: 0010:0x4\n  CR2 = 0x4\n  RSP: 0018:ffffc90000dbf940 EFLAGS: 00010202\n  RAX: ffffffff82396810 RBX: ffff88811dc28b80 RCX: 0000000000000000\n  RDX: 0000000000000000 RSI: 0000000000000820 RDI: 0000000000000081\n\nVHOST_F_LOG_ALL is a vhost-specific runtime feature and remains the only\nexception.\n\nReject changes to any feature other than VHOST_F_LOG_ALL while the\nendpoint is active.  This preserves the existing runtime log toggle while\npreventing feature-dependent command resources and data-path state from\nbecoming inconsistent.  Userspace must clear the endpoint before changing\nany other negotiated feature and set the endpoint up again afterward."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nvhost-scsi: rechazar cambios de caracter\u00edsticas despu\u00e9s del endpoint\n\nvhost_scsi_setup_vq_cmds() se ejecuta desde VHOST_SCSI_SET_ENDPOINT y asigna el array de scatterlist de protecci\u00f3n (prot_sgl) de cada comando de acuerdo con el bit VIRTIO_SCSI_F_T10_PI reconocido. Los pools de comandos no se reconstruyen cuando VHOST_SET_FEATURES cambia ese bit m\u00e1s tarde.\n\nAunque los bits de caracter\u00edsticas de virtio no deben cambiar despu\u00e9s de la negociaci\u00f3n de caracter\u00edsticas, vhost_scsi_set_features() actualmente acepta tal solicitud despu\u00e9s de que el endpoint est\u00e1 activo y actualiza acked_features. Habilitar T10-PI despu\u00e9s de la configuraci\u00f3n del endpoint, por lo tanto, deja prot_sgl en NULL mientras que la ruta de E/S sigue el nuevo bit de caracter\u00edstica.\n\nPara una carga \u00fatil de protecci\u00f3n de 129 p\u00e1ginas, vhost_scsi_mapal() pasa el primer fragmento faltante a sg_alloc_table_chained():\n\n  sg_alloc_table_chained(table, 129, first_chunk=NULL,\n                         nents_first_chunk=inline_sg_cnt)\n\nsg_pool_index() entonces alcanza:\n\n  BUG_ON(nents \u003e SG_CHUNK_SIZE); /* 129 \u003e 128 */\n\nEl kernel inform\u00f3 el siguiente rastro de llamadas y estado de registro:\n\n  Call Trace:\n   \u003cTASK\u003e\n   ? __sg_alloc_table+0x1d8/0x250\n   ? __pfx_vhost_run_work_list+0x10/0x10 [vhost]\n   sg_alloc_table_chained+0x59/0xf0\n   ? __pfx_sg_pool_alloc+0x10/0x10\n   ? vhost_scsi_calc_sgls.constprop.0+0x43/0x60 [vhost_scsi]\n   vhost_scsi_handle_vq+0xf02/0x1700 [vhost_scsi]\n   ? __pfx_vhost_scsi_handle_vq+0x10/0x10 [vhost_scsi]\n   vhost_scsi_handle_kick+0x37/0x50 [vhost_scsi]\n   vhost_run_work_list+0x8e/0xd0 [vhost]\n   vhost_task_fn+0xe1/0x210\n   ret_from_fork+0x348/0x540\n   \u003c/TASK\u003e\n\n  RIP: 0010:0x4\n  CR2 = 0x4\n  RSP: 0018:ffffc90000dbf940 EFLAGS: 00010202\n  RAX: ffffffff82396810 RBX: ffff88811dc28b80 RCX: 0000000000000000\n  RDX: 0000000000000000 RSI: 0000000000000820 RDI: 0000000000000081\n\nVHOST_F_LOG_ALL es una caracter\u00edstica de tiempo de ejecuci\u00f3n espec\u00edfica de vhost y sigue siendo la \u00fanica excepci\u00f3n.\n\nRechazar cambios a cualquier caracter\u00edstica que no sea VHOST_F_LOG_ALL mientras el endpoint est\u00e1 activo. Esto preserva el conmutador de registro de tiempo de ejecuci\u00f3n existente mientras evita que los recursos de comando dependientes de caracter\u00edsticas y el estado de la ruta de datos se vuelvan inconsistentes. El espacio de usuario debe borrar el endpoint antes de cambiar cualquier otra caracter\u00edstica negociada y configurar el endpoint de nuevo despu\u00e9s."
    }
  ],
  "id": "CVE-2026-74702",
  "lastModified": "2026-10-14T13:10:00.187",
  "metrics": {
    "cvssMetricV31": [
      {
        "cvssData": {
          "attackComplexity": "LOW",
          "attackVector": "LOCAL",
          "availabilityImpact": "HIGH",
          "baseScore": 8.8,
          "baseSeverity": "HIGH",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "privilegesRequired": "LOW",
          "scope": "CHANGED",
          "userInteraction": "NONE",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
          "version": "3.1"
        },
        "exploitabilityScore": 2.0,
        "impactScore": 6.0,
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "type": "Secondary"
      }
    ]
  },
  "published": "2026-08-22T16:16:44.873",
  "references": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/42bc45df5905e2b7dccb72adaf7730f66cfbe03f"
    },
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/9a3eb77a612f9d158e4d27df43677a014e9cfa55"
    },
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/a06e4611d45518896fbff4f45d9581578b107e91"
    }
  ],
  "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…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

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.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    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.