From owner-announce-jp@jp.freebsd.org  Sun Jul 16 09:13:59 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id JAA20592;
	Sun, 16 Jul 2000 09:13:59 +0900 (JST)
	(envelope-from owner-announce-jp@jp.FreeBSD.org)
Message-ID: <20000716001357.3841.qmail@smtp.246.ne.jp>
To: announce-jp@jp.FreeBSD.org
Reply-To: doc-jp@jp.freebsd.org
In-Reply-To: <20000705231236.8B9D237BCFB@hub.freebsd.org>
References: <20000705231236.8B9D237BCFB@hub.freebsd.org>
X-Mailer: Mew version 1.94.2 on Emacs 19.28 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Sun, 16 Jul 2000 09:13:34 +0900
From: Koga Youichirou <y-koga@jp.freebsd.org>
X-Dispatcher: imput version 20000228(IM140)
X-ML-maintainer: owner-announce-jp@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: announce-jp 485
Subject: Re: ANNOUNCE: FreeBSD Security Advisory: FreeBSD-SA-00:30.openssh
Errors-To: owner-announce-jp@jp.freebsd.org
Sender: owner-announce-jp@jp.freebsd.org


 $B$3$N%a!<%k$O(B, announce-jp $B$KN.$l$?(B

  Subject: ANNOUNCE: FreeBSD Security Advisory: FreeBSD-SA-00:30.openssh
  From: FreeBSD Security Advisories <security-advisories@freebsd.org>
  Date: Wed,  5 Jul 2000 16:12:36 -0700 (PDT)
  Message-Id: <20000705231236.8B9D237BCFB@hub.freebsd.org>
  X-Sequence: announce-jp 470

 $B$rF|K\8lLu$7$?$b$N$G$9(B. 

 $B86J8$O(B PGP $B=pL>$5$l$F$$$^$9$,(B, $B$3$NF|K\8lLu$O(B PGP $B=pL>$5$l$F$$$^$;$s(B. 
 $B%Q%C%AEy$NFbMF$,2~cb$5$l$F$$$J$$$3$H$r3NG'$9$k$?$a$K(B PGP $B$N%A%'%C%/$r(B
 $B9T$J$&$K$O(B, $B86J8$r;2>H$7$F$/$@$5$$(B. 

 $BF|K\8lLu$O(B FreeBSD $BF|K\8l%I%-%e%a%s%F!<%7%g%s%W%m%8%'%/%H(B(doc-jp)$B$,;29M$N(B
 $B$?$a$KDs6!$9$k$b$N$G(B, doc-jp $B$O(B $B$=$NFbMF$K$D$$$F$$$+$J$kJ]>Z$b$$$?$7$^$;$s(B.
 $BF|K\8lLu$K$D$$$F$N$*Ld$$9g$o$;$O(B doc-jp@jp.FreeBSD.org $B$^$G$*4j$$$7$^$9(B.

--($B$3$3$+$i(B)
=============================================================================
FreeBSD-SA-00:30                                           Security Advisory
                                                                FreeBSD, Inc.

$B%H%T%C%/(B:	OpenSSH UseLogin directive permits remote root access

$BJ,N`(B:		core
$B%b%8%e!<%k(B:	openssh
$B9pCNF|(B:		2000-07-05
$B%/%l%8%C%H(B:	Markus Friedl <markus@OpenBSD.org>
$B1F6AHO0O(B:	FreeBSD 4.0-RELEASE, $B=$@5F|0JA0$N(B FreeBSD 4.0-STABLE 
		$B$*$h$S(B 5.0-CURRENT
$B=$@5F|(B:		2000-06-11
$B%Y%s%@$N%9%F!<%?%9(B:	$B<eE@$K$D$$$FH/I=:Q(B
FreeBSD $B$K8GM-$+(B:	NO

I.   $BGX7J(B - Background

OpenSSH $B$O(B, $BDL?.$N0E9f2=$*$h$SG'>Z5!G=$rDs6!$9$k(B SSH1 secure shell
protocol $B$N<BAu$G$9(B ($B:G6a$N%P!<%8%g%s$G$O(B SSH2 $B$b<BAu$7$F$$$^$9(B).
OpenSSH $B$O;HMQ$K$D$$$F@)8B$r$7$J$$$h$&(B, $B%U%j!<$GDs6!$5$l$F$$$^$9(B. 

II.  $BLdBj$N>\:Y(B - Problem Description

sshd $B%5!<%P$O(B, $B0lHL$N%f!<%6%m%0%$%s$r=hM}$9$k$3$H$,$G$-$k$h$&(B, $BDL>o(B 
root $B8"8B$G<B9T$5$l$F$$$^$9(B. OpenSSH $B$K$O(B, $B%f!<%6%m%0%$%s$r%5!<%PFbIt(B
$B$G=hM}$;$:(B, /usr/bin/login $B%3%^%s%I7PM3$G9T$J$&$h$&$K$9$k(B UseLogin $B$H(B
$B$$$&@_Dj%*%W%7%g%s$,$"$j$^$9(B. $B$3$N%*%W%7%g%s$O%G%U%)%k%H$G$OM-8z$K$O$J(B
$B$C$F$$$^$;$s(B. 

OpenSSH $B$K$O(B, $B%j%b!<%H$N%f!<%6$,%5!<%P>e$GHsBPOCE*$K%3%^%s%I$r<B9T$G$-(B
$B$k$h$&$K$9$k5!G=$b$"$j$^$9(B. $B$3$N>l9g(B, $B%3%^%s%I$r<B9T$9$kA0$K(B UseLogin 
$B;XDj;R$,@5$7$/(B root $B8"8B$rMn$H$9=hM}$r9T$J$$$^$;$s(B. $B$D$^$j(B, root $B8"8B(B
$B$r;}$?$J$$%j%b!<%H$N%f!<%6$,(B, $B%m!<%+%k%7%9%F%`>e$N%3%^%s%I$r(B root $B8"8B(B
$B$G<B9T$9$k$3$H$,2DG=$G$9(B. 

$B%G%U%)%k%H$N@_Dj$G$O(B, OpenSSH $B$K$O$3$NLdBj$K$h$k<eE@$,B8:_$7$J$$$3$H$K(B
$BCm0U$7$F$/$@$5$$(B. $B$3$N%*%W%7%g%s$O(B, $BBgB??t$N%7%9%F%`$GI,MW$N$J$$$b$N$G(B
$B$9(B. 

OpenSSH $B$,%$%s%9%H!<%k$5$l$k$N$O(B, FreeBSD $B%7%9%F%`$N%$%s%9%H!<%k;~$K(B 
'crypto' $B%G%#%9%H%j%S%e!<%7%g%s$rA*Br$9$k$+(B, $B%=!<%9$+$i%3%s%Q%$%k$9$k(B
$B>l9g$G$O(B, $B9q:]HG(B RSA $B%i%$%V%i%j$rMQ0U$7$F$*$/$+(B, RSAREF $B$N(B port $B$r;vA0(B
$B$K%$%s%9%H!<%k$7$F$*$$$?>l9g$G$9(B. 

III. $B1F6AHO0O(B - Impact

sshd $B$N@_Dj$G(B UseLogin $B;XDj;R$rM-8z$K$7$?>l9g(B, $B%m!<%+%k%^%7%s$K(B SSH $B%"(B
$B%/%;%92DG=$J%j%b!<%H$N%f!<%6$,(B, $BG$0U$N%3%^%s%I$r(B root $B8"8B$G<B9T$9$k$3(B
$B$H$,2DG=$G$9(B. 

IV.  $BBP1~:v(B - Workaround

/etc/ssh/sshd_config $B%U%!%$%k$G(B 'UseLogin No' $B$r;XDj$7(B, $B0J2<$N%3%^%s%I(B
$B$r(B root $B$G<B9T$9$k$3$H$G(B SSH $B%5!<%P$r:F5/F0$9$k(B. 

# kill -HUP `cat /var/run/sshd.pid`

$B$3$NA`:n$K$h$j(B, $B?F%W%m%;%9$O:F@8@.$5$l(B, $B@_Dj%U%!%$%k$rFI$_9~$_D>$7$^$9(B. 
$B$=$N:]$K(B, $B$9$G$K3NN)$5$l$F$$$k(B SSH $B%;%7%g%s$rK8$2$k$3$H$O$"$j$^$;$s(B. 

$B:G=i$N5/F0$,@dBP%Q%9$G9T$J$o$l$F$$$J$$>l9g(B ($B$D$^$j(B "/usr/sbin/sshd" $B$H(B
$B$7$F$G$O$J$/(B, "sshd" $B$H$7$F<B9T$5$l$?>l9g(B), $B@5$7$/:F%9%?!<%H$G$-$J$$$H(B
$B$$$&%P%0$,(B sshd $B$KB8:_$9$k$3$H$KCm0U$7$F$/$@$5$$(B ($B$3$N%P%0$O(B, $B$3$N4+9p(B
$B$rMQ0U$7$F$$$k4V$KH/8+$5$l$^$7$?(B. 2000$BG/(B7$B7n(B3$BF|$N(B FreeBSD 5.0-CURRENT 
$B$H(B 4.0-STABLE $B$G=$@5$5$l$F$$$^$9(B). 

# ps -p `cat /var/run/sshd.pid`
  PID  TT  STAT      TIME COMMAND
 2110  ??  Ss     0:00.97 /usr/sbin/sshd

$B%5!<%P%W%m%;%9$,B8:_$7$J$/$J$C$?>l9g(B, $B0J2<$N%3%^%s%I$r(B root $B$G<B9T$7$F(B
$B%5!<%P$r:F%9%?!<%H$5$;$F$/$@$5$$(B. 

# /usr/sbin/sshd

V.   $B=$@5=hCV(B - Solution

$B0J2<$N$$$:$l$+$r9T$J$C$F$/$@$5$$(B. 

1) $B=$@5F|0J9_$N(B FreeBSD 4.0-STABLE $B$^$?$O(B 5.0-CURRENT $B$K%"%C%W%0%l!<%I(B
$B$9$k(B. FreeBSD $B$N$3$l$i$N%P!<%8%g%s$K$O(B 4.0-RELEASE $B$K4^$^$l$F$$$k$b$N(B
$B$h$j$b?7$7$$(B OpenSSH $B$N%P!<%8%g%s(B 2.1 $B$,4^$^$l$F$$$^$9(B. $B$3$N%P!<%8%g%s(B
$B$G$O(B, SSH2 $B%W%m%H%3%k$*$h$S(B DSA $B80$N%5%]!<%H$J$I$N5!G=6/2=$,$5$l$F$$$^(B
$B$9(B. 

2) $BK\4+9p$r%U%!%$%k$KJ]B8$7(B, $B;HMQ$7$F$$$k(B FreeBSD $B%P!<%8%g%s$KE,9g$7$?(B
$B%Q%C%A$r<h$j=P$7$^$9(B. $B$"$k$$$O(B, $B0J2<$N(B URL $B$+$iE,9g$7$?%Q%C%A$H(B PGP $B=p(B
$BL>$r%@%&%s%m!<%I$7(B, PGP $B%f!<%F%#%j%F%#$r;HMQ$7$F=pL>$N8!>Z$r9T$J$$$^$9(B.

# fetch ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:30/sshd.patch
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:30/sshd.patch.asc

$B0J2<$N%3%^%s%I$r(B root $B$G<B9T$7$^$9(B. 

# cd /usr/src/crypto/openssh
# patch -p < /path/to/patch/or/advisory
# cd /usr/src/secure/lib/libssh
# make all
# cd /usr/src/secure/usr.sbin/sshd
# make all install
# kill -HUP `cat /var/run/sshd.pid`

$B!VBP1~:v!W$N>O$K5-=R$7$?Cm0U;v9`$r;2>H$7(B, sshd $B%5!<%P%W%m%;%9$,B8:_$7(B
$B$F$$$k$3$H$r3NG'$7$F$/$@$5$$(B. 

VI.   $B%Q%C%A(B - Patch

   Index: sshd.c
   ===================================================================
   RCS file: /home/ncvs/src/crypto/openssh/sshd.c,v
   retrieving revision 1.6
   diff -u -r1.6 sshd.c
   --- sshd.c	2000/03/09 14:52:31	1.6
   +++ sshd.c	2000/07/04 03:40:46
   @@ -2564,7 +2564,13 @@
    	char *argv[10];
    #ifdef LOGIN_CAP
    	login_cap_t *lc;
   +#endif
    
   +	/* login(1) is only called if we execute the login shell */
   +	if (options.use_login && command != NULL)
   +		options.use_login = 0;
   +
   +#ifdef LOGIN_CAP
    	lc = login_getpwclass(pw);
    	if (lc == NULL)
    		lc = login_getclassbyname(NULL, pw);

