net/smc: carry oversized SMC-Rv2 LLC messages in the queue entry
- 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
- Fix
- Fixed in 6.18.50, 7.2.4
- 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: net/smc: carry oversized SMC-Rv2 LLC messages in the queue entry smc_llc_rmt_delete_rkey() and smc_llc_save_add_link_rkeys() read the part of a v2 message that does not fit into the 44-byte union smc_llc_msg, and both bound themselves by the size of the buffer it landed in, not by what arrived. On a link with a shared v2 receive buffer a 44-byte DELETE_RKEY_V2 declaring 255 rkeys reaches rkey[9..254] in whatever an earlier message left in lgr->wr_rx_buf_v2, and passes each of them to smc_rtoken_delete(). One of those 255 matched a registered rtoken and deleted it. An ADD_LINK on such a link installs up to 255 rtokens from the same bytes. Copy the tail into the queue entry, so its length is the length of the message that arrived, and declare the rkeys that fit inline as a member of the union instead of reaching them through a cast. The same DELETE_RKEY_V2 now processes the 9 rkeys it carries. The copy is limited to the longest tail the two functions can read, so the peer does not pick the size of the entry. The bound the previous patch placed on links without a shared v2 receive buffer is no longer needed.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 27ef6a9981fe74191849966a6d5e0400a4008ab8 · fixed in edf30d65e3ac52f886f7d87b1a7449742e79157d; From 27ef6a9981fe74191849966a6d5e0400a4008ab8 · fixed in 0d6f80be8ac5886842640d6526abf3f9a215be75; From 27ef6a9981fe74191849966a6d5e0400a4008ab8 · fixed in 8d3c1ab82c11d4fadebf817a825fd221b3e197ea
- Linux Linux
6.14
- KernelLinux
From 6.14.0 · fixed in 6.18.50; From 6.19.0 · fixed in 7.2.4