Bug 722393 (CVE-2009-4067) - CVE-2009-4067 kernel: usb: buffer overflow in auerswald_probe()
Summary: CVE-2009-4067 kernel: usb: buffer overflow in auerswald_probe()
Keywords:
Status: CLOSED ERRATA
Alias: CVE-2009-4067
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
low
low
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 722394 722395 722396 748675
Blocks: 722385
TreeView+ depends on / blocked
 
Reported: 2011-07-15 07:38 UTC by Eugene Teo (Security Response)
Modified: 2023-05-11 17:55 UTC (History)
20 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-05-04 07:04:47 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2011:1386 0 normal SHIPPED_LIVE Important: kernel security, bug fix, and enhancement update 2011-10-20 17:28:15 UTC

Description Eugene Teo (Security Response) 2011-07-15 07:38:20 UTC
A buffer overflow flaw was found in the Linux kernel's Auerswald PBX/System Telephone usb driver implementation. There's no upstream patch as the affected driver was removed from the kernel in 2.6.27.

For more information, check out the references:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-4067
http://labs.mwrinfosecurity.com/files/Advisories/mwri_linux-usb-buffer-overflow_2009-10-29.pdf

Acknowledgement:

Red Hat would like to thank Rafael Dominguez Vega for reporting this issue.

Comment 2 Eugene Teo (Security Response) 2011-07-17 15:51:27 UTC
Statement:

This issue did not affect the Linux kernel as shipped with Red Hat Enterprise Linux 6 and Red Hat Enterprise MRG as the affected code has been removed. It was addressed in Red Hat Enterprise Linux 5 via https://rhn.redhat.com/errata/RHSA-2011-1386.html. Red Hat Enterprise Linux 4 is now in Production 3 of the maintenance life-cycle, https://access.redhat.com/support/policy/updates/errata/, therefore the fix for this issue is not currently planned to be included in the future updates.

Comment 8 errata-xmlrpc 2011-10-20 17:29:31 UTC
This issue has been addressed in following products:

  Red Hat Enterprise Linux 5

Via RHSA-2011:1386 https://rhn.redhat.com/errata/RHSA-2011-1386.html

Comment 9 Eugene Teo (Security Response) 2011-10-25 03:48:15 UTC
Created kernel tracking bugs for this issue

Affects: fedora-all [bug 748675]

Comment 10 Tom 2011-11-07 22:32:19 UTC
(In reply to comment #8)
> This issue has been addressed in following products:
> 
>   Red Hat Enterprise Linux 5
> 
> Via RHSA-2011:1386 https://rhn.redhat.com/errata/RHSA-2011-1386.html

Can you please attach the content of the patch here or point to me the commit which contains this fix?

Thanks.

Comment 11 Eugene Teo (Security Response) 2011-11-08 09:21:01 UTC
(In reply to comment #10)
> (In reply to comment #8)
> > This issue has been addressed in following products:
> > 
> >   Red Hat Enterprise Linux 5
> > 
> > Via RHSA-2011:1386 https://rhn.redhat.com/errata/RHSA-2011-1386.html
> 
> Can you please attach the content of the patch here or point to me the commit
> which contains this fix?
> 
> Thanks.

This was not fixed upstream as it was removed in 2.6.27. This issue is Red Hat Enterprise Linux 5 specific. Thanks.

Comment 12 Eugene Teo (Security Response) 2011-11-08 09:21:30 UTC
diff --git a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c
index 1fef36e..9aeb632 100644
--- a/drivers/usb/misc/auerswald.c
+++ b/drivers/usb/misc/auerswald.c
@@ -1950,13 +1950,15 @@  static int auerswald_probe (struct usb_interface *intf,
 
 	/* Try to get a suitable textual description of the device */
 	/* Device name:*/
-	ret = usb_string( cp->usbdev, AUSI_DEVICE, cp->dev_desc, AUSI_DLEN-1);
+	/* Save room for serial and subscriber prefixes */
+	ret = usb_string( cp->usbdev, AUSI_DEVICE, cp->dev_desc, AUSI_DLEN-1-6-2);
 	if (ret >= 0) {
 		u += ret;
 		/* Append Serial Number */
 		memcpy(&cp->dev_desc[u], ",Ser# ", 6);
 		u += 6;
-		ret = usb_string( cp->usbdev, AUSI_SERIALNR, &cp->dev_desc[u], AUSI_DLEN-u-1);
+		/* save room for subscriber prefix */
+		ret = usb_string( cp->usbdev, AUSI_SERIALNR, &cp->dev_desc[u], AUSI_DLEN-u-1-2);
 		if (ret >= 0) {
 			u += ret;
 			/* Append subscriber number */


Note You need to log in before you can comment on or make changes to this bug.