Slashdot Mirror


Buffer Overflow in MySQL

maedls.at writes "Here is a short description of the Vulnerability:Passwords of MySQL users are stored in the "User" table, part of the "mysql" database, specifically in the "Password" field. In MySQL 4.0.x and 3.23.x, these passwords are hashed and stored as a 16 characters long hexadecimal value, specifically in the "Password" field. Unfortunately, a function involved in password checking misses correct bounds checking. By filling a "Password" field a value wider than 16 characters, a buffer overflow will occur. For details and proof of concept see: http://lists.netsys.com/pipermail/full-disclosure/ 2003-September/009819.html"

2 of 43 comments (clear)

  1. Not too bad though by Prowl · · Score: 5, Informative

    The mysql user must have administrative privileges to exploit the bug

    ie. access to the mysql table itself

    --
    That man tried to kill mah Daddy
    1. Re:Not too bad though by cookd · · Score: 5, Informative

      More detail:

      First, ALTER the User table of the mysql database (the table that contains the usernames and passwords of users allowed to connect to the database server) so that the Password column can have more than 16 characters.

      Second, UPDATE a row in the User table to give a user a "password" consisting of your buffer overflow code.

      Third, get MySQL to try to process that user's login info. This is done with "FLUSH PRIVILEDGES" which flushes the cache of users and their passwords.

      You now can execute code in the context of the MySQL server.

      Of course, the MySQL server should be running as an unpriviledged user anyway. And most people who can admin the MySQL server can probably admin the whole box.

      Just goes to show that nobody's perfect, I guess.

      --
      Time flies like an arrow. Fruit flies like a banana.