lkml.org 
[lkml]   [2013]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 040/104] HID: lenovo-tpkbd: validate output report details
    Date
    3.8.13.11 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Kees Cook <keescook@chromium.org>

    commit 0a9cd0a80ac559357c6a90d26c55270ed752aa26 upstream.

    A HID device could send a malicious output report that would cause the
    lenovo-tpkbd HID driver to write just beyond the output report allocation
    during initialization, causing a heap overflow:

    [ 76.109807] usb 1-1: New USB device found, idVendor=17ef, idProduct=6009
    ...
    [ 80.462540] BUG kmalloc-192 (Tainted: G W ): Redzone overwritten

    CVE-2013-2894

    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/hid/hid-lenovo-tpkbd.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    diff --git a/drivers/hid/hid-lenovo-tpkbd.c b/drivers/hid/hid-lenovo-tpkbd.c
    index cea016e..189a3fb 100644
    --- a/drivers/hid/hid-lenovo-tpkbd.c
    +++ b/drivers/hid/hid-lenovo-tpkbd.c
    @@ -341,7 +341,15 @@ static int tpkbd_probe_tp(struct hid_device *hdev)
    struct tpkbd_data_pointer *data_pointer;
    size_t name_sz = strlen(dev_name(dev)) + 16;
    char *name_mute, *name_micmute;
    - int ret;
    + int i, ret;
    +
    + /* Validate required reports. */
    + for (i = 0; i < 4; i++) {
    + if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1))
    + return -ENODEV;
    + }
    + if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2))
    + return -ENODEV;

    if (sysfs_create_group(&hdev->dev.kobj,
    &tpkbd_attr_group_pointer)) {
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-10-10 18:41    [W:9.540 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site