[SECURITY] telnet client

From: David Magda (dmagda+trace050112_at_ee.ryerson.ca)
Date: 03/28/05


Date: 28 Mar 2005 15:36:58 -0500

Hello,

For those of you who are NOT subscribed to the security announcements
mailing list (why not?):

ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:01.telnet.asc

(I'm sure the cut-and-paste has messed up the signed message becuase
of formatting and what-not.)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

=============================================================================
FreeBSD-SA-05:01.telnet Security Advisory
                                                          The FreeBSD
Project

Topic: telnet client buffer overflows

Category: contrib
Module: contrib/telnet
Announced: 2005-03-28
Credits: iDEFENSE
Affects: All FreeBSD releases prior to 5.4-RELEASE
Corrected: 2005-03-28 15:50:00 UTC (RELENG_5, 5.4-PRERELEASE)
                2005-03-28 15:48:00 UTC (RELENG_4, 4.11-STABLE)
                2005-03-28 15:52:00 UTC (RELENG_5_3, 5.3-RELEASE-p6)
                2005-03-28 15:57:00 UTC (RELENG_4_11,
4.11-RELEASE-p1)
                2005-03-28 15:58:00 UTC (RELENG_4_10,
4.10-RELEASE-p6)
                2005-03-28 16:00:00 UTC (RELENG_4_8, 4.8-RELEASE-p28)
CVE Name: CAN-2005-0468 CAN-2005-0469

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and
the
following sections, please visit
<URL:http://www.freebsd.org/security/>.

I. Background

The telnet(1) command is a TELNET protocol client, used primarily to
establish terminal sessions across a network.

II. Problem Description

Buffer overflows were discovered in the env_opt_add() and
slc_add_reply() functions of the telnet(1) command. TELNET protocol
commands, options, and data are copied from the network to a
fixed-sized buffer. In the case of env_opt_add (CAN-2005-0468), the
buffer is located on the heap. In the case of slc_add_reply
(CAN-2005-0469), the buffer is global uninitialized data (BSS).

III. Impact

These buffer overflows may be triggered when connecting to a
malicious
server, or by an active attacker in the network path between the
client and server. Specially crafted TELNET command sequences may
cause the execution of arbitrary code with the privileges of the user
invoking telnet(1).

IV. Workaround

Do not use telnet(1) to connect to untrusted machines or over an
untrusted network.

V. Solution

Perform one of the following:

1) Upgrade your vulnerable system to 4-STABLE or 5-STABLE, or to the
RELENG_5_3, RELENG_4_11, RELENG_4_10, or RELENG_4_8 security branch
dated after the correction date.

2) To patch your present system:

The following patches have been verified to apply to FreeBSD 4.8,
4.10,
4.11, and 5.3 systems.

a) Download the relevant patch from the location below, and verify
the
detached PGP signature using your PGP utility.

[FreeBSD 4.x]
# fetch
ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:01/telnet4.patch
# fetch
ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:01/telnet4.patch.asc

[FreeBSD 5.x]
# fetch
ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:01/telnet5.patch
# fetch
ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:01/telnet5.patch.asc

b) Execute the following commands as root:

# cd /usr/src
# patch < /path/to/patch

c) Rebuild the operating system as described in
<URL:http://www.freebsd.org/doc/handbook/makeworld.html>.

VI. Correction details

The following list contains the revision numbers of each file that
was
corrected in FreeBSD.

Branch
Revision
  Path
-
-------------------------------------------------------------------------
RELENG_4
  src/crypto/heimdal/appl/telnet/telnet/telnet.c
  1.1.1.1.2.4
  src/crypto/kerberosIV/appl/telnet/telnet/telnet.c
  1.1.1.1.2.1
  src/crypto/telnet/telnet/telnet.c
  1.4.2.6
  src/usr.bin/telnet/telnet.c
  1.8.2.4
RELENG_4_11
  src/UPDATING
  1.73.2.91.2.2
  src/crypto/heimdal/appl/telnet/telnet/telnet.c
  1.1.1.1.2.3.10.1
  src/crypto/kerberosIV/appl/telnet/telnet/telnet.c
  1.1.1.1.22.1
  src/crypto/telnet/telnet/telnet.c
  1.4.2.5.12.1
  src/sys/conf/newvers.sh
  1.44.2.39.2.5
  src/usr.bin/telnet/telnet.c
  1.8.2.3.12.1
RELENG_4_10
  src/UPDATING
  1.73.2.90.2.7
  src/crypto/heimdal/appl/telnet/telnet/telnet.c
  1.1.1.1.2.3.8.1
  src/crypto/kerberosIV/appl/telnet/telnet/telnet.c
  1.1.1.1.20.1
  src/crypto/telnet/telnet/telnet.c
  1.4.2.5.10.1
  src/sys/conf/newvers.sh
  1.44.2.34.2.8
  src/usr.bin/telnet/telnet.c
  1.8.2.3.10.1
RELENG_4_8
  src/UPDATING
  1.73.2.80.2.32
  src/crypto/heimdal/appl/telnet/telnet/telnet.c
  1.1.1.1.2.3.4.1
  src/crypto/kerberosIV/appl/telnet/telnet/telnet.c
  1.1.1.1.16.1
  src/crypto/telnet/telnet/telnet.c
  1.4.2.5.6.1
  src/sys/conf/newvers.sh
  1.44.2.29.2.29
  src/usr.bin/telnet/telnet.c
  1.8.2.3.6.1
RELENG_5
  src/contrib/telnet/telnet/telnet.c
  1.14.6.1
RELENG_5_3
  src/UPDATING
  1.342.2.13.2.9
  src/contrib/telnet/telnet/telnet.c
  1.14.8.1
  src/sys/conf/newvers.sh
  1.62.2.15.2.11
-
  -------------------------------------------------------------------------

VII. References

[IDEF0866] Multiple Telnet Client slc_add_reply() Buffer Overflow
http://www.idefense.com/application/poi/display?id=220&type=vulnerabilities

[IDEF0867] Multiple Telnet Client env_opt_add() Buffer Overflow
http://www.idefense.com/application/poi/display?id=221&type=vulnerabilities
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0

iD8DBQFCSECrFdaIBMps37IRAnRJAJ0VbP6TyaX7SLE2EwSrIYU25JSD9wCfYoe9
Qg2Lw/6QFLOgYG1jPuzogEs=
=0rFv
-----END PGP SIGNATURE-----

-- 
David Magda <dmagda at ee.ryerson.ca>, http://www.magda.ca/
Because the innovator has for enemies all those who have done well under
the old conditions, and lukewarm defenders in those who may do well 
under the new. -- Niccolo Machiavelli, _The Prince_, Chapter VI


Relevant Pages

  • Re: server scenario - variables in the right spot?
    ... If I'm correct in what I think you mean by 'data structures' then I also ... steps, the command has, and a way to mark which steps are done or not done, ... Assuming you are using the same receive callback for each BeginReceive, ... that processes the data for the first buffer. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: server scenario - variables in the right spot?
    ... ReceiveCallback calling beginReceive again: I do this but not exactly how ... Assuming you are using the same receive callback for each BeginReceive, then I don't see what the difference is. ... The posted receive won't be completed until after the command has been sent and replied to, of course, but there's no harm in being ready to receive beforehand. ... you would wind up running the code in the callback that actually processes the data for that buffer before the code in the same callback that processes the data for the first buffer. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: In vi/vim delete lines
    ... I frequently delete to a mark. ... | A buffer containing lines is put only once, ... | If the last command before a `.' ... The basic meta-characters for the replacement pattern are `&' and `~'; ...
    (comp.unix.shell)
  • [kde] Re: plasma-desktop (KDE factory) acting up?
    ... Then I configured sudo to allow my ... While it's for security reasons I limit it, ... command I allow the user to sudo run as root, ... Actually, it seems to work very well for me, as it obeys my configuring it ...
    (KDE)
  • [PATCH v3 1/5] msm: Secure Channel Manager (SCM) support
    ... non-secure side uses a physically contiguous buffer to pass ... It also benefits use cases where the command or response ... +/* Copyright 2010, Code Aurora Forum. ...
    (Linux-Kernel)