{"id":"CVE-2026-72083","state":"PUBLISHED","title":"scsi: target: core: Fix iSCSI ISID use-after-free in REGISTER AND MOVE","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: target: core: Fix iSCSI ISID use-after-free in REGISTER AND MOVE\n\ncore_scsi3_emulate_pro_register_and_move() maps the PERSISTENT RESERVE OUT\nparameter list with transport_kmap_data_sg() and parses the destination\nTransportID with target_parse_pr_out_transport_id(). For an iSCSI\nTransportID (FORMAT CODE 01b), iscsi_parse_pr_out_transport_id() returns\nthe ISID in iport_ptr as a raw pointer into that mapped buffer.\n\nThe function then unmaps the buffer with transport_kunmap_data_sg() before\ndereferencing iport_ptr in strcmp(), __core_scsi3_locate_pr_reg() and\ncore_scsi3_alloc_registration(). When the parameter list spans more than\none page (PARAMETER LIST LENGTH > 4096), transport_kmap_data_sg() uses\nvmap() and transport_kunmap_data_sg() does vunmap(), so the kernel virtual\naddress backing iport_ptr is torn down and every subsequent dereference is\na use-after-free read of the unmapped region.\n\nKeep the parameter list mapped until iport_ptr is no longer needed: drop\nthe early transport_kunmap_data_sg() and unmap once on the success path,\nright before returning. The error paths already unmap through the existing\n\"if (buf) transport_kunmap_data_sg(cmd)\" at the out: label, which now runs\non every post-map error exit because buf is no longer cleared early. Only\nreads of the mapping happen while spinlocks are held; the map and unmap\ncalls remain outside any lock. The sibling caller\ncore_scsi3_decode_spec_i_port() already uses the buffer before unmapping it\nand is left unchanged.","publishedAt":"2026-08-15T05:52:32.045Z","updatedAt":"2026-10-19T21:19:26.910Z","severity":{"score":9.8,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"7d56f5c868d92c9d504a34a3ea450bce481c7f63","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"59a2a5a37dc49a641ad6bc64aee34e5a61025ffd","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"9f8076cc73dfa6b10155978c160587e986b22169","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"a040004846f1fbe687f6ec76d9ccc27b4ead42e4","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"05b3e37433cf2eaf8867f1c16528aa347bb212ab","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"cb7bdae7fba404852ade34b0c1445fbaf3e54fbb","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"ef2ee18fec92088c7d8877baf7674e89389ccd66","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"fda6a1f3c3d7047b5ce5654487649c2daa738bfc","versionType":"git"},{"version":"d2227f84ba0e97906153ac83db13213fb2e3938d","status":"affected","versionType":"git"},{"version":"3.2.9","status":"affected","lessThan":"3.3","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/target/target_core_pr.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.3","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.3","versionType":"semver"},{"version":"5.10.261","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/target/target_core_pr.c"]}],"references":["https://git.kernel.org/stable/c/7d56f5c868d92c9d504a34a3ea450bce481c7f63","https://git.kernel.org/stable/c/59a2a5a37dc49a641ad6bc64aee34e5a61025ffd","https://git.kernel.org/stable/c/9f8076cc73dfa6b10155978c160587e986b22169","https://git.kernel.org/stable/c/a040004846f1fbe687f6ec76d9ccc27b4ead42e4","https://git.kernel.org/stable/c/05b3e37433cf2eaf8867f1c16528aa347bb212ab","https://git.kernel.org/stable/c/cb7bdae7fba404852ade34b0c1445fbaf3e54fbb","https://git.kernel.org/stable/c/ef2ee18fec92088c7d8877baf7674e89389ccd66","https://git.kernel.org/stable/c/fda6a1f3c3d7047b5ce5654487649c2daa738bfc"],"weaknesses":["CWE-416"],"ingestedAt":"2026-10-29T20:12:58.252Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/72xxx/CVE-2026-72083.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-72083","state":"PUBLISHED","datePublished":"2026-08-15T05:52:32.045Z","dateUpdated":"2026-10-19T21:19:26.910Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-09T03:40:39.904Z"},"containers":{"cna":{"title":"scsi: target: core: Fix iSCSI ISID use-after-free in REGISTER AND MOVE","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: target: core: Fix iSCSI ISID use-after-free in REGISTER AND MOVE\n\ncore_scsi3_emulate_pro_register_and_move() maps the PERSISTENT RESERVE OUT\nparameter list with transport_kmap_data_sg() and parses the destination\nTransportID with target_parse_pr_out_transport_id(). For an iSCSI\nTransportID (FORMAT CODE 01b), iscsi_parse_pr_out_transport_id() returns\nthe ISID in iport_ptr as a raw pointer into that mapped buffer.\n\nThe function then unmaps the buffer with transport_kunmap_data_sg() before\ndereferencing iport_ptr in strcmp(), __core_scsi3_locate_pr_reg() and\ncore_scsi3_alloc_registration(). When the parameter list spans more than\none page (PARAMETER LIST LENGTH > 4096), transport_kmap_data_sg() uses\nvmap() and transport_kunmap_data_sg() does vunmap(), so the kernel virtual\naddress backing iport_ptr is torn down and every subsequent dereference is\na use-after-free read of the unmapped region.\n\nKeep the parameter list mapped until iport_ptr is no longer needed: drop\nthe early transport_kunmap_data_sg() and unmap once on the success path,\nright before returning. The error paths already unmap through the existing\n\"if (buf) transport_kunmap_data_sg(cmd)\" at the out: label, which now runs\non every post-map error exit because buf is no longer cleared early. Only\nreads of the mapping happen while spinlocks are held; the map and unmap\ncalls remain outside any lock. The sibling caller\ncore_scsi3_decode_spec_i_port() already uses the buffer before unmapping it\nand is left unchanged."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"7d56f5c868d92c9d504a34a3ea450bce481c7f63","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"59a2a5a37dc49a641ad6bc64aee34e5a61025ffd","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"9f8076cc73dfa6b10155978c160587e986b22169","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"a040004846f1fbe687f6ec76d9ccc27b4ead42e4","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"05b3e37433cf2eaf8867f1c16528aa347bb212ab","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"cb7bdae7fba404852ade34b0c1445fbaf3e54fbb","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"ef2ee18fec92088c7d8877baf7674e89389ccd66","versionType":"git"},{"version":"4949314c7283ea4f9ade182ca599583b89f7edd6","status":"affected","lessThan":"fda6a1f3c3d7047b5ce5654487649c2daa738bfc","versionType":"git"},{"version":"d2227f84ba0e97906153ac83db13213fb2e3938d","status":"affected","versionType":"git"},{"version":"3.2.9","status":"affected","lessThan":"3.3","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/target/target_core_pr.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.3","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.3","versionType":"semver"},{"version":"5.10.261","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/target/target_core_pr.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/7d56f5c868d92c9d504a34a3ea450bce481c7f63"},{"url":"https://git.kernel.org/stable/c/59a2a5a37dc49a641ad6bc64aee34e5a61025ffd"},{"url":"https://git.kernel.org/stable/c/9f8076cc73dfa6b10155978c160587e986b22169"},{"url":"https://git.kernel.org/stable/c/a040004846f1fbe687f6ec76d9ccc27b4ead42e4"},{"url":"https://git.kernel.org/stable/c/05b3e37433cf2eaf8867f1c16528aa347bb212ab"},{"url":"https://git.kernel.org/stable/c/cb7bdae7fba404852ade34b0c1445fbaf3e54fbb"},{"url":"https://git.kernel.org/stable/c/ef2ee18fec92088c7d8877baf7674e89389ccd66"},{"url":"https://git.kernel.org/stable/c/fda6a1f3c3d7047b5ce5654487649c2daa738bfc"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - On LIO/iSCSI storage servers and appliances, a remote initiator sends PERSISTENT_RESERVE_OUT with REGISTER AND MOVE over TCP (port 3260); iscsit_process_scsi_cmd()→target_execute_cmd()→target_scsi3_emulate_pr_out()→core_scsi3_emulate_pro_register_and_move() with no local access required.\nAC:L - The attacker fully controls the PR-OUT parameter list length (>4096 to force vmap/vunmap), iSCSI TransportID format 01b with ISID, and can establish prerequisite PR registration and reservation via prior SCSI commands on the same session; no uncontrollable race or layout dependency exists.\nPR:N - Exploitation requires only the ability to act as a network SCSI/iSCSI client with LUN access to an exported target; no Linux UID, capability, or init-namespace root on the storage server is needed—only standard iSCSI initiator connectivity (CHAP/ACL when configured).\nUI:N - Triggering is fully automated once an iSCSI session exists: the attacker issues scripted REGISTER, RESERVE, then REGISTER AND MOVE commands with a crafted >4 KiB parameter list; no victim mount, click, or other interactive action is required.\nS:U - The UAF corrupts kernel heap state inside the target-core PR handler on the storage host; impact stays within that kernel security domain and does not inherently cross VM, container, or IOMMU boundaries (standard host compromise, not escape).\nC:H - After vunmap(), iport_ptr aliases freed kernel virtual address space and is dereferenced in strcmp(), __core_scsi3_locate_pr_reg(), and snprintf() into pr_reg_isid; per kernel CVSS guidance, UAF reads enable arbitrary kernel memory disclosure when uncertain.\nI:H - UAF reads of attacker-influenced unmapped PR-OUT data drive strcmp-based registration matching and snprintf copies into persistent kernel pr_reg structures; memory corruption/UAF is scored High for integrity because it can be leveraged for control-flow or state manipulation.\nA:H - Dereferencing iport_ptr after transport_kunmap_data_sg() vunmap() on multi-page buffers causes immediate invalid kernel virtual address accesses (oops/panic) on every qualifying REGISTER AND MOVE; UAF availability impact is High per kernel guidance even before full exploit development."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-17T05:40:05.325Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"5.10.261"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"7.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2.9"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-72083","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T15:51:39.405960Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-416","lang":"en","type":"CWE","description":"CWE-416 Use After Free"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-19T21:19:26.910Z"}}]}}}