{"id":"CVE-2026-74578","revision":"0e36c04ac7304d56a813e49ae30d7636","records":[{"revision":"0e36c04ac7304d56a813e49ae30d7636","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-74578","aliases":[],"title":"crypto: algif_skcipher - force synchronous processing on trees without ctx->state","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: algif_skcipher - force synchronous processing on trees without ctx->state\n\nThe AIO/async path in skcipher_recvmsg() passes the socket-wide ctx->iv\ndirectly into the skcipher request. After io_submit() the socket lock is\ndropped and the request is processed asynchronously, so a concurrent\nsendmsg(ALG_SET_IV) can overwrite ctx->iv and make the in-flight request\nrun under an attacker-controlled IV. For CTR/stream modes this is\nIV/keystream reuse and lets an unprivileged user recover the plaintext of\na concurrent operation.\n\nSnapshotting ctx->iv into per-request storage for the async path is not\nsufficient. For ciphers with statesize == 0 - which includes cbc and ctr -\nthe MSG_MORE inter-chunk IV chaining is carried solely by the in-place\nreq->iv writeback, which a snapshot redirects into per-request memory that\naf_alg_free_resources() releases on completion, silently producing wrong\noutput. Writing the IV back from the completion callback instead is not\npossible either: that would require lock_sock() there, but the callback can\nrun in softirq/atomic context, so it must not sleep.\n\nMake the operation synchronous instead, which removes both the IV race and\nany writeback race. This is equivalent to the upstream resolution, commit\nfcc77d33a34c (\"net: Remove support for AIO on sockets\"), which removed the\nAIO socket path across net/ entirely and so produces the same end state for\nthis file. This patch deviates from that commit deliberately: rather than\nremoving AIO socket support tree-wide, which would be far too invasive for\nstable, it removes only the AIO branch in crypto/algif_skcipher.c.\nio_submit() now completes synchronously; AF_ALG async is rarely used in\npractice.\n\nThe -EIOCBQUEUED check in skcipher_recvmsg() is now dead but harmless,\nand is left alone to keep the fix minimal.\n\nTested on 6.6.y: attacker IV injection dropped from 2296/200000 to 0/200000\nafter the change; MSG_MORE chunked CTR output bit-identical to single-shot.","state":0,"publishedAt":"2026-08-16T08:20:32.055+00:00","modifiedAt":"2026-10-16T19:05:57.566+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"crypto/algif_skcipher.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"bf09b0be8e851f050e98da702d247c14d81b591a\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"73dd3bf704ca6c20639de70c08e9a10bee904a95\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"f1a87ca0843d74482402a206ea2dfb315ee9acbd\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"60eafc7b08c6689ea3ad39eff8d97aefc8a087c7\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"d7860b682da55433b5da0591b0e4c1982ecd2689\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"b05defc41b27c7d0c05c45f67bf5b91c28f93669\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a\",\n                            \"lessThan\": \"fcc77d33a34cf271702e8daafb6c593e4626776d\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"crypto/algif_skcipher.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"4.14\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"4.14\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.10.261\",\n                            \"lessThanOrEqual\": \"5.10.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.15.212\",\n                            \"lessThanOrEqual\": \"5.15.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.1.178\",\n                            \"lessThanOrEqual\": \"6.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.6.145\",\n                            \"lessThanOrEqual\": \"6.6.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.12.97\",\n                            \"lessThanOrEqual\": \"6.12.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.40\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.1.5\",\n                            \"lessThanOrEqual\": \"7.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","score":7.1,"severity":"HIGH"}],"references":["https://git.kernel.org/stable/c/bf09b0be8e851f050e98da702d247c14d81b591a","https://git.kernel.org/stable/c/73dd3bf704ca6c20639de70c08e9a10bee904a95","https://git.kernel.org/stable/c/f1a87ca0843d74482402a206ea2dfb315ee9acbd","https://git.kernel.org/stable/c/7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd","https://git.kernel.org/stable/c/60eafc7b08c6689ea3ad39eff8d97aefc8a087c7","https://git.kernel.org/stable/c/d7860b682da55433b5da0591b0e4c1982ecd2689","https://git.kernel.org/stable/c/b05defc41b27c7d0c05c45f67bf5b91c28f93669","https://git.kernel.org/stable/c/fcc77d33a34cf271702e8daafb6c593e4626776d"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-74578","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-74578","identifiers":["CVE-2026-74578"]},"retained":false,"historicalAffected":[]}],"coverage":[]}