|
News,
Internal,
Projects,
Home Software, Support, Documentation |
¾È³çÇϼ¼¿ä..¾Æ....Ãʺ¸¶ó¼ ±ÛÀ» ¿Ã¸®´Â°Å°¡ ¾ÆÀÌ ³²»ç½Ã·¯....-_-a
½ÃÅ¥¸®Æ¼¿¡ ³Ö¾î¾ßÇϴµ¥ ¸Ö¶ó¼·ò...
ÀÌ°Ç 9.7ÀÏÀÚ·Î ¿Ã¶ó¿Â ½ÃÅ¥¸®Æ¼ÀÔ´Ï´Ù...ÀÌÆ²Á¤µµ Áö³µÁÒ..^^
A vulnerability exists in the program "screen" versions 3.9.5 and earlier. If screen is installed setuid root, a local user may gain root privilege. There are some systems where the program isn't setuid root by default, but on many systems (SuSE Linux, Red Hat 5.2 and earlier, *BSD ports packages, Solaris, and others) it is - making this vulnerability very dangerous.
Vulnerable systems:
NetBSD
FreeBSD
OpenBSD (screen is a part of the ports collection)
Red Hat Linux 5.2 and earlier
SuSE Linux
Solaris
Many other commercial UNIX flavors
To quickly check if your version is vulnerable, have these two lines in ~/.screenrc:
vbell on
vbell_msg '%x'
Set TERM to vt100, start screen and press ctrl-G (you may need to issue the command echo ^V^G to get a visual bell). If you see a hexadecimal number on the last line, your version of screen is vulnerable. However it can't be exploited unless the program is installed setuid root.
Immune systems:
Red Hat Linux 6.0 and later, most other Linux distributions
The bug is located in screen.c in function serv_select_fn():
...
else if (visual && !D_VB && (!D_status || !D_status_bell))
{
D_status_delayed = -1;
Msg(0, VisualBellString);
if (D_status)
{
...
Msg() feeds the second argument to sprintf() and since VisualBellString is user defined, we have a classical format bug. From there, a malicious user can either do the old trick and write over a return address in stack, or for instance, write over the real_uid variable where screen saves the user id. After zeroing this variable with the format string the user can just open a new window with a root shell in it.
For this reason the bug is quite platform-independent; neither shell code nor executable stack is needed. The vulnerability has been tested on Linux, Intel and ppc architectures.
Workaround:
Removing the setuid bit from the binary makes it impossible to be exploited:
$ chmod 111 /usr/local/bin/screen (or /usr/bin/screen)
Note that this may require some changes to the mode of screen's socket dir (usually /tmp/screens). Consult screen documentation for more info.
Solution:
Screen authors (and some OS vendors) have been informed and a new version of screen can be retrieved from:
ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-3.9.8.tar.gz
Diffs relative to version 3.9.5:
ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-3.9.5-3.9.8.diff.gz
Á¦°¡ ¿µ¾î°¡ µþ·Á½á¿ä...´Ùµé ¼ö°íÇϼ¼¿ä..
--
To Unsubscribe: send mail to majordomo@kr.FreeBSD.org
with "unsubscribe questions" in the BODY of the message
|
Copyright © 1998-2005 Korea FreeBSD Users Group. All rights reserved. webmaster at kr.FreeBSD.org $Date: 2002/03/26 13:28:57 $ |
|