Slashdot Mirror


Worm Hits Windows Machines Running MySQL

UnderAttack writes "A report on the Australian whirlpool forum suggest that a worm is currently taking out MySQL servers running on Windows. We have seen this happen with MSSQL before (not just 'Slammer', but also SQLSnake that used SA accounts without password). The SANS Internet Storm Center suggests that a rise in port 3306 scans can be attributed to the new worm, and is asking for observations to help figure this out. It appears the worm creates a file called 'spoolcll.exe'."

30 of 367 comments (clear)

  1. Acronym madness clarification. by sanityspeech · · Score: 5, Informative

    What is the SANS institute?

    The SANS (SysAdmin, Audit, Network, Security) Institute provides information security training and certification. For more information, visit www.sans.org

    What's an SA account?

    The system administrator (SA) account is similar to the DBO except it is of the entire server. It has the same access and permissions as the DBO on all the databases in the server.

    DBO account???

    The DBO User Account The database owner (DBO) is the administrator for the database. It has full access to all operations and rights.

    SQL Snake is an Internet worm, that scans for open Microsoft SQL 7 (MSSQL) and 2000 servers - which run on TCP Port 1433 by default. The worm attempts to log into the System Administrator (SA) account with no password. If successful, the worm downloads and hides some files and grabs system configuration and account names.

    Before the MySQL bashers start, it should be noted that this is not a problem with MySQL.

    From the article:

    This bot does not use any vulnerability in mysql. The fundamental weakness it uses is a week 'root' account. The following mitigation methods will prevent exploitation:

    Strong Password: Select a strong password, in particular for the 'root' account.
    Restricted root account: Connections for any account can be limited to certain hosts in MySQL. This is in particular important for 'root'. If possible, 'root' should only be allowed to connect from the local host. MySQL will also allow you to force connections to use mysql's own SSL connection option.
    Apply firewall rules: MySQL servers should not be exposed to the "wild outside". Block port 3306 and only allow access from selected hosts that require such access. Again, the use of ssh forwarding or SSL is highly recommended.

    1. Re:Acronym madness clarification. by Naikrovek · · Score: 3, Informative

      It doesn't. You have to configure it to allow non-localhost connections.

  2. Shouldn't be a big deal by Mad+Merlin · · Score: 4, Informative
    How often does your database have to talk directly to the outside world? The port should be closed to the outside world most of the time.

    A hole in a program that communicates to the database and is accessable from the outside world would be a much more serious flaw I would imagine.

  3. Re:Windows by TedCheshireAcad · · Score: 4, Insightful

    Don't laugh - it happens. MSSQL is 'spensive, and for an all-windows environment that needs a database - MySQL wins the prize.

    /took your comment too seriously

  4. Re:Windows by Directrix1 · · Score: 3, Informative

    Only because people don't know about Firebird.

    --
    Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
  5. Re:Windows by UnderAttack · · Score: 3, Informative

    Well, Apache, PHP and MySQL run just fine in Windows. Many people run Linux on servers, but Winows on Developer desktops (which then have Apache, php and mysql installed).

    --
    ---- join dshield.org Distributed Intrusion Detec
  6. I don't get it by gowen · · Score: 5, Interesting
    I don't understand the sans report. First it says :
    The bot uses the "MySQL UDF Dynamic Library Exploit".
    before adding
    This bot does not use any vulnerability in mysql.


    Come again?
    --
    Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    1. Re:I don't get it by Qzukk · · Score: 4, Informative

      Well, to spread it specifically uses weak default/unset DB admin passwords and MySQL running as a system or admin level task with write access to everything. Once the worm is in your server as the db admin password, it uses the db admin's ability to load a dll into mysql to allow it to perform actions outside of mysql.

      See the details on this for information about what exactly is happening. There are plenty of DLLs on windows laying around that do all sorts of stuff, once you define a function call in MySQL to use a dll that allows you to execute whatever you want on the system, you win.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
  7. Re:Clarity by Anonymous Coward · · Score: 3, Insightful

    That doesn't change the fact that there are flaws in MySQL that need to be fixed.

  8. I got hit by LiquidCoooled · · Score: 5, Informative

    My test server was compromised at 18:50 yesterday.
    When I got back to my machine at 19:20, I cleaned it down and found out what was happening.

    All firewall logs etc and have archived the executable and dll files dropped.

    One into the mysql data folder (app_result.dll), and the executable spoolcll.exe was dropped into windows.
    Only now that I've gone into the archive folder has Norton picked it up and archived it (it had shutdown/ran the QConsole.exe NAV application to ensure Norton didn't find it, or it just wasn't in the definitions yesterday).
    Its been detected as a href='http://securityresponse.symantec.com/avcente r/venc/data/w32.spybot.worm.html'>w32.Spybot.worm.

    --
    liqbase :: faster than paper
  9. Bandwidth comparison, please ? by LordPixie · · Score: 4, Funny

    What is going to soak up more of the Internet's bandwidth ? A MySQL worm port scanning every IP in existance, or a gigantic mob of Slashdotters flaming Microsoft because it only affects Windows machines ? And will either of them even come close to breaking the current record held by BitTorrent Porn ?

    For the stirring conclusion, stay tuned to Netcraft: As the Internet turns...


    --LordPixie

  10. Re:Windows by gmuslera · · Score: 4, Informative
    I'll bet that the worm takes advantage of default installation of MySQL made by PHPTriad or another "easy" way to install under windows mysql along with i.e. php and apache for this case

    In linux by default in a lot of distributions being able to connect from network is disabled in mysql, or sets root password as php password, so the risk of that kind of worm (well, for systems that don't have even a basic firewall configured) is pretty low.

  11. I want my money back! by netsavior · · Score: 3, Funny

    Man if I had known that this software was vulnerable to worms I would never have bought it.

  12. Re:Windows by _xeno_ · · Score: 3, Informative

    Exactly. There are something like seven developer systems running Windows that have MySQL and a web server on them for webapp development in the section I work for. Then, later, the webapp gets uploaded to a Solaris machine where the users actually use it.

    I also have MySQL on my home Windows machine, since that's what my hosting provider offers. So I do some basic testing on Apache on Windows with MySQL as the database backend.

    --
    You are in a maze of twisty little relative jumps, all alike.
  13. MySQL a real DB? by Atomizer · · Score: 4, Funny

    Does this mean MySQL is considered a real DB now?

  14. Don't keep the port open! by hacker · · Score: 5, Informative

    99.99% of people who run MySQL run it on the same machine as their webserver that queries it. Most people don't actually do queries across the network to the database server.

    Just run MySQL with --skip-networking at startup (skip-networking in my.cnf), to disable MySQL from listening on port 3306. I know on most systems, its probably the default, but in almost all of the cases, its completely unnecessary.

    And also, validate your input !! Don't just assume that whatever is passed on the URI field of a browser, is going to be correct. Check it. Then check it again.

    1. Re:Don't keep the port open! by drinkypoo · · Score: 4, Interesting

      Turning off networking makes remote administration more difficult. Why not just block the port? Every supported version of NT, plus the two most recent unsupported versions (and probably more) has port filtering. Just block those ports (or, you can default deny) on the external interface.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  15. Some info by Squeebee · · Score: 5, Informative

    Ok folks. This is a bot, and it uses weak root passwords to gain entry to MySQL. From there, it loads a BLOB in a table with a payload DLL, which it then writes to disk and loads as a MySQL UDF. The UDF is called, which creates the bot and the system is compromised.

    Damage appears to be low as it is more spyware than anything, and you are only at risk if you A) Have not firewalled the MySQL Port, B) Have a root account that is allowed to login from anywhere, not just localhost, and C) Have a weak root password.

    So, the fix is this:

    A) Firewall port 3306
    B) Remove the root@% account, only allow root@localhost
    C) Set a strong password

    I have more info at http://www.openwin.org/mike/index.php/archives/200 5/01/batten-the-hatches-mysql-targeting-bot-on-the -loose/

  16. temporary fix by greechneb · · Score: 5, Informative


    Open the Administrative Tools/Services app.
    Find the "Event Monitor" service.
    Open the Properties for this service.
    You cannot pause or stop this service, so set the General/Startup Type to Disabled.
    On the Recovery tab, set all 3 failure actions to Take No Actions.

    Reboot.

    Since the service didn't start, spoolcll.exe is not running.
    Delete it (or whatever).

    But, do not delete the service, as its existence will prevent new copies of the virus from activating.

  17. Re:Ok, this is strange by stanleypane · · Score: 5, Funny

    You seem very concerned. Better submit that last Slashdot comment before checking it out.

  18. MySQL in practice by Marcus+Erroneous · · Score: 4, Interesting

    Well, I'm pretty sure I've got that port blocked already, but . . .
    I stood up MySQL on a Linux box and on a Win2k box to show that, unlike MSSQL, MySQL ran on more than one platform. One database could be deployed to both platforms with the ability to keep the application running even if one goes down. Instead of having the app be entirely offline, you can bring the other over very quickly. Did this just after the first MSSQL worm to show that there are alternatives and that entire sites don't have to go down because of one bug. Now we're working on deploying some Linux clusters.

    --
    You must be the change you wish to see in the world - Ghandi
  19. Re:Windows by Tony+Hoyle · · Score: 3, Informative

    90% of tasks can be handled by the free MSDE install.. there's a 2GB limit, but a lot of tasks simply don't need that kind of size.

    MySql is expensive too (300 per client, unless you want to GPL all your software).

  20. In fairness by wowbagger · · Score: 4, Insightful

    In fairness, I would generalize your statement to:

    Don't connect ANY computer to the Internet, or any other hostile network, without a firewall.

    Now, you can argue that, in the case of some operating systems, the firewall built into the OS, when properly configured, is enough.

    You can also argue that a firewall should be a firewall, and a firewall ONLY, and that any other services should be provided by another machine BEHIND the firewall.

    And depending upon the circumstances, either argument can win.

    However, if you think in terms of "First the firewall, THEN the services", you will be miles ahead.

    Connecting a Linux box, or a *BSD box, or a Mac, or an AS/400, or .* to a hostile network with any non-trivial set of services running and no firewall, and it is going to have problems.

    The problem here is that the people who set up the MySQL servers on these boxes did not insure they were firewalled - this could have happened just as easily to a Linux box with a similarly bad setup.

  21. People have their DB open to the world?! by Abcd1234 · · Score: 4, Informative

    Good lord, are you kidding? I would assume any reasonable organization that was accessing their database over a network would keep the webserver on a DMZ and the database server behind a firewall that's tightened up and only allows access to the database from the DMZ. Isn't this, uh, kinda obvious? And, of course, if the database and the webserver are on the same box, *why* is remote access enabled at all?

  22. Re:Windows by cbiltcliffe · · Score: 3, Informative
    MySql is expensive too (300 per client, unless you want to GPL all your software).
    No, $300 per server, and you don't have to GPL anything unless you redistribute it with the freely downloaded MySQL.
    --
    "City hall" in German is "Rathaus" Kinda explains a few things......
  23. serious? by dtfinch · · Score: 4, Funny

    "the bot first has to authenticate to mysql as 'root' user. A long list of passwords is included with the bot, and the bot will brute force the password."

    This makes MySQL look about as vulnerable as ssh.

  24. Re:Windows by ajs318 · · Score: 3, Informative

    Linux passwords are scrambled, but the root user can read the scrambled password file. The first part of the scrambled password ($1$, eight letters/digits, $) is the "salt". The same plaintext password and the same salt will always produce the same scrambled password. The password scrambling algorithm is a standard C library function, so almost every programme uses it, not just the login validator.

    Upshot: if you copy a scrambled password from one user to another, or out of /etc/shadow into a .htpasswd {apache password file; used to password-protect directories} or something similar, it'll Just Work.

    MySQL actually uses a different password hashing algorithm, unless you tweaked the source, but I think the parent is talking about PHPMyAdmin. This creates a standard .htpasswd file when it is installed, and it uses root's UNIX password. Note you still have to supply PHPMyAdmin with a MySQL username and password. By default, MySQL has a user called "root" with no password who is only allowed to login locally. This is considered secure enough for most applications.

    NB: it's generally a very bad idea to use the same password for login and database. One dodgy web hosting company I have experienced actually did this. The MySQL username and password have to be in your user directory somewhere, in plaintext, and they have to be world-readable so the Apache daemon can see them. Upshot: any user can see any other user's database username and password. {This is why the root/no password combination isn't so insecure as it looks.} Ordinarily, the PHP {or Perl or Python} interpreter gets them first, and the user only ever sees the output from the interpreter; but you can pay for an account with the same company, determine the directory structure reasonably easily, and use a simple PHP, Perl, Python or Bash script to traverse other users' directories looking for passwords. If the database username and password is the same as the UNIX password then you can have much fun, since these passwords are also good for FTP, POP3 and SSH.

    --
    Je fume. Tu fumes. Nous fûmes!
  25. Re:That's why... by Anonymous Coward · · Score: 4, Informative

    Read the article. It's not exploting a security hole in MySQL. It's exploiting MySQL installations that:

    a) Are not firewalled to the world (who'd make a DB accessible directly to the Internet?)

    b) Allow root/admin connections from the outside.

    c) Have weak root/admin passwords.

    You can chalk this one up to careless admins - something I'm sure PostgreSQL is not immune to either.

  26. MySQL on Win32, market share by HvitRavn · · Score: 4, Insightful

    No need to flame people who use MySQL on win32. This has been briefly mentioned already, but here's a slightly better explanation. One of MySQL's major advantages over other free medium-to-lightweight (such as pgsql) is that MySQL has been available for the win32 platform for a very long period of time (if you are about to mention firebird, take a look here). This enabled developers to install their webserver of choice (apache) with some cool script mod (php) alongside a database well suited for small to medium web projects (mysql). So if you are a supporter of (F)OSS, then you better not flame people who use MySQL on win32, because that is one of the reasons why MySQL is so popular today.

  27. Re:That's why... by Dysan2k · · Score: 4, Insightful

    You can chalk this one up to careless admins - something I'm sure PostgreSQL is not immune to either.

    Nothing is. Postgres folk can cry all they want, and so can MySQL, mSQL, Oracle, Informix, Sybase, Firebird, etc. It makes no difference. If you have no password, you can get into it.

    Amazes me sometimes the rabidness of the db crowd. It's a database, folks. It stores data. It's not an AI.

    --
    -What have you contributed lately?