Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Nov 1995 21:06:24 -0500 (EST)
From:      John Capo <jc@irbs.com>
To:        rnw+@andrew.cmu.edu (Robert N Watson)
Cc:        freebsd-questions@freefall.freebsd.org
Subject:   Re: CERT advisory, telnetd bug -- any progress?
Message-ID:  <199511020206.VAA25935@irbs.irbs.com>
In-Reply-To: <gka17Aq00YUxARy0d8@andrew.cmu.edu> from "Robert N Watson" at Nov 1, 95 07:33:16 pm

next in thread | previous in thread | raw e-mail | index | archive | help
Robert N Watson writes:
> 
> I know there was some discussion going on on freebsd-security (or
> somewhere) concerning the telnetd patch -- has a formal patch bee
> released yet, or are 2.0.5R users dead in the water for a bit?  (well,
> rather, sitting ducks in the water.)  Could a binary update to telnetd
> be put up somewhere for us to grab?
> 

Here are patches, one for -stable and one for 1.1.5.1.  I don't
know if either will apply to 2.0.5 but you can see how it is
implemented.  Basically a function is added called scrub_env() and
it is called at the beginning of start_login().

In lieu of patching telnetd, you can use the setgid scheme in the
bulletin.

John Capo                                                   jc@irbs.com
IRBS Engineering                       High performance FreeBSD systems
(305) 792-9551                      Internet Consulting - ISP Solutions


--- Patch for -stable (aka 2.1) ---
*** libexec/telnetd/sys_term.c	Sun Sep 10 04:39:50 1995
--- /usr/current/libexec/telnetd/sys_term.c	Tue Oct 24 05:35:22 1995
***************
*** 1555,1560 ****
--- 1555,1562 ----
  		fatal(net, "makeutx failed");
  #endif
  
+ 	scrub_env();
+ 
  	/*
  	 * -h : pass on name of host.
  	 *		WARNING:  -h is accepted by login if and only if
***************
*** 1766,1771 ****
--- 1768,1798 ----
  	return(argv);
  }
  #endif	/* NEWINIT */
+ 
+ /*
+  * scrub_env()
+  *
+  * Remove a few things from the environment that
+  * don't need to be there.
+  */
+ scrub_env()
+ {
+ 	register char **cpp, **cpp2;
+ 
+ 	for (cpp2 = cpp = environ; *cpp; cpp++) {
+ #ifdef __FreeBSD__
+ 		if (strncmp(*cpp, "LD_LIBRARY_PATH=", 16) &&
+ 		    strncmp(*cpp, "LD_PRELOAD=", 11) &&
+ #else
+ 		if (strncmp(*cpp, "LD_", 3) &&
+ 		    strncmp(*cpp, "_RLD_", 5) &&
+ 		    strncmp(*cpp, "LIBPATH=", 8) &&
+ #endif
+ 		    strncmp(*cpp, "IFS=", 4))
+ 			*cpp2++ = *cpp;
+ 	}
+ 	*cpp2 = 0;
+ }
  
  /*
   * cleanup()
---- End of patch ---

---- Patch for 1.1.5.1 ----
*** libexec/telnetd/sys_term.c.orig	Sun May 22 15:24:51 1994
--- libexec/telnetd/sys_term.c	Wed Nov  1 14:46:45 1995
***************
*** 1275,1280 ****
--- 1275,1282 ----
  	register char **argv;
  	char **addarg(), *user;
  
+ 	scrub_env();
+ 
  	/*
  	 * -h : pass on name of host.
  	 *		WARNING:  -h is accepted by login if and only if
***************
*** 1371,1376 ****
--- 1373,1397 ----
  	return(argv);
  }
  #endif	/* NEWINIT */
+ 
+ /*
+  * scrub_env()
+  *
+  * Remove a few things from the environment that
+  * don't need to be there.
+  */
+ scrub_env()
+ {
+ 	register char **cpp, **cpp2;
+ 
+ 	for (cpp2 = cpp = environ; *cpp; cpp++) {
+ 		if (strncmp(*cpp, "LD_LIBRARY_PATH=", 16) &&
+ 		    strncmp(*cpp, "LD_PRELOAD=", 11) &&
+ 		    strncmp(*cpp, "IFS=", 4))
+ 			*cpp2++ = *cpp;
+ 	}
+ 	*cpp2 = 0;
+ }
  
  /*
   * cleanup()
--- End of Patch ---



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511020206.VAA25935>