Bug 49118 (CVE-2004-0075) - VUL-0: CVE-2004-0075: kernel: Vicam USB driver
Summary: VUL-0: CVE-2004-0075: kernel: Vicam USB driver
Status: RESOLVED FIXED
Alias: CVE-2004-0075
Product: SUSE Security Incidents
Classification: Novell Products
Component: Incidents (show other bugs)
Version: unspecified
Hardware: All Linux
: P3 - Medium : Normal
Target Milestone: ---
Assignee: Thomas Biege
QA Contact: Security Team bot
URL:
Whiteboard: CVE-2004-0075: CVSS v2 Base Score: 2....
Keywords:
Depends on:
Blocks:
 
Reported: 2004-01-23 22:56 UTC by Thomas Biege
Modified: 2021-10-13 13:39 UTC (History)
1 user (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
vicam-2.4.25pre.diff (696 bytes, patch)
2004-01-23 23:32 UTC, Thomas Biege
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Biege 2004-01-23 22:56:29 UTC
Alan mentioned it at the botom of another mail. 
(It triggers a crash/kernel oops) 
 
Date: Fri, 09 Jan 2004 00:52:05 +0000 
From: Alan Cox <alan@lxorguk.ukuu.org.uk> 
To: vendor-sec@lst.de, akpm@osdl.org 
Subject: [vendor-sec] Direct render infrastructure: multiple apparent 
vulnerabilities 
 
The DRI code contains lots of gems like 
 
static int r128_cce_dispatch_write_span( drm_device_t *dev, 
                                         drm_r128_depth_t *depth ) 
{ 
        drm_r128_private_t *dev_priv = dev->dev_private; 
        int count, x, y; 
        u32 *buffer; 
        u8 *mask; 
        int i; 
        RING_LOCALS; 
        DRM_DEBUG( "%s\n", __FUNCTION__ ); 
 
        count = depth->n; 
        if ( copy_from_user( &x, depth->x, sizeof(x) ) ) { 
                return -EFAULT; 
        } 
        if ( copy_from_user( &y, depth->y, sizeof(y) ) ) { 
                return -EFAULT; 
        } 
 
        buffer = kmalloc( depth->n * sizeof(u32), GFP_KERNEL ); 
 
Which has at least 3 bugs in it 
 
1. depth is already kernel space 
2. depth->n is never checked 
3. depth->n * 4 tends to be a small number if you pick the right n, 
   and it then copies into it. 
 
Its not the only example at all so folks may wish to audit their DRI 
code extensively. I've not looked at the non Linux paths. 
 
In the XFree 4.4 devel tree the sis memory allocator for the non sisfb 
paths is also not robust and at the very least I can oops it. Eric 
Anholt knows about this one and will look at it. The radeon mem code 
looks similar to the SIS but I've not attacked that. 
 
Only the sis memory allocator in XFree 4.4 rc is public knowledge. 
 
See also however a seperate linux-kernel posting suggesting bugs in the 
gamma driver about user/kernel copying, and also in vt.c 
 
 
Alan
Comment 1 Thomas Biege 2004-01-23 22:56:29 UTC
<!-- SBZ_reproduce  -->
-
Comment 2 Thomas Biege 2004-01-23 22:56:58 UTC
CAN-2004-0075 
Comment 3 Thomas Biege 2004-01-23 23:32:00 UTC
Created attachment 15741 [details]
vicam-2.4.25pre.diff
Comment 4 Thomas Biege 2004-01-23 23:34:36 UTC
Sorry, I mixed it up. vt.c != vicam.c 
Forget #1. I meant vicam for sure. 
Comment 5 Hubert Mantel 2004-01-26 21:39:08 UTC
Fixed.
Comment 6 Thomas Biege 2004-02-16 18:39:12 UTC
<!-- SBZ_reopen -->Reopened by thomas@suse.de at Mon Feb 16 11:39:12 2004
Comment 7 Thomas Biege 2004-02-16 18:39:12 UTC
reopen, reassigned for tracking. 
Comment 8 Thomas Biege 2004-02-20 18:31:29 UTC
2.4.18 is not vulnerable. 
Comment 9 Thomas Biege 2004-02-20 20:21:33 UTC
2.4.20 (8.2) is fixed too. 
Comment 10 Thomas Biege 2004-03-24 00:56:59 UTC
packages released. 
Comment 11 Thomas Biege 2009-10-13 20:04:10 UTC
CVE-2004-0075: CVSS v2 Base Score: 2.1 (AV:L/AC:L/Au:N/C:N/I:N/A:P)