{"api_version":"1","generated_at":"2026-09-18T18:31:38+00:00","cve":"CVE-2026-90293","urls":{"html":"https://cve.report/CVE-2026-90293","api":"https://cve.report/api/cve/CVE-2026-90293.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-90293","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-90293"},"summary":{"title":"IB/isert: post the full-feature receive buffers after session registration","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nIB/isert: post the full-feature receive buffers after session registration\n\nisert_put_login_tx() posts the full-feature receive buffers before\n__transport_register_session() runs, so an initiator that does not wait\nfor the final Login Response can still have a SCSI command executed\nagainst an se_session whose se_tpg is NULL - the same oops as the\nprevious patch, at target_submit+0xbe.\n\nPost them from isert_get_rx_pdu(), which the previous patch already uses\nto send that response, and post them before that send: the receive queue\nis filled at the moment the initiator is told it may use it.  Allocating\nthere keeps the existing property that a memory allocation failure cannot\nhappen once the final Login Response is on the wire.\n\nThe receive queue is already empty between the final Login Request and\nisert_post_recvm(); this moves the second point later, from a median of\n92 us to 172 us over 1200 logins.  Only an initiator that sends before it\nhas been told to can reach that window, and on IB and RoCE its send is\nretried there until the buffers appear - isert_rdma_accept() asks for\nrnr_retry_count = 7.  iWARP has no RNR flow control, so there the same\nsend terminates the connection instead.\n\nMeasured over rxe, 400 login cycles per run, with an initiator that does\nnot wait: an instrumented build counted no entries to isert_recv_done()\nbefore the buffers are posted in 10 runs, where that initiator oopsed\n8 of 10 unpatched runs and 5 of 10 with only the previous patch.\n\nNot tested: iWARP, discovery sessions over iSER, and real HCAs.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-17 17:17:26","updated_at":"2026-09-18 18:17:52"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/d4f8257c3283919ca7e149381d062b9af5f7df7d","name":"https://git.kernel.org/stable/c/d4f8257c3283919ca7e149381d062b9af5f7df7d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/6c506fee5a5f2c8719c65bcfc5e5d0862b0a1946","name":"https://git.kernel.org/stable/c/6c506fee5a5f2c8719c65bcfc5e5d0862b0a1946","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/5247dde9daac7e107853b6fea043f7f47be033f7","name":"https://git.kernel.org/stable/c/5247dde9daac7e107853b6fea043f7f47be033f7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/068fe9841d2585b79d479fc7b58251d02d0b066f","name":"https://git.kernel.org/stable/c/068fe9841d2585b79d479fc7b58251d02d0b066f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/9c21a433022219ca899d1b3cd9049991f51a6a2c","name":"https://git.kernel.org/stable/c/9c21a433022219ca899d1b3cd9049991f51a6a2c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/962edb9a6b0dae09d33a677485a398fc7d55968c","name":"https://git.kernel.org/stable/c/962edb9a6b0dae09d33a677485a398fc7d55968c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/ad4492dcaf90a1d1a728ec5eef1a68ce5355027a","name":"https://git.kernel.org/stable/c/ad4492dcaf90a1d1a728ec5eef1a68ce5355027a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/9b2c61344992c8c2b883e1eebe416cc488a19390","name":"https://git.kernel.org/stable/c/9b2c61344992c8c2b883e1eebe416cc488a19390","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-90293","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-90293","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 962edb9a6b0dae09d33a677485a398fc7d55968c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 068fe9841d2585b79d479fc7b58251d02d0b066f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 d4f8257c3283919ca7e149381d062b9af5f7df7d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 9c21a433022219ca899d1b3cd9049991f51a6a2c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 9b2c61344992c8c2b883e1eebe416cc488a19390 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 6c506fee5a5f2c8719c65bcfc5e5d0862b0a1946 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 ad4492dcaf90a1d1a728ec5eef1a68ce5355027a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b8d26b3be8b33682cf163274ed07479a70554633 5247dde9daac7e107853b6fea043f7f47be033f7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3.10","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 3.10 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.270 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.221 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.188 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.157 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.110 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.52 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.6 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/infiniband/ulp/isert/ib_isert.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"962edb9a6b0dae09d33a677485a398fc7d55968c","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"068fe9841d2585b79d479fc7b58251d02d0b066f","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"d4f8257c3283919ca7e149381d062b9af5f7df7d","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"9c21a433022219ca899d1b3cd9049991f51a6a2c","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"9b2c61344992c8c2b883e1eebe416cc488a19390","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"6c506fee5a5f2c8719c65bcfc5e5d0862b0a1946","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"ad4492dcaf90a1d1a728ec5eef1a68ce5355027a","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"},{"lessThan":"5247dde9daac7e107853b6fea043f7f47be033f7","status":"affected","version":"b8d26b3be8b33682cf163274ed07479a70554633","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/infiniband/ulp/isert/ib_isert.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"3.10"},{"lessThan":"3.10","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.270","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.221","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.188","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.157","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":"5.10.270","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.221","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.188","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.157","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.110","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.52","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.6","versionStartIncluding":"3.10","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc1","versionStartIncluding":"3.10","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nIB/isert: post the full-feature receive buffers after session registration\n\nisert_put_login_tx() posts the full-feature receive buffers before\n__transport_register_session() runs, so an initiator that does not wait\nfor the final Login Response can still have a SCSI command executed\nagainst an se_session whose se_tpg is NULL - the same oops as the\nprevious patch, at target_submit+0xbe.\n\nPost them from isert_get_rx_pdu(), which the previous patch already uses\nto send that response, and post them before that send: the receive queue\nis filled at the moment the initiator is told it may use it.  Allocating\nthere keeps the existing property that a memory allocation failure cannot\nhappen once the final Login Response is on the wire.\n\nThe receive queue is already empty between the final Login Request and\nisert_post_recvm(); this moves the second point later, from a median of\n92 us to 172 us over 1200 logins.  Only an initiator that sends before it\nhas been told to can reach that window, and on IB and RoCE its send is\nretried there until the buffers appear - isert_rdma_accept() asks for\nrnr_retry_count = 7.  iWARP has no RNR flow control, so there the same\nsend terminates the connection instead.\n\nMeasured over rxe, 400 login cycles per run, with an initiator that does\nnot wait: an instrumented build counted no entries to isert_recv_done()\nbefore the buffers are posted in 10 runs, where that initiator oopsed\n8 of 10 unpatched runs and 5 of 10 with only the previous patch.\n\nNot tested: iWARP, discovery sessions over iSER, and real HCAs."}],"metrics":[{"cvssV3_1":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:N - The trigger is an ISCSI_OP_SCSI_CMD RDMA Send that isert_recv_done() handles after isert_put_login_tx() has already called isert_post_recvm() on the full-feature RQ; those Sends arrive from a remote initiator on the QP accepted by isert_connect_request() after rdma_listen() in isert_setup_id(), which binds RoCEv2 (UDP/IP) or iWARP (TCP).\nAC:L - The initiator drives login until login_complete so isert_put_login_tx() posts RX buffers, then sends ISCSI_OP_SCSI_CMD without waiting for the Login Response; isert_rdma_accept() sets rnr_retry_count=7 so IB/RoCE retries that Send until the RQ is filled and isert_recv_done() runs on ib-comp-wq before iscsi_post_login_handler() calls __transport_register_session().\nPR:N - login_complete is set in iscsi_target_do_login CSG1 only after iscsi_conn_authenticated(); when tpg_attrib.authentication is 0, iscsi_handle_authentication() accepts AuthMethod=None with no secret, and generate_node_acls demo mode lets core_tpg_check_initiator_node_acl() admit a client-asserted InitiatorName.\nUI:N - The attacker is the iSER initiator that finishes the Login Request exchange and posts the early SCSI Command on its own QP; no local user or administrator action is required.\nS:U - The NULL se_sess->se_tpg load in target_submit() oopses the same kernel that runs ib_isert; no VM, IOMMU, or sandbox boundary is crossed.\nC:N - transport_alloc_session() kmem_cache_zallocs se_session so se_tpg stays NULL until __transport_register_session(); target_submit() only loads se_tpg->se_tpg_tfo and takes a GPF, with no out-of-bounds read.\nI:N - The fault is a NULL load of se_cmd->se_sess->se_tpg in target_submit(); this path does not write kernel memory or reuse a freed object.\nA:H - KASAN reports a null-ptr-deref in target_submit() on ib-comp-wq (ib_cq_poll_work → isert_recv_done → iscsit_process_scsi_cmd → iscsit_execute_cmd), producing a kernel oops."}]}],"providerMetadata":{"dateUpdated":"2026-09-18T17:54:23.208Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/962edb9a6b0dae09d33a677485a398fc7d55968c"},{"url":"https://git.kernel.org/stable/c/068fe9841d2585b79d479fc7b58251d02d0b066f"},{"url":"https://git.kernel.org/stable/c/d4f8257c3283919ca7e149381d062b9af5f7df7d"},{"url":"https://git.kernel.org/stable/c/9c21a433022219ca899d1b3cd9049991f51a6a2c"},{"url":"https://git.kernel.org/stable/c/9b2c61344992c8c2b883e1eebe416cc488a19390"},{"url":"https://git.kernel.org/stable/c/6c506fee5a5f2c8719c65bcfc5e5d0862b0a1946"},{"url":"https://git.kernel.org/stable/c/ad4492dcaf90a1d1a728ec5eef1a68ce5355027a"},{"url":"https://git.kernel.org/stable/c/5247dde9daac7e107853b6fea043f7f47be033f7"}],"title":"IB/isert: post the full-feature receive buffers after session registration","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-90293","datePublished":"2026-09-17T16:08:20.033Z","dateReserved":"2026-09-11T19:38:34.798Z","dateUpdated":"2026-09-18T17:54:23.208Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-17 17:17:26","lastModifiedDate":"2026-09-18 18:17:52","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":3.6}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"90293","Ordinal":"1","Title":"IB/isert: post the full-feature receive buffers after session re","CVE":"CVE-2026-90293","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"90293","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nIB/isert: post the full-feature receive buffers after session registration\n\nisert_put_login_tx() posts the full-feature receive buffers before\n__transport_register_session() runs, so an initiator that does not wait\nfor the final Login Response can still have a SCSI command executed\nagainst an se_session whose se_tpg is NULL - the same oops as the\nprevious patch, at target_submit+0xbe.\n\nPost them from isert_get_rx_pdu(), which the previous patch already uses\nto send that response, and post them before that send: the receive queue\nis filled at the moment the initiator is told it may use it.  Allocating\nthere keeps the existing property that a memory allocation failure cannot\nhappen once the final Login Response is on the wire.\n\nThe receive queue is already empty between the final Login Request and\nisert_post_recvm(); this moves the second point later, from a median of\n92 us to 172 us over 1200 logins.  Only an initiator that sends before it\nhas been told to can reach that window, and on IB and RoCE its send is\nretried there until the buffers appear - isert_rdma_accept() asks for\nrnr_retry_count = 7.  iWARP has no RNR flow control, so there the same\nsend terminates the connection instead.\n\nMeasured over rxe, 400 login cycles per run, with an initiator that does\nnot wait: an instrumented build counted no entries to isert_recv_done()\nbefore the buffers are posted in 10 runs, where that initiator oopsed\n8 of 10 unpatched runs and 5 of 10 with only the previous patch.\n\nNot tested: iWARP, discovery sessions over iSER, and real HCAs.","Type":"Description","Title":"IB/isert: post the full-feature receive buffers after session re"}]}}}