{"id":"CVE-2026-43226","state":"PUBLISHED","title":"net/rds: No shortcut out of RDS_CONN_ERROR","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/rds: No shortcut out of RDS_CONN_ERROR\n\nRDS connections carry a state \"rds_conn_path::cp_state\"\nand transitions from one state to another and are conditional\nupon an expected state: \"rds_conn_path_transition.\"\n\nThere is one exception to this conditionality, which is\n\"RDS_CONN_ERROR\" that can be enforced by \"rds_conn_path_drop\"\nregardless of what state the condition is currently in.\n\nBut as soon as a connection enters state \"RDS_CONN_ERROR\",\nthe connection handling code expects it to go through the\nshutdown-path.\n\nThe RDS/TCP multipath changes added a shortcut out of\n\"RDS_CONN_ERROR\" straight back to \"RDS_CONN_CONNECTING\"\nvia \"rds_tcp_accept_one_path\" (e.g. after \"rds_tcp_state_change\").\n\nA subsequent \"rds_tcp_reset_callbacks\" can then transition\nthe state to \"RDS_CONN_RESETTING\" with a shutdown-worker queued.\n\nThat'll trip up \"rds_conn_init_shutdown\", which was\nnever adjusted to handle \"RDS_CONN_RESETTING\" and subsequently\ndrops the connection with the dreaded \"DR_INV_CONN_STATE\",\nwhich leaves \"RDS_SHUTDOWN_WORK_QUEUED\" on forever.\n\nSo we do two things here:\n\na) Don't shortcut \"RDS_CONN_ERROR\", but take the longer\n   path through the shutdown code.\n\nb) Add \"RDS_CONN_RESETTING\" to the expected states in\n  \"rds_conn_init_shutdown\" so that we won't error out\n  and get stuck, if we ever hit weird state transitions\n  like this again.\"","publishedAt":"2026-05-06T11:28:24.952Z","updatedAt":"2026-08-05T12:26:42.896Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"9bcd7c00691a2db9745817d5ea79262a503b135c","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"a179ac7be8f5a650d0068040705f4cddd6ca369c","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"19e384a7d00d888303a8285977cdf1970c6cccd6","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"f0f729bdffb08af32e0f54521b81b8a9e0321f16","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"81248b1eb3c5954cc1fc7b33b7c03e34d20cb8c8","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"899ef00963ce76f9fc421a7d02335fe4ead6389b","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"9ff599a9be784a808c36765086e3db2144aa3b66","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"ad22d24be635c6beab6a1fdd3f8b1f3c478d15da","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/rds/connection.c","net/rds/tcp_listen.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.8","versionType":"semver"},{"version":"5.10.252","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.202","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.165","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.128","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.75","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.16","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.6","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/rds/connection.c","net/rds/tcp_listen.c"]}],"references":["https://git.kernel.org/stable/c/9bcd7c00691a2db9745817d5ea79262a503b135c","https://git.kernel.org/stable/c/a179ac7be8f5a650d0068040705f4cddd6ca369c","https://git.kernel.org/stable/c/19e384a7d00d888303a8285977cdf1970c6cccd6","https://git.kernel.org/stable/c/f0f729bdffb08af32e0f54521b81b8a9e0321f16","https://git.kernel.org/stable/c/81248b1eb3c5954cc1fc7b33b7c03e34d20cb8c8","https://git.kernel.org/stable/c/899ef00963ce76f9fc421a7d02335fe4ead6389b","https://git.kernel.org/stable/c/9ff599a9be784a808c36765086e3db2144aa3b66","https://git.kernel.org/stable/c/ad22d24be635c6beab6a1fdd3f8b1f3c478d15da"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:57.932Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/43xxx/CVE-2026-43226.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-43226","state":"PUBLISHED","datePublished":"2026-05-06T11:28:24.952Z","dateUpdated":"2026-08-05T12:26:42.896Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-05-01T14:12:55.994Z"},"containers":{"cna":{"title":"net/rds: No shortcut out of RDS_CONN_ERROR","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/rds: No shortcut out of RDS_CONN_ERROR\n\nRDS connections carry a state \"rds_conn_path::cp_state\"\nand transitions from one state to another and are conditional\nupon an expected state: \"rds_conn_path_transition.\"\n\nThere is one exception to this conditionality, which is\n\"RDS_CONN_ERROR\" that can be enforced by \"rds_conn_path_drop\"\nregardless of what state the condition is currently in.\n\nBut as soon as a connection enters state \"RDS_CONN_ERROR\",\nthe connection handling code expects it to go through the\nshutdown-path.\n\nThe RDS/TCP multipath changes added a shortcut out of\n\"RDS_CONN_ERROR\" straight back to \"RDS_CONN_CONNECTING\"\nvia \"rds_tcp_accept_one_path\" (e.g. after \"rds_tcp_state_change\").\n\nA subsequent \"rds_tcp_reset_callbacks\" can then transition\nthe state to \"RDS_CONN_RESETTING\" with a shutdown-worker queued.\n\nThat'll trip up \"rds_conn_init_shutdown\", which was\nnever adjusted to handle \"RDS_CONN_RESETTING\" and subsequently\ndrops the connection with the dreaded \"DR_INV_CONN_STATE\",\nwhich leaves \"RDS_SHUTDOWN_WORK_QUEUED\" on forever.\n\nSo we do two things here:\n\na) Don't shortcut \"RDS_CONN_ERROR\", but take the longer\n   path through the shutdown code.\n\nb) Add \"RDS_CONN_RESETTING\" to the expected states in\n  \"rds_conn_init_shutdown\" so that we won't error out\n  and get stuck, if we ever hit weird state transitions\n  like this again.\""}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"9bcd7c00691a2db9745817d5ea79262a503b135c","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"a179ac7be8f5a650d0068040705f4cddd6ca369c","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"19e384a7d00d888303a8285977cdf1970c6cccd6","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"f0f729bdffb08af32e0f54521b81b8a9e0321f16","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"81248b1eb3c5954cc1fc7b33b7c03e34d20cb8c8","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"899ef00963ce76f9fc421a7d02335fe4ead6389b","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"9ff599a9be784a808c36765086e3db2144aa3b66","versionType":"git"},{"version":"5916e2c1554f3e36f770401c989c3c7fadf619ca","status":"affected","lessThan":"ad22d24be635c6beab6a1fdd3f8b1f3c478d15da","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/rds/connection.c","net/rds/tcp_listen.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.8","versionType":"semver"},{"version":"5.10.252","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.202","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.165","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.128","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.75","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.16","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.6","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/rds/connection.c","net/rds/tcp_listen.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/9bcd7c00691a2db9745817d5ea79262a503b135c"},{"url":"https://git.kernel.org/stable/c/a179ac7be8f5a650d0068040705f4cddd6ca369c"},{"url":"https://git.kernel.org/stable/c/19e384a7d00d888303a8285977cdf1970c6cccd6"},{"url":"https://git.kernel.org/stable/c/f0f729bdffb08af32e0f54521b81b8a9e0321f16"},{"url":"https://git.kernel.org/stable/c/81248b1eb3c5954cc1fc7b33b7c03e34d20cb8c8"},{"url":"https://git.kernel.org/stable/c/899ef00963ce76f9fc421a7d02335fe4ead6389b"},{"url":"https://git.kernel.org/stable/c/9ff599a9be784a808c36765086e3db2144aa3b66"},{"url":"https://git.kernel.org/stable/c/ad22d24be635c6beab6a1fdd3f8b1f3c478d15da"}],"metrics":[{"cvssV3_1":{"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"},"scenarios":[{"lang":"en","value":"AV:N - The vulnerable code is in the RDS/TCP passive accept path reached by remote TCP connections to the kernel RDS listener on port 16385. No local syscall or physical access is required in a deployment where RDS/TCP is enabled and reachable.\nAC:L - The attacker can drive the relevant error and reconnect sequence by opening, closing, and reconnecting TCP connections; the queued-shutdown timing is repeatable and under attacker influence. There is no requirement for a rare victim-controlled state beyond an active RDS/TCP deployment.\nPR:N - The accept path runs before any RDS authentication or credential check, and RDS/TCP does not authenticate the remote peer before reaching rds_tcp_accept_one_path. A network attacker only needs the ability to connect to the listener.\nUI:N - Exploitation does not require a user to open a file, mount anything, or perform an action. The attacker triggers it through network connection sequencing.\nS:U - The impact remains within the kernel/RDS networking security authority. It does not cross a VM, IOMMU, or other separate security boundary.\nC:N - The bug is a connection state-machine error and I found no memory disclosure path, out-of-bounds read, or use-after-free primitive. It does not expose kernel or application data.\nI:N - The fix addresses invalid RDS connection state transitions, not memory corruption or unauthorized data modification. I found no arbitrary write, control-flow hijack, or integrity-impacting primitive.\nA:H - The invalid shortcut can leave an RDS/TCP connection path stuck with shutdown/reconnect work state permanently wedged, denying RDS availability for affected peer paths until external recovery. Because it is remotely and repeatedly triggerable against a network service, the availability impact is high."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:26:42.896Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"5.10.252"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"5.15.202"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"6.1.165"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"6.6.128"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"6.12.75"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"6.18.16"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"6.19.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.8","versionEndExcluding":"7.0"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}