{"api_version":"1","generated_at":"2026-07-24T21:07:01+00:00","cve":"CVE-2026-63887","urls":{"html":"https://cve.report/CVE-2026-63887","api":"https://cve.report/api/cve/CVE-2026-63887.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-63887","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-63887"},"summary":{"title":"scsi: target: iscsi: Bound iscsi_encode_text_output() appends to rsp_buf","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: target: iscsi: Bound iscsi_encode_text_output() appends to rsp_buf\n\niscsi_encode_text_output() concatenates \"key=value\\0\" records into\nlogin->rsp_buf, an 8192-byte kzalloc(MAX_KEY_VALUE_PAIRS) buffer\nallocated in iscsit_alloc_login_setup_buffer(). The three sprintf() call\nsites in this function (lines 1398, 1411, 1424 in v7.1-rc2) never check\nthe remaining buffer capacity:\n\n\t*length += sprintf(output_buf, \"%s=%s\", er->key, er->value);\n\t*length += 1;\n\toutput_buf = textbuf + *length;\n\nThe 8192-byte ceiling at iscsi_target_check_login_request() bounds the\n*input* Login PDU payload, but a single PDU can carry up to 2048 minimal\nfour-byte \"a=b\\0\" pairs, each unknown key expanding to a 16-byte\n\"a=NotUnderstood\\0\" output record via iscsi_add_notunderstood_response().\n2048 * 16 = 32 KiB of output into an 8 KiB buffer, producing a ~24 KiB\nheap overrun in the kmalloc-8k slab.\n\nThe fix introduces a static iscsi_encode_text_record() helper that uses\nsnprintf() with a per-call bounds check against the remaining buffer,\nand threads a u32 textbuf_size parameter through\niscsi_encode_text_output(). Both call sites in\niscsi_target_handle_csg_zero() (PHASE_SECURITY) and\niscsi_target_handle_csg_one() (PHASE_OPERATIONAL) pass\nMAX_KEY_VALUE_PAIRS. On overflow the encoder logs the condition, calls\niscsi_release_extra_responses() to drop queued records, and returns -1;\nboth caller sites now emit ISCSI_STATUS_CLS_INITIATOR_ERR /\nISCSI_LOGIN_STATUS_INIT_ERR via iscsit_tx_login_rsp() before returning,\nso the initiator sees an explicit failed-login response rather than a\nsilent connection drop. (Prior to this patch only the PHASE_OPERATIONAL\ncaller did that; the PHASE_SECURITY caller is converted to the same\nshape.)","state":"PUBLISHED","assigner":"Linux","published_at":"2026-07-19 16:17:05","updated_at":"2026-07-20 15:16:54"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"9.8","severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"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","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"9.8","severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"baseScore":9.8,"baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/594a40360012ce5f94c715d5e3b20fa3af7d525a","name":"https://git.kernel.org/stable/c/594a40360012ce5f94c715d5e3b20fa3af7d525a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/bf33e01f88388c43e285492a63e539df6ffed64c","name":"https://git.kernel.org/stable/c/bf33e01f88388c43e285492a63e539df6ffed64c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/4e9f0c4a645c995bc75c06c7b3644254ffb4c76b","name":"https://git.kernel.org/stable/c/4e9f0c4a645c995bc75c06c7b3644254ffb4c76b","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/26e4a304b7e6f1338c675d527608d32549c091db","name":"https://git.kernel.org/stable/c/26e4a304b7e6f1338c675d527608d32549c091db","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b19382dfc6e7dee6d3859ba44b6ca29e97a51627","name":"https://git.kernel.org/stable/c/b19382dfc6e7dee6d3859ba44b6ca29e97a51627","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/efe633e600a0ac68357206fede21b1ac8178f3b8","name":"https://git.kernel.org/stable/c/efe633e600a0ac68357206fede21b1ac8178f3b8","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/30bf335e8fe170322080ee001f05ca29c50680b3","name":"https://git.kernel.org/stable/c/30bf335e8fe170322080ee001f05ca29c50680b3","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/cb84e974fb172bc71386289f37b78ea679410b39","name":"https://git.kernel.org/stable/c/cb84e974fb172bc71386289f37b78ea679410b39","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-63887","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-63887","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 cb84e974fb172bc71386289f37b78ea679410b39 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 b19382dfc6e7dee6d3859ba44b6ca29e97a51627 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 efe633e600a0ac68357206fede21b1ac8178f3b8 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 4e9f0c4a645c995bc75c06c7b3644254ffb4c76b git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 30bf335e8fe170322080ee001f05ca29c50680b3 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 594a40360012ce5f94c715d5e3b20fa3af7d525a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 26e4a304b7e6f1338c675d527608d32549c091db git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e48354ce078c079996f89d715dfa44814b4eba01 bf33e01f88388c43e285492a63e539df6ffed64c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3.1","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 3.1 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.259 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.210 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.176 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.143 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.93 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.35 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.0.12 7.0.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"63887","cve":"CVE-2026-63887","epss":"0.002200000","percentile":"0.125280000","score_date":"2026-07-20","updated_at":"2026-07-21 00:13:14"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/target/iscsi/iscsi_target_nego.c","drivers/target/iscsi/iscsi_target_parameters.c","drivers/target/iscsi/iscsi_target_parameters.h"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"cb84e974fb172bc71386289f37b78ea679410b39","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"b19382dfc6e7dee6d3859ba44b6ca29e97a51627","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"efe633e600a0ac68357206fede21b1ac8178f3b8","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"4e9f0c4a645c995bc75c06c7b3644254ffb4c76b","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"30bf335e8fe170322080ee001f05ca29c50680b3","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"594a40360012ce5f94c715d5e3b20fa3af7d525a","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"26e4a304b7e6f1338c675d527608d32549c091db","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"},{"lessThan":"bf33e01f88388c43e285492a63e539df6ffed64c","status":"affected","version":"e48354ce078c079996f89d715dfa44814b4eba01","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/target/iscsi/iscsi_target_nego.c","drivers/target/iscsi/iscsi_target_parameters.c","drivers/target/iscsi/iscsi_target_parameters.h"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"3.1"},{"lessThan":"3.1","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.259","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.210","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.176","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.143","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.93","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.35","versionType":"semver"},{"lessThanOrEqual":"7.0.*","status":"unaffected","version":"7.0.12","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.259","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.210","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.176","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.143","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.93","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.35","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.0.12","versionStartIncluding":"3.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1","versionStartIncluding":"3.1","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: target: iscsi: Bound iscsi_encode_text_output() appends to rsp_buf\n\niscsi_encode_text_output() concatenates \"key=value\\0\" records into\nlogin->rsp_buf, an 8192-byte kzalloc(MAX_KEY_VALUE_PAIRS) buffer\nallocated in iscsit_alloc_login_setup_buffer(). The three sprintf() call\nsites in this function (lines 1398, 1411, 1424 in v7.1-rc2) never check\nthe remaining buffer capacity:\n\n\t*length += sprintf(output_buf, \"%s=%s\", er->key, er->value);\n\t*length += 1;\n\toutput_buf = textbuf + *length;\n\nThe 8192-byte ceiling at iscsi_target_check_login_request() bounds the\n*input* Login PDU payload, but a single PDU can carry up to 2048 minimal\nfour-byte \"a=b\\0\" pairs, each unknown key expanding to a 16-byte\n\"a=NotUnderstood\\0\" output record via iscsi_add_notunderstood_response().\n2048 * 16 = 32 KiB of output into an 8 KiB buffer, producing a ~24 KiB\nheap overrun in the kmalloc-8k slab.\n\nThe fix introduces a static iscsi_encode_text_record() helper that uses\nsnprintf() with a per-call bounds check against the remaining buffer,\nand threads a u32 textbuf_size parameter through\niscsi_encode_text_output(). Both call sites in\niscsi_target_handle_csg_zero() (PHASE_SECURITY) and\niscsi_target_handle_csg_one() (PHASE_OPERATIONAL) pass\nMAX_KEY_VALUE_PAIRS. On overflow the encoder logs the condition, calls\niscsi_release_extra_responses() to drop queued records, and returns -1;\nboth caller sites now emit ISCSI_STATUS_CLS_INITIATOR_ERR /\nISCSI_LOGIN_STATUS_INIT_ERR via iscsit_tx_login_rsp() before returning,\nso the initiator sees an explicit failed-login response rather than a\nsilent connection drop. (Prior to this patch only the PHASE_OPERATIONAL\ncaller did that; the PHASE_SECURITY caller is converted to the same\nshape.)"}],"metrics":[{"cvssV3_1":{"baseScore":9.8,"baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}}],"providerMetadata":{"dateUpdated":"2026-07-20T13:41:13.237Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/cb84e974fb172bc71386289f37b78ea679410b39"},{"url":"https://git.kernel.org/stable/c/b19382dfc6e7dee6d3859ba44b6ca29e97a51627"},{"url":"https://git.kernel.org/stable/c/efe633e600a0ac68357206fede21b1ac8178f3b8"},{"url":"https://git.kernel.org/stable/c/4e9f0c4a645c995bc75c06c7b3644254ffb4c76b"},{"url":"https://git.kernel.org/stable/c/30bf335e8fe170322080ee001f05ca29c50680b3"},{"url":"https://git.kernel.org/stable/c/594a40360012ce5f94c715d5e3b20fa3af7d525a"},{"url":"https://git.kernel.org/stable/c/26e4a304b7e6f1338c675d527608d32549c091db"},{"url":"https://git.kernel.org/stable/c/bf33e01f88388c43e285492a63e539df6ffed64c"}],"title":"scsi: target: iscsi: Bound iscsi_encode_text_output() appends to rsp_buf","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-63887","datePublished":"2026-07-19T14:55:00.114Z","dateReserved":"2026-07-19T07:54:57.018Z","dateUpdated":"2026-07-20T13:41:13.237Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-07-19 16:17:05","lastModifiedDate":"2026-07-20 15:16:54","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:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":5.9}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"63887","Ordinal":"1","Title":"scsi: target: iscsi: Bound iscsi_encode_text_output() appends to","CVE":"CVE-2026-63887","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"63887","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: target: iscsi: Bound iscsi_encode_text_output() appends to rsp_buf\n\niscsi_encode_text_output() concatenates \"key=value\\0\" records into\nlogin->rsp_buf, an 8192-byte kzalloc(MAX_KEY_VALUE_PAIRS) buffer\nallocated in iscsit_alloc_login_setup_buffer(). The three sprintf() call\nsites in this function (lines 1398, 1411, 1424 in v7.1-rc2) never check\nthe remaining buffer capacity:\n\n\t*length += sprintf(output_buf, \"%s=%s\", er->key, er->value);\n\t*length += 1;\n\toutput_buf = textbuf + *length;\n\nThe 8192-byte ceiling at iscsi_target_check_login_request() bounds the\n*input* Login PDU payload, but a single PDU can carry up to 2048 minimal\nfour-byte \"a=b\\0\" pairs, each unknown key expanding to a 16-byte\n\"a=NotUnderstood\\0\" output record via iscsi_add_notunderstood_response().\n2048 * 16 = 32 KiB of output into an 8 KiB buffer, producing a ~24 KiB\nheap overrun in the kmalloc-8k slab.\n\nThe fix introduces a static iscsi_encode_text_record() helper that uses\nsnprintf() with a per-call bounds check against the remaining buffer,\nand threads a u32 textbuf_size parameter through\niscsi_encode_text_output(). Both call sites in\niscsi_target_handle_csg_zero() (PHASE_SECURITY) and\niscsi_target_handle_csg_one() (PHASE_OPERATIONAL) pass\nMAX_KEY_VALUE_PAIRS. On overflow the encoder logs the condition, calls\niscsi_release_extra_responses() to drop queued records, and returns -1;\nboth caller sites now emit ISCSI_STATUS_CLS_INITIATOR_ERR /\nISCSI_LOGIN_STATUS_INIT_ERR via iscsit_tx_login_rsp() before returning,\nso the initiator sees an explicit failed-login response rather than a\nsilent connection drop. (Prior to this patch only the PHASE_OPERATIONAL\ncaller did that; the PHASE_SECURITY caller is converted to the same\nshape.)","Type":"Description","Title":"scsi: target: iscsi: Bound iscsi_encode_text_output() appends to"}]}}}