COMMAND
ircd
SYSTEMS AFFECTED
BitchX
PROBLEM
Rick Jansen found following. Because of a simple
/invite nickname #%s%s%s%s%s%s%s%s%s
BitchX will segfault and coredump. AFAIK, v1.0c16 is vulnerable,
other versions may be vulnerable as well.
'typo' added that this is a fatal and exploitable bug. And the
rest of bitchx's code doesn't look much better.. lets examine at
the rest of parse.c, just looking for completly similiar issues
with logmsg:
parse.c:1033: warning: TESO: Insufficient Format arguments: logmsg(4/5).
parse.c:1100: warning: TESO: Insufficient Format arguments: logmsg(4/5).
parse.c:1033: logmsg(LOG_INVITE, from, 0, invite_channel);
parse.c:1100: logmsg(LOG_KILL, from, 0, ArgList[1]?ArgList[1]:"(No Reason)");
BitchX privileged port dcc protection is susceptable to
overflowing the port argument (meaning: its ineffectual).
Under FreeBSD 4, /invite-ing somebody to a channel with %s%s%s%s
in the name causes a segmentation violation on the remote client.
Linux appears not to suffer from this problem, but this is
probably just a lucky break. Linux (RedHat 6.1, Debian Frozen)
does die if you invite somebody to channel %n%n%n%n.
As many system administrators, including very senior ones, leave
their client open 24 hours a day, possibly in a screen session,
this might be a real problem waiting to happen.
The bug effects all versions of BitchX from 75 through 1.0c16, and
does not effect EPIC or any other clients. The invite parsing is
the easiest to exploit, but the bug also exists in the kill parsing.
The patch existed before the bug was publicly known. There were
also locally exploitable format bugs, but they have been fixed now.
The next version of BitchX will include all of these fixes, and
they have been applied to the CVS repository.
SOLUTION
A temporary solution is to switch to another client, like ircII,
which is considered by many to be the more karmic client anyway.
A patch has been available on ftp.bitchx.org:
ftp://ftp.bitchx.org/pub/BitchX/source/1.0c16-format.patch
ftp://ftp.bitchx.org/pub/BitchX/source/75p3-format.patch
Fixed packages for Debian 2.2 are also available, and fixed
packages for Debian 2.1 are forthcoming.
As workaround issue the following bitchx command (e.g. as part of
a startup script):
/ignore * invites
which will disable processing of channel invitation messages.
For FreeBSD:
1) Upgrade your entire ports collection and rebuild the bitchx
port.
2) Deinstall the old package and install a new package dated
after the correction date (2000-07-03), obtained from:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/irc/bitchx-1.0c16.tar.gz
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/irc/bitchx-1.0c16.tar.gz
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/alpha/packages-4-stable/irc/bitchx-1.0c16.tar.gz
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/irc/bitchx-1.0c16.tar.gz
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/alpha/packages-5-current/irc/bitchx-1.0c16.tar.gz
3) download a new port skeleton for the bitchx port from:
http://www.freebsd.org/ports/
and use it to rebuild the port.
For RedHat (Red Hat Powertools 6.2):
sparc: ftp://updates.redhat.com/powertools/6.2/sparc/BitchX-1.0c16-1.sparc.rpm
alpha: ftp://updates.redhat.com/powertools/6.2/alpha/BitchX-1.0c16-1.alpha.rpm
i386: ftp://updates.redhat.com/powertools/6.2/i386/BitchX-1.0c16-1.i386.rpm
sources: ftp://updates.redhat.com/powertools/6.2/SRPMS/BitchX-1.0c16-1.src.rpm
For Conectiva Linux users of BitchX must upgrade:
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.0/i386/BitchX-75p3-9cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.0/i386/wserv-1.13-2cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.0es/i386/BitchX-75p3-9cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.0es/i386/wserv-1.13-2cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.1/i386/BitchX-75p3-9cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.1/i386/wserv-1.13-2cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.2/i386/BitchX-75p3-9cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.2/i386/wserv-1.13-2cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/5.0/i386/BitchX-75p3-9cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/5.0/i386/wserv-1.13-2cl.i386.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.0/SRPMS/BitchX-75p3-9cl.src.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.0es/SRPMS/BitchX-75p3-9cl.src.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.1/SRPMS/BitchX-75p3-9cl.src.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/4.2/SRPMS/BitchX-75p3-9cl.src.rpm
ftp://ftp.conectiva.com.br/pub/conectiva/atualizacoes/5.0/SRPMS/BitchX-75p3-9cl.src.rpm
For Mandrake Linux:
6.1/RPMS/BitchX-75p3-12mdk.i586.rpm
6.1/SRPMS/BitchX-75p3-12mdk.src.rpm
7.0/RPMS/BitchX-75p3-12mdk.i586.rpm
7.0/SRPMS/BitchX-75p3-12mdk.src.rpm
7.1/RPMS/BitchX-75p3-12mdk.i586.rpm
7.1/SRPMS/BitchX-75p3-12mdk.src.rpm
For Caldera Systems:
ftp://ftp.calderasystems.com/pub/updates/OpenLinux/2.3/current/RPMS/irc-BX-75p3-5.i386.rpm
ftp://ftp.calderasystems.com/pub/updates/OpenLinux/2.3/current/SRPMS/irc-BX-75p3-5.src.rpm