Bug 566624 (CVE-2010-1083)
| Summary: | CVE-2010-1083 kernel: information leak via userspace USB interface | ||
|---|---|---|---|
| Product: | [Other] Security Response | Reporter: | Eugene Teo (Security Response) <eteo> |
| Component: | vulnerability | Assignee: | Red Hat Product Security <security-response-team> |
| Status: | CLOSED ERRATA | QA Contact: | |
| Severity: | low | Docs Contact: | |
| Priority: | low | ||
| Version: | unspecified | CC: | arozansk, bhu, davej, dhoward, djorm, jolsa, jpirko, kmcmartin, lgoncalv, lwang, plyons, tcallawa, vgoyal, williams |
| Target Milestone: | --- | Keywords: | Security |
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2013-05-06 07:30:07 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | 566625, 566626, 566627, 566628, 566629, 566630 | ||
| Bug Blocks: | |||
|
Description
Eugene Teo (Security Response)
2010-02-19 01:12:34 UTC
2.6.32-stable review patch. ------------------ From: Greg KH <greg> commit d4a4683ca054ed9917dfc9e3ff0f7ecf74ad90d6 upstream. We need to only copy the data received by the device to userspace, not the whole kernel buffer, which can contain "stale" data. Thanks to Marcus Meissner for pointing this out and testing the fix. Reported-by: Marcus Meissner <meissner> Tested-by: Marcus Meissner <meissner> Cc: Alan Stern <stern.edu> Cc: Linus Torvalds <torvalds> Signed-off-by: Greg Kroah-Hartman <gregkh> --- drivers/usb/core/devio.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -1312,9 +1312,9 @@ static int processcompl(struct async *as void __user *addr = as->userurb; unsigned int i; - if (as->userbuffer) + if (as->userbuffer && urb->actual_length) if (copy_to_user(as->userbuffer, urb->transfer_buffer, - urb->transfer_buffer_length)) + urb->actual_length)) goto err_out; if (put_user(as->status, &userurb->status)) goto err_out; @@ -1435,9 +1435,9 @@ static int processcompl_compat(struct as void __user *addr = as->userurb; unsigned int i; - if (as->userbuffer) + if (as->userbuffer && urb->actual_length) if (copy_to_user(as->userbuffer, urb->transfer_buffer, - urb->transfer_buffer_length)) + urb->actual_length)) return -EFAULT; if (put_user(as->status, &userurb->status)) return -EFAULT; This issue has been addressed in following products: Red Hat Enterprise Linux 4 Via RHSA-2010:0394 https://rhn.redhat.com/errata/RHSA-2010-0394.html Acknowledgements: Red Hat would like to thank Marcus Meissner for reporting this issue. This issue has been addressed in following products: MRG for RHEL-5 Via RHSA-2010:0631 https://rhn.redhat.com/errata/RHSA-2010-0631.html This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2010:0723 https://rhn.redhat.com/errata/RHSA-2010-0723.html |