{"id":7796,"date":"2026-09-04T18:49:43","date_gmt":"2026-09-04T10:49:43","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74578"},"modified":"2026-09-04T18:49:43","modified_gmt":"2026-09-04T10:49:43","slug":"cve-2026-74578","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74578","title":{"rendered":"CVE-2026-74578 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: algif_skciphe"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>crypto: algif_skcipher &#8211; force synchronous processing on trees without ctx-&gt;state<\/p>\n<p>The AIO\/async path in skcipher_recvmsg() passes the socket-wide ctx-&gt;iv<br \/>\ndirectly into the skcipher request. After io_submit() the socket lock is<br \/>\ndropped and the request is processed asynchronously, so a concurrent<br \/>\nsendmsg(ALG_SET_IV) can overwrite ctx-&gt;iv and make the in-flight request<br \/>\nrun under an attacker-controlled IV. For CTR\/stream modes this is<br \/>\nIV\/keystream reuse and lets an unprivileged user recover the plaintext of<br \/>\na concurrent operation.<\/p>\n<p>Snapshotting ctx-&gt;iv into per-request storage for the async path is not<br \/>\nsufficient. For ciphers with statesize == 0 &#8211; which includes cbc and ctr &#8211;<br \/>\nthe MSG_MORE inter-chunk IV chaining is carried solely by the in-place<br \/>\nreq-&gt;iv writeback, which a snapshot redirects into per-request memory that<br \/>\naf_alg_free_resources() releases on completion, silently producing wrong<br \/>\noutput. Writing the IV back from the completion callback instead is not<br \/>\npossible either: that would require lock_sock() there, but the callback can<br \/>\nrun in softirq\/atomic context, so it must not sleep.<\/p>\n<p>Make the operation synchronous instead, which removes both the IV race and<br \/>\nany writeback race. This is equivalent to the upstream resolution, commit<br \/>\nfcc77d33a34c (&#8220;net: Remove support for AIO on sockets&#8221;), which removed the<br \/>\nAIO socket path across net\/ entirely and so produces the same end state for<br \/>\nthis file. This patch deviates from that commit deliberately: rather than<br \/>\nremoving AIO socket support tree-wide, which would be far too invasive for<br \/>\nstable, it removes only the AIO branch in crypto\/algif_skcipher.c.<br \/>\nio_submit() now completes synchronously; AF_ALG async is rarely used in<br \/>\npractice.<\/p>\n<p>The -EIOCBQUEUED check in skcipher_recvmsg() is now dead but harmless,<br \/>\nand is left alone to keep the fix minimal.<\/p>\n<p>Tested on 6.6.y: attacker IV injection dropped from 2296\/200000 to 0\/200000<br \/>\nafter the change; MSG_MORE chunked CTR output bit-identical to single-shot.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>crypto: algif_skcipher &#8211; force synchronous processing on trees without ctx-&gt;state<\/p>\n<p>The AIO\/async path in skcipher_recvmsg() passes <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-7796","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/7796","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7796"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7796"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}