phpbar.de logo

Mailinglisten-Archive

unsuscripe
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

unsuscripe




----- Original Message -----
From: Mariano Glas <glas_(at)_orgaline.de>
To: Deutsche MySQL-Mailingliste <mysql-de_(at)_lists.4t2.com>
Sent: Wednesday, February 09, 2000 10:19 AM
Subject: Fuer alle welche die BUGTRAQ nicht lesen (was Remote access
vulnerability in all MySQL server versions)


> Mfg Mariano Glas
>
> -----Ursprüngliche Nachricht-----
> Von: Robert van der Meulen <rvdm_(at)_CISTRON.NL>
> An: <BUGTRAQ_(at)_SECURITYFOCUS.COM>
> Gesendet: Dienstag, 8. Februar 2000 20:03
> Betreff: Remote access vulnerability in all MySQL server versions
>
>
> > Hi,
> >
> > Below you find a security advisory i wrote concerning a vulnerability
> found in
> > all (known to me) mysql server versions, including the latest one.
> > As mysql is a widely used sql platform, i strongly advise everyone using
> it
> > to read it, and fix where appropriate.
> > This email has been bcc'd to the mysql bug list, and other appropriate
> parties.
> >
> > Greets,
> > Robert van der Meulen/Emphyrio
> >
> >
> > .Introduction.
> >
> > There exists a vulnerability in the password checking routines in the
> latest
> > versions of the MySQL server, that allows any user on a host that is
> allowed
> > to connect to the server, to skip password authentication, and access
> databases.
> > For the exploit to work, a valid username for the mysql server is
needed,
> and
> > this username must have access to the database server, when connecting
> from
> > the attacking host.
> >
> >
> > .Vulnerable Systems.
> >
> > All systems running 3.22.26a and up (tested).
> > Probably all systems running lower versions as well (not tested, not
> reviewed).
> > All versions are vulnerable on all platforms.
> >
> >
> > .A snippet of code from the mysql code, explaining password
authentication
> **
> >
> > >From mysql-3.22.26a/sql/password.c:
> > /* password checking routines */
> >
>
/***************************************************************************
> **
> >   The main idea is that no password are sent between client & server on
> >   connection and that no password are saved in mysql in a decodable
form.
> >
> >   On connection a random string is generated and sent to the client.
> >   The client generates a new string with a random generator inited with
> >   the hash values from the password and the sent string.
> >   This 'check' string is sent to the server where it is compared with
> >   a string generated from the stored hash_value of the password and the
> >   random string.
> >
> > <cut>
> >
>
****************************************************************************
> */
> >
> >
> > .More code, and vulnerability explanation.
> >
> > The problem is, that in the comparison between the 'check' string, and
the
> > string generated from the hash_value of the password and the random
> string,
> > the following code is used (from mysql-3.22.26a/sql/password.c):
> >
> >   while (*scrambled)
> >   {
> >     if (*scrambled++ != (char) (*to++ ^ extra))
> >       return 1;                                 /* Wrong password */
> >   }
> >
> > 'scrambled' represents the 'check' value, and (*to++ ^ extra) walks
trough
> the
> > hash_value.
> > Suppose a client would send a _single_ character to the server as the
> 'check'
> > string.
> > Of course the server should notice the check string is not the same
length
> as
> > the check string needed, and give a password error.
> > Because no such checks are done, when a check string of length 1 is
passed
> to
> > the server, only one character is compared.
> > So the only thing that remains to know if we want to peek in someone's
> MySQL
> > database, is a technique to find out the first character of the
> server-side
> > check string.
> >
> > The string that's used for the comparison is generated using some random
> data,
> > so two following authenticate-actions will probably use different
> check-strings.
> > After looking at the algorithm, generating the check string, it becomes
> clear
> > that there are actually only 32 possibilities for each character.
> >
> > In practice, this means that if you connect, sending one single
character
> as
> > the check string, you will be in in about 32 tries maximum.
> >
> >
> > .Impact.
> >
> > Hosts in the access list (by default any host, on a lot of distributions
> and
> > servers) can connect to the MySQL server, without a password, and access
> > (often sensitive) data _as long as the attacker has a valid username for
> the
> > database server_.
> > This vulnerability also incorporates a MySQL DoS attack, as the attacker
> can
> > shutdown database servers and delete data, if she logs in with the MySQL
> > management account.
> >
> >
> > .Exploit information.
> >
> > I have an exploit available, but to defer script kiddies i will not
> release
> > it (yet).  Do not ask me for it.
> > If above explanation is understood, an exploit should be easy enough...
> >
> >
> > .Fix information.
> >
> > Change the routine 'check_scramble' in mysql-3.22.26a/sql/password.c to
do
> a
> > length check, _before_ starting the compare.
> > This should be as easy as inserting the following just above the
> > while (*scrambled) loop:
> >
> > if (strlen(scrambled)!=strlen(to)) {
> > return 1;
> > }
> >
> > WARNING: This is NOT an official fix. You can use this as a temporary
> solution
> > to the problem.
> > Please check the official mysql site (www.mysql.org) for a fix.
> >
> >
> > .Commentary.
> >
> > I think this exploit should not be a very scary thing to people that
know
> > how to secure their servers.
> > In practice, there's almost never a need to allow the whole world to
> connect
> > to your SQL server, so that part of the deal should be taken care of.
> > As long as your MySQL ACL is secure, this problem doesn't really occur
> (unless
> > your database server doubles as a shell server).
> >
> > We have also located several other security bugs in mysql server/client.
> These
> > bugs can only be exploited by users who have a valid username and
> password.
> > We will send these to the mysql maintainers, and hope they'll come
> > with a fix soon.
> >
> > Yours,
> >         Robert van der Meulen/Emphyrio (rvdm_(at)_cistron.nl)
> >         Willem Pinckaers (dvorak_(at)_synnergy.net)
> >
> >
> > --
> >
> > |      rvdm_(at)_cistron.nl - Cistron Internet Services - www.cistron.nl
> |
> > |          php3/c/perl/html/c++/sed/awk/linux/sql/cgi/security
> |
> > |         My statements are mine, and not necessarily cistron's.
> |
> >
>
>
> ---
> *** Abmelden von dieser Mailingliste funktioniert per E-Mail
> *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
>

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive