130889 – media-libs/jpeg: maxmem feature not used (DoS via memory exhaustion)

Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 130889 - media-libs/jpeg: maxmem feature not used (DoS via memory exhaustion)
Summary: media-libs/jpeg: maxmem feature not used (DoS via memory exhaustion)
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Security
Classification: Unclassified
Component: Vulnerabilities (show other bugs)
Hardware: All Linux
: High normal
Assignee: Gentoo Security
URL:
Whiteboard: A3? [glsa]
Keywords:
: 135644 (view as bug list)
Depends on:
Blocks:
Reported: 2006年04月22日 14:22 UTC by Tavis Ormandy (RETIRED)
Modified: 2006年11月11日 20:07 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
example image (max_memory_to_use.jpg,738 bytes, image/jpeg)
2006年04月22日 14:24 UTC, Tavis Ormandy (RETIRED)
no flags Details
jpeg-sysconf-maxmem.diff (jpeg-sysconf-maxmem.diff,662 bytes, patch)
2006年04月23日 01:26 UTC, Tavis Ormandy (RETIRED)
no flags Details | Diff
sysconf maxmem patch (jpeg-sysconf-maxmem.diff,678 bytes, patch)
2006年04月23日 02:56 UTC, Tavis Ormandy (RETIRED)
no flags Details | Diff
Updated patch supporting FreeBSD and DragonFly and with fallback. (60_all_jpeg-maxmem-sysconf.patch,1.28 KB, patch)
2006年05月28日 17:50 UTC, Diego Elio Pettenò (RETIRED)
no flags Details | Diff
Updated patch supporting *BSD and Darwin and with fallback. (60_all_jpeg-maxmem-sysconf.patch,1.36 KB, patch)
2006年05月31日 12:01 UTC, Diego Elio Pettenò (RETIRED)
no flags Details | Diff
Re-Updated patch supporting *BSD and Darwin and with fallback. (patch,1.38 KB, patch)
2006年05月31日 12:39 UTC, Fabian Groffen
no flags Details | Diff
latest darwin/bsd/linux maxmem patch from SVN by Flameeyes (60_all_jpeg-maxmem-sysconf.patch,1.37 KB, patch)
2006年05月31日 12:53 UTC, Fabian Groffen
no flags Details | Diff
Show Obsolete (4) View All Add an attachment (proposed patch, testcase, etc.)

Note You need to log in before you can comment on or make changes to this bug.
Description Tavis Ormandy (RETIRED) gentoo-dev 2006年04月22日 14:22:24 UTC
we're distribute the jpeg library without a feature it calls `maxmem`, which is used to restrict images from allocating ridiculous amounts of memory and allowing developers to specify a reasonable limit for allocation.
The documentation all assumes this feature is enabled, and documents settings suc as the JPEGMEM environment variable, max_mem_to_use jpeg option, the -maxmemory argument to djpeg and so on. A user might reasonably expect these setttings to prevent a malicious image from disrupting any image processing routines that accept images from users, however they do nothing, potentially resulting in a dos via memory exhaustion.
Suggest adding --enable-maxmem option to configure, which will solve this problem.
Comment 1 Tavis Ormandy (RETIRED) gentoo-dev 2006年04月22日 14:24:10 UTC
Created attachment 85214 [details]
example image
Comment 2 Tavis Ormandy (RETIRED) gentoo-dev 2006年04月22日 14:36:19 UTC
graphics herd: please provide an updated ebuild, or comment if appropriate.
Comment 3 SpanKY (RETIRED) gentoo-dev 2006年04月22日 21:08:48 UTC
what exactly would you say a reasonable limit is ?
Comment 4 Tavis Ormandy (RETIRED) gentoo-dev 2006年04月23日 01:05:11 UTC
How about we replace jpeg_mem_init() in jmemansi.c with a routine that that uses sysconf() with _SC_PHYS_PAGES? 
example:
GLOBAL(long)
jpeg_mem_init (j_common_ptr cinfo)
{
 long phys_size;
 if ((phys_size = sysconf(_SC_PHYS_PAGES)) == -1)
 return DEFAULT_MAX_MEM; /* defined by libjpeg via --enable-maxmem=xx */
 if ((phys_size *= sysconf(_SC_PAGESIZE)) < 0)
 return DEFAULT_MAX_MEM;
 return phys_size;
}
and set DEFAULT_MAX_MEM to 64M or similar as a fallback? This would be a reasonable default, but allow JPEGMEM and max_memory_to_use to be honoured by users who want to prevent memory exhaustion.
Comment 5 Tavis Ormandy (RETIRED) gentoo-dev 2006年04月23日 01:26:23 UTC
Created attachment 85252 [details, diff]
jpeg-sysconf-maxmem.diff
suggested patch, tested with --enable-maxmem=64 (only used as a fallback)
Comment 6 Tavis Ormandy (RETIRED) gentoo-dev 2006年04月23日 02:56:53 UTC
Created attachment 85260 [details, diff]
sysconf maxmem patch
the comments in jmemansi.c say "If you can actually get the available space, it's a good idea to subtract a slop factor of 5% or so.", so this patch does that.
Comment 7 Thierry Carrez (RETIRED) gentoo-dev 2006年05月14日 10:14:42 UTC
Misplaced
Comment 8 Thierry Carrez (RETIRED) gentoo-dev 2006年05月18日 10:08:21 UTC
graphics team please patch
Comment 9 Diego Elio Pettenò (RETIRED) gentoo-dev 2006年05月28日 17:49:17 UTC
I had to drop ~x86-fbsd keyword from -r7 because the calls are very linux specific, I do have a portable patch, if that can be used instead of the current would be perfect.
Comment 10 Diego Elio Pettenò (RETIRED) gentoo-dev 2006年05月28日 17:50:07 UTC
Created attachment 87770 [details, diff]
Updated patch supporting FreeBSD and DragonFly and with fallback.
Comment 11 Stefan Cornelius (RETIRED) gentoo-dev 2006年05月31日 10:28:13 UTC
arches please test and mark 6b-r7 stable, thanks
Comment 12 Thomas Cort (RETIRED) gentoo-dev 2006年05月31日 10:37:03 UTC
alpha stable.
Comment 13 Fabian Groffen gentoo-dev 2006年05月31日 11:10:57 UTC
Darwin has a problem similar to BSD. However, Diego's patch won't work for us. I need something like this:
#if HAVE_SYSCTL && defined HW_PHYSMEM
 { /* This works on *bsd and darwin. */
 unsigned int physmem;
 size_t len = sizeof physmem;
 static int mib[2] = { CTL_HW, HW_PHYSMEM };
 if (sysctl (mib, ARRAY_SIZE (mib), &physmem, &len, NULL, 0) == 0
	&& len == sizeof (physmem))
 return (double) physmem;
 }
#endif
Diego, is your patch yet in (doesn't look like so), and can above code be combined with yours? I grabbed above thing from http://www.opensource.apple.com/darwinsource/WWDC2004/gccfast-1614/libiberty/physmem.c
I cannot mark this package stable on ppc-macos because the package doesn't compile.
Comment 14 Gustavo Zacarias (RETIRED) gentoo-dev 2006年05月31日 11:51:56 UTC
sparc stable.
Comment 15 Diego Elio Pettenò (RETIRED) gentoo-dev 2006年05月31日 12:01:55 UTC
Created attachment 88017 [details, diff]
Updated patch supporting *BSD and Darwin and with fallback.
Here it is, thanks Fabian :)
Comment 16 Fabian Groffen gentoo-dev 2006年05月31日 12:39:59 UTC
Created attachment 88028 [details, diff]
Re-Updated patch supporting *BSD and Darwin and with fallback.
this patch fixes the return type to be long, and to return 0 in case the condition does not hold.
Comment 17 Markus Rothe (RETIRED) gentoo-dev 2006年05月31日 12:42:46 UTC
stable on ppc64
Comment 18 Fabian Groffen gentoo-dev 2006年05月31日 12:46:13 UTC
Comment on attachment 88028 [details, diff]
Re-Updated patch supporting *BSD and Darwin and with fallback.
this patch is wrong. Don't use it. Sorry for the spam.
Comment 19 Fabian Groffen gentoo-dev 2006年05月31日 12:53:35 UTC
Created attachment 88029 [details, diff]
latest darwin/bsd/linux maxmem patch from SVN by Flameeyes
Attached is the proper fix for BSD/Darwin and GNU/Linux. This patch should be put in the patch file after which I can mark ppc-macos stable.
Taviso or who is responsible: could you add + patchrevbump this patch to the current ebuild? Thanks.
Comment 20 Thomas Cort (RETIRED) gentoo-dev 2006年05月31日 16:49:52 UTC
amd64 stable.
Comment 21 Sander Knopper 2006年06月01日 06:13:10 UTC
on x86:
compiles fine. Further I ran several transformations on an image which also went fine and gave the expected result. I also tested the functionality of the library itself by using KDE and Gimp which worked fine as well.
Comment 22 Tobias Scherbaum (RETIRED) gentoo-dev 2006年06月01日 11:14:19 UTC
ppc stable
Comment 23 Mark Loeser (RETIRED) gentoo-dev 2006年06月01日 20:56:38 UTC
x86 done, thanks for testing Sander
Comment 24 René Nussbaumer (RETIRED) gentoo-dev 2006年06月03日 02:24:35 UTC
Stable on hppa
Comment 25 Diego Elio Pettenò (RETIRED) gentoo-dev 2006年06月05日 09:35:20 UTC
*** Bug 135644 has been marked as a duplicate of this bug. ***
Comment 26 Sune Kloppenborg Jeppesen (RETIRED) gentoo-dev 2006年06月10日 00:33:45 UTC
Calling a GLSA vote on this one:
<taviso> re jpeg, i dont think glsa is nescessary, it's very lame...just a client dos
Does any important applications use this?
Comment 27 Thomas Cort (RETIRED) gentoo-dev 2006年06月10日 05:29:46 UTC
(In reply to comment #26)
> Does any important applications use this?
Many applications do. Here is a list of some popular apps that use it: emacs, wine, abiword, ghostscript-*, php, blender, gimp, gphoto2, cups, mozilla{-firefox}, qt, opera, and others.
Complete List: http://gentoo-portage.com/media-libs/jpeg/RDep#ptabs 
Comment 28 Sune Kloppenborg Jeppesen (RETIRED) gentoo-dev 2006年06月10日 05:42:41 UTC
Ok lets have the GLSA.
Comment 29 Raphael Marichez (Falco) (RETIRED) gentoo-dev 2006年06月10日 23:36:06 UTC
yes, as for me a GLSA is needed, since this issue allows me to crash nearly every computer of my friends :), whatever they use (konq, firefox, safari, IE...). Some other linux distributions, and MacOS, windows... are affected too.
Comment 30 Sune Kloppenborg Jeppesen (RETIRED) gentoo-dev 2006年06月11日 13:29:47 UTC
GLSA 200606-11
arm, bsd, ia64, mips, ppc-macos, s390, sh don't forget to mark stable to benifit from the GLSA.
Comment 31 Diego Elio Pettenò (RETIRED) gentoo-dev 2006年06月11日 14:11:24 UTC
Did _anybody_ take into consideration my and Grobian's messages?
Both Gentoo/*BSD and Gentoo for Mac OSX are cut off by that patch unless someone apply our version, that's a no-op for anyone else.
If nobody from the interested parts is going to make that change in 24h, I suppose either me or Grobian will do that, but consider that anybody wanting to scream at us afterward will have had enough time to validate and comment.
Comment 32 Sune Kloppenborg Jeppesen (RETIRED) gentoo-dev 2006年06月11日 21:29:05 UTC
Sorry Diego I thought that it had already been applied. Taviso who applied the initial patch has been mostly away for some weeks due to a job change. (no screaming from here)
Comment 33 Fabian Groffen gentoo-dev 2006年06月12日 00:52:17 UTC
Diego, as I'll not be able to do this and mark ppc-macos today/tonight (no access to my machine), can you do this if you have time? Please also set the proper ppc-macos keyword if you do, I already tested with your patch. Thanks.
Comment 34 Fabian Groffen gentoo-dev 2006年06月16日 12:04:08 UTC
I updated the patchset to include Darwin/BSD fixes. Marked ppc-macos stable. Flameeyes can you manage the overlay (to which I committed the last cleaned up and working version of the patch) in the way you like? (e.g. removing or whatever, the patch is now in the main tree)
Comment 35 Joshua Kinard (RETIRED) gentoo-dev 2006年09月03日 21:01:11 UTC
6b-r7 stable on mips.


AltStyle によって変換されたページ (->オリジナル) /