kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg().
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). syzkaller found a memory leak in kcm_sendmsg(), and commit c821a88bd720 ("kcm: Fix memory leak in error path of kcm_sendmsg()") suppressed it by updating kcm_tx_msg(head)->last_skb if partial data is copied so that the following sendmsg() will resume from the skb. However, we cannot know how many bytes were copied when we get the error. Thus, we could mess up the MSG_MORE queue. When kcm_sendmsg() fails for SOCK_DGRAM, we should purge the queue as we do so for UDP by udp_flush_pending_frames(). Even without this change, when the error occurred, the following sendmsg() resumed from a wrong skb and the queue was messed up. However, we have yet to get such a report, and only syzkaller stumbled on it. So, this can be changed safely. Note this does not change SOCK_SEQPACKET behaviour.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
Version range not reported
- Linux Linux
4.6
References 8
git.kernel.org
- stable/c/21b467735b0888a8daa048f83d3b9b50fdab71ce
- stable/c/d4b8f380b0a041ee6a84fdac14127d8fe1dcad7b
- stable/c/1ce8362b4ac6b8e65fd04a22ea37ec776ee1ec5b
- stable/c/2e18493c421428a936946c452461b8e979088f17
- stable/c/55d2e7c1ab8eaa7b62575b8a4194132795d1f9fc
- stable/c/e5b28ce127a690f3acc49a6a342e6c9442c9edd6
- stable/c/992b2ac783aad360b98ed9d4686e86176a20f6f1
- stable/c/a22730b1b4bf437c6bbfdeff5feddf54be4aeada