{"api_version":"1","generated_at":"2026-08-16T20:17:34+00:00","cve":"CVE-2026-74578","urls":{"html":"https://cve.report/CVE-2026-74578","api":"https://cve.report/api/cve/CVE-2026-74578.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-74578","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-74578"},"summary":{"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":"PUBLISHED","assigner":"Linux","published_at":"2026-08-16 09:16:21","updated_at":"2026-08-16 09:16:21"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/73dd3bf704ca6c20639de70c08e9a10bee904a95","name":"https://git.kernel.org/stable/c/73dd3bf704ca6c20639de70c08e9a10bee904a95","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/fcc77d33a34cf271702e8daafb6c593e4626776d","name":"https://git.kernel.org/stable/c/fcc77d33a34cf271702e8daafb6c593e4626776d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d7860b682da55433b5da0591b0e4c1982ecd2689","name":"https://git.kernel.org/stable/c/d7860b682da55433b5da0591b0e4c1982ecd2689","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b05defc41b27c7d0c05c45f67bf5b91c28f93669","name":"https://git.kernel.org/stable/c/b05defc41b27c7d0c05c45f67bf5b91c28f93669","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/f1a87ca0843d74482402a206ea2dfb315ee9acbd","name":"https://git.kernel.org/stable/c/f1a87ca0843d74482402a206ea2dfb315ee9acbd","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/60eafc7b08c6689ea3ad39eff8d97aefc8a087c7","name":"https://git.kernel.org/stable/c/60eafc7b08c6689ea3ad39eff8d97aefc8a087c7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd","name":"https://git.kernel.org/stable/c/7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/bf09b0be8e851f050e98da702d247c14d81b591a","name":"https://git.kernel.org/stable/c/bf09b0be8e851f050e98da702d247c14d81b591a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-74578","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-74578","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a bf09b0be8e851f050e98da702d247c14d81b591a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a 73dd3bf704ca6c20639de70c08e9a10bee904a95 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a f1a87ca0843d74482402a206ea2dfb315ee9acbd git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a 7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a 60eafc7b08c6689ea3ad39eff8d97aefc8a087c7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a d7860b682da55433b5da0591b0e4c1982ecd2689 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a b05defc41b27c7d0c05c45f67bf5b91c28f93669 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e870456d8e7c8d57c059ea479b5aadbb55ff4c3a fcc77d33a34cf271702e8daafb6c593e4626776d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4.14","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 4.14 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.261 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.212 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.178 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.145 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.97 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.40 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2-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":["crypto/algif_skcipher.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"bf09b0be8e851f050e98da702d247c14d81b591a","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"73dd3bf704ca6c20639de70c08e9a10bee904a95","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"f1a87ca0843d74482402a206ea2dfb315ee9acbd","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"60eafc7b08c6689ea3ad39eff8d97aefc8a087c7","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"d7860b682da55433b5da0591b0e4c1982ecd2689","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"b05defc41b27c7d0c05c45f67bf5b91c28f93669","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"},{"lessThan":"fcc77d33a34cf271702e8daafb6c593e4626776d","status":"affected","version":"e870456d8e7c8d57c059ea479b5aadbb55ff4c3a","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["crypto/algif_skcipher.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"4.14"},{"lessThan":"4.14","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.261","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.212","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.178","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.145","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.97","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.40","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.261","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.212","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.178","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.145","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.97","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.40","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"4.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2-rc1","versionStartIncluding":"4.14","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"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."}],"providerMetadata":{"dateUpdated":"2026-08-16T08:20:32.055Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/bf09b0be8e851f050e98da702d247c14d81b591a"},{"url":"https://git.kernel.org/stable/c/73dd3bf704ca6c20639de70c08e9a10bee904a95"},{"url":"https://git.kernel.org/stable/c/f1a87ca0843d74482402a206ea2dfb315ee9acbd"},{"url":"https://git.kernel.org/stable/c/7b91e51d0eb7cbb07f7f086f9176bd93dbbc85dd"},{"url":"https://git.kernel.org/stable/c/60eafc7b08c6689ea3ad39eff8d97aefc8a087c7"},{"url":"https://git.kernel.org/stable/c/d7860b682da55433b5da0591b0e4c1982ecd2689"},{"url":"https://git.kernel.org/stable/c/b05defc41b27c7d0c05c45f67bf5b91c28f93669"},{"url":"https://git.kernel.org/stable/c/fcc77d33a34cf271702e8daafb6c593e4626776d"}],"title":"crypto: algif_skcipher - force synchronous processing on trees without ctx->state","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-74578","datePublished":"2026-08-16T08:20:32.055Z","dateReserved":"2026-08-15T05:44:03.917Z","dateUpdated":"2026-08-16T08:20:32.055Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-16 09:16:21","lastModifiedDate":"2026-08-16 09:16:21","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"74578","Ordinal":"1","Title":"crypto: algif_skcipher - force synchronous processing on trees w","CVE":"CVE-2026-74578","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"74578","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"crypto: algif_skcipher - force synchronous processing on trees w"}]}}}