Patch "USB: usbip: fix potential out-of-bounds write" has been added to the 4.5-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
USB: usbip: fix potential out-of-bounds write
to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
usb-usbip-fix-potential-out-of-bounds-write.patch
and it can be found in the queue-4.5 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b348d7dddb6c4fbfc810b7a0626e8ec9e29f7cbbMon Sep 17 00:00:00 2001
From: Ignat Korchagin <[email protected]>
Date: Thu, 17 Mar 2016 18:00:29 +0000
Subject: USB: usbip: fix potential out-of-bounds write
From: Ignat Korchagin <[email protected]>
commit b348d7dddb6c4fbfc810b7a0626e8ec9e29f7cbb upstream.
Fix potential out-of-bounds write to urb->transfer_buffer
usbip handles network communication directly in the kernel. When receiving a packet from its peer, usbip code parses headers according to protocol. As part of this parsing urb->actual_length is filled. Since the input for urb->actual_length comes from the network, it should be treated as untrusted. Any entity controlling the network may put any value in the input and the preallocated urb->transfer_buffer may not be large enough to hold the data. Thus, the malicious entity is able to write arbitrary data to kernel memory.
--- drivers/usb/usbip/usbip_common.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
drivers/usb/usbip/usbip_common.c +11 -0
@@ -741,6 +741,17 @@ int usbip_recv_xbuff(struct usbip_deviceif (!(size >0 ))return 0 ; +if (size > urb->transfer_buffer_length) { +/* should not happen, probably malicious packet */ +if (ud->side ==USBIP_STUB ) { +usbip_event_add (ud,SDEV_EVENT_ERROR_TCP ); +return 0 ; + }else { +usbip_event_add (ud,VDEV_EVENT_ERROR_TCP ); +return -EPIPE ; + } + } + ret =usbip_recv (ud->tcp_socket, urb->transfer_buffer, size);if (ret != size) {dev_err (&urb->dev->dev,"recv xbuf, %d\n" , ret);
Patches currently in stable-queue which might be from [email protected] are
queue-4.5/usb-usbip-fix-potential-out-of-bounds-write.patch