Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 51 reacties

Een kwetsbaarheid in MySQL maakt het voor gebruikers met beperkte rechten mogelijk om toegang als beheerder te krijgen. Een beveiligingsmedewerker van Red Hat noemt de mogelijke impact van het beveiligingsprobleem 'zeer ernstig'. Er is nog geen patch beschikbaar.

De kwetsbaarheid is onderzocht door een beveiligingsonderzoeker met de nickname Kingcope. De bevindingen van Kingcope zijn geanalyseerd en gepubliceerd door een andere beveiligingsexpert, Eric Romang, en daaruit blijkt dat het mogelijk is voor een gebruiker met bepaalde, beperkte gebruikersrechten om root-toegang tot MySQL te krijgen.

Om het beveiligingsprobleem te misbruiken, moet een gebruiker dus wel al toegang hebben tot een database, wat de kans op misbruik vermindert. De kwetsbaarheid zou de consequenties van een aanval echter wel kunnen vergroten: een aanval waarbij een gebruiker slechts beperkte toegang tot een database heeft, zou tot gevolg kunnen hebben dat de aanvaller root-toegang krijgt.

Ook lijkt het er op dat een gebruiker in staat moet zijn om op afstand in te loggen op MySQL: een deel van de aanval bestaat uit sql-code die bijvoorbeeld via phpMyAdmin kan worden uitgevoerd, maar voor een ander deel van de aanval moet rechtstreeks op de MySQL-server ingelogd worden. Over het algemeen wordt aangeraden om MySQL-servers niet van buiten het interne netwerk benaderbaar te maken.

Desondanks noemt Kurt Seifried, een medewerker van het beveiligingsteam van Red Hat, de mogelijke consequenties van het beveiligingsprobleem 'zeer ernstig'. Red Hat is zelfs zo ver gegaan om zelf een  zogenoemd CVE-nummer, waarmee beveiligingsproblemen worden geclassificeerd, te koppelen aan de kwetsbaarheid. Normaliter doet de software-ontwikkelaar dat.

Naast het beveiligingsprobleem zijn er dit weekend een aantal bugs opgedoken die het mogelijk maken om een MySQL-database offline te halen, schrijft ZDNet. Om hoeveel bugs het gaat, is nog niet duidelijk: er zijn in totaal vier meldingen van denial of service-kwetsbaarheden, maar mogelijk gaat het in twee gevallen om hetzelfde beveiligingsprobleem, en bij een andere melding gaat het mogelijk om een configuratiefout.

Reacties (51)

Reactiefilter:-151051+136+211+32
Moderatie-faq Wijzig weergave
Mja, de forks komen niet voor niks als paddestoelen uit de grond.

Itt java is dit opensource tho'. De linux distributeurs selecteren zelf wel een patch die het lek dicht, of die nou van Oracle komt of niet.
Als je in de gedachte van opensource zou willen handelen, dan zou je als je een patch hebt deze aan de MySQL community aanbieden en niet fork uitbrengen voor je eigen gewin.

[Reactie gewijzigd door Cobalt op 3 december 2012 19:39]

Het staat Oracle altijd vrij om een patch te gebruiken van de fork.

Een fork creëer je als je het niet eens bent met de richting van het origineel. maar niets weerhoudt de forks ervan om vervolgens leentjebuur bij elkaar te spelen.

Verder heeft geld verdienen met open source geen enkel verband met een open source gedachte. Open source is vrij, niet per definitie gratis. je zou verwachten dat dat nu toch wel bekend was.
Waarom denkt iedereen als ik dat en dat heb afgesloten ben ik niet vatbaar voor de hack.

Het gaat er om dat een hacker, als hij in het systeem zit vrij simpel als root door je mysql server loopt ondanks de extra wachtwoorden en dergelijke.

Dus het is wel een vrij ernstig lek.

Daar als je dit script via een andere hack wel weet te draaien binnen de perl of php omgeving van een server je als nog de sjaak bent ondanks alle ssh en andere beveiligingen.
Inderdaad heb je hiervoor twee cruciale dingen nodig namelijk FILE privileges en remote-toegang tot de databaseserver.

Dat laatste komt nog wel eens voor maar dat eerste meestal niet. Ook kun je jezelf dit vaak niet geven omdat je als het goed is geen GRANT privs hebt.

[Reactie gewijzigd door mace op 3 december 2012 12:18]

"Red Hat is zelfs zo ver gegaan om zelf een zogenoemd CVE-nummer, dat de ernst van een beveiligingsprobleem aanduidt, te koppelen aan de kwetsbaarheid."

Alleen kan Red Hat dat niet, omdat zij het systeem niet beheren.
Op http://seclists.org/fulldisclosure/2012/Dec/36 staat wat er gebeurd is:
However in this case we have a bit of a time constraint (it's a weekend and this is blowing up quickly) and the impacts are potentially quite severe. So I've spoken with some other Red Hat SRT members and we feel it is best to get CVE #'s assigned for these issues quickly so we can refer to them properly.

[..]

Please use CVE-2012-5613 for MySQL (Linux) Database Privilege Elevation Zeroday Exploit
En dus heeft Red Hat onder de tijdsdruk weldegelijk een CVE-nummer aan de kwetsbaarheid gekoppeld.

[Reactie gewijzigd door GlowMouse op 3 december 2012 14:43]

Ze kunnen dat inderdaad niet. Ze hebben wel een entry ingeschoten die nu gereviewed moet worden door de CVE Editorial Board.
Bovendien wordt in het artikel nu ten onrechte nu de suggstie gewekt dat het krijgen van een CVE nummer iets te maken heeft met hoe ernstig een lek is.

Echter CVE-nummer worden ook uitgedeeld voor relatief minder gevaarlijke lekken.
CVE kent namelijk ook een rating van 1-10 die de ernst aangeeft van het lek.
Dit is toch wel vrij ernstig..

'Om het beveiligingsprobleem te misbruiken, moet een gebruiker dus wel al toegang hebben tot een database, wat de kans op misbruik vermindert. '

Veel bedrijven voor webhosting werken met mysql, waarbij ze ook een mysql user voor je aanmaken met beperkte rechten, in theorie zou je dus eenvoudig vele websites kunnen hacken door simpelweg een site af te nemen bij een hosting provider. Daarnaast draaien er nu al zeer veel mysql accounts met beperkte rechten op vele, vele servers.

[Reactie gewijzigd door paradoXical op 3 december 2012 12:01]

"maar voor een ander deel van de aanval moet rechtstreeks op de MySQL-server ingelogd worden."

Als ik het goed heb kun je bij meeste hosting bedrijven niet direct op de MySQL-server inloggen van buiten het netwerk, dus kan deze laatste stap gelukkig niet uitgevoerd worden (ik neem aan dat dit om een soort van command-line gaat, die je niet kan benaderen vanuit bijvoorbeeld PHP scripts?).
Het is nu een perl script wat je uit moet voeren maar ik zie niets wat niet in PHP gedaan kan worden.
Bij mijn host, die shared virtual hosting aanbiedt (en die ik voor de zekerheid maar even niet noem), kan dat wel. Daar kan je inloggen op de SSH server, waar vanuit je direct kan inloggen op de MySQL database.
Ja maar hoe is dat dan ingericht? Aangezien het shared virtual hosting is??: Zou kunnen dat ze LXC hebben met beperkte rechten? (opvolger van chrootjails onder Unix) Weet ook niet of je dan Mysql hebt draaien in 1 container of meerdere containers op KVM. Het opzetten daarvan is een heel gedoe maar uiteindelijk ben je minder kwijt aan beveiliging en onderhoud (je kloont gewoon de containers) En dan kunnen mensen maar beperkt ui hun containers. Natuurlijk kun je dan totaal de zooi verkloten door de database om zeep te helpen maar dat is het dan ook. Aangezien uit een chrootjail breken wel kan maar met LXC toch een stuk moeilijker is!

(heb even gekeken en ja: http://docs.oracle.com/cd.../ol_about_containers.html je kan het dus gewoon allemaal in een cointainer duwen!!)
Dat hoeft niet. Op de FTP komen is in principe ookal voldoende omdat je dan deze exploit ook kan laten runnen op de mysql database.

Edit: Oh ik zeg nu precies hetzelfde als .oisyn hieronder :P

[Reactie gewijzigd door Rutix op 3 december 2012 12:36]

hij zegt net dat ie ssh access heeft, dus ja hij kan direct met de mysql server praten. Overigens, als jer er vanuit php bij kan, dan kan je dus ook de exploit draaien, moet je alleen even het perl script omschrijven naar php.
SSH kan anders ook port forwarding en SOCKS proxy. Gebruik het zelf genoeg, handiger dan de zoveelste VPN client ;).
Direct wil zeggen dat je de MySQL server direct aanspreekt
Leuk hoor, die semantische discussie, maar misschien moet je niet de letterlijke tekst van dit artikel gebruiken om tot een conclusie te komen, maar kijken naar waar daadwerkelijk het probleem ligt. Het gaat er uiteindelijk om dat je gewoon specifieke SQL commando's door kunt sturen naar de mysql server. Wat voor verbinding je daarvoor gebruikt is niet zo heel erg relevant.
Als ik het goed heb kun je bij meeste hosting bedrijven niet direct op de MySQL-server inloggen van buiten het netwerk
Het hoeft ook niet van buiten het netwerk. Het is een hosting provider, je kan gewoon op die machine een scriptje runnen dat intern contact maakt met de MySQL server.
ik neem aan dat dit om een soort van command-line gaat, die je niet kan benaderen vanuit bijvoorbeeld PHP scripts?
Nee, het gaat erom dat je direct naar de server kunt connecten om commando's door te sturen. Het voorbeeld gebruikt een perl scriptje, maar dat kan natuurlijk ook in PHP. MySql interpreteert de net uitgeschreven file vervolgens gewoon als valide trigger alsof ie aangemaakt is met CREATE TRIGGER. Met het verschil dat er op CREATE TRIGGER natuurlijk wel een rechtencheck zit, terwijl het voor aangemaakte file net is alsof de root user die trigger gemaakt heeft.

En eerlijk gezegd vraag ik me af of het niet ook gewoon via phpMyAdmin kan. Hier staat het Perl script. Blijkbaar werkt het door een trigger aan te maken met root rechten in de juiste mysql folder mbv SELECT ... INTO OUTFILE. Blijkbaar is er dus geen enkele controle over waar de file wordt geschreven, en met wat voor rechten.

En tenzij de msql server in zijn eigen aparte user runt met gelimiteerde rechten, gaat dit nog veel verder dan alleen volledige rechten over de database verkrijgen. Want een mysql server die onder root runt kan dus gewoon overal naar schrijven.

.edit: ik lees verderop in de comments dat file schrijf rechten dus blijkbaar niet standaard aan staan.

[Reactie gewijzigd door .oisyn op 3 december 2012 12:54]

het gaat om de database 'root' user, niet het machine root user. Je logt in met bijvoorbeeld root@localhost.

Het lijkt erop dat de 'test' user een script kan aanmaken op het filesystem, maar vervolgens direct de eigenaar kan veranderen naar 'root@localhost. Het bestand zelf is niet van root. Mysql database objecten zitten niet in een enkel binair bestand, maar staan per object ergens op het filesystem. Deze exploit maakt het mogelijk om feitelijk buiten de database om zelf een bestand aan die directory toe te voegen en mysqld heeft daar schrijf rechten, want anders kan het zelf ook geen objecten aanmaken..

Vervolgens blijkt die trigger dan onder de database root rechten te draaien. Dit is eigenlijk de boosdoener:
CREATE DEFINER=`root`@`localhost
Die regel specificeert van wie het object is en daarmee onder welke rechten het draait.

En deze exploit betreft zeer zeker alle mysql versies. Oracle kan dus niet zomaar even alle bestanden in een archive opslaan, of de manier waarop de eigenaar wordt opgeslagen veranderen. Men zou select into outfile eruit kunnen slopen, maar ook dat zal dingen kapot maken..

De oplossing is dus nog niet zo eenvoudig omdat het probleem ligt in de database structuur van mysql zelf. Als quick-fix zou Oracle in mysql een safe-mode optie kunnen doorvoeren zoals die jaren geleden ook bij PHP is doorgevoerd. In safe-mode kun je dan standaard niet select into outfile gebruiken, maar dat hangt er vanaf hoe vaak deze feature wordt gebruikt..
Bedankt, je maakt precies duidelijk wat ik miste in het artikel; dat het inderdaad om de root -database- gebruiker gaat, en niet de systeemaccount. Sowieso draait de MySQL server als het goed is niet onder je root account, alhoewel ik niet weet hoe Red Hat dat standaard heeft ingericht. Onder Debian is er in ieder geval een aparte mysql user voor, zoals bij de meeste 'grote' daemons.
- Default is dit dus NIET mogelijk; een waarschuwing ieder moment dat je een krachtige functie importeert lijkt me wat overdreven... UAC anyone?
- eval (php e.d.) is ook een 'gevaarlijke' functie; iedereen weet dat en gaat er zorgvuldig mee om. Hoezo is het nu ineens dan een beveiligingsprobleem?

In dit geval is, zoals zoooo vaak, de onwetende gebruiker het probleem.
Dit is gewoon een feature, welke wegens de risico's standaard uit staat.
Nu zet iemand hem aan en blèrt: "ik heb een beveiligingsrisico gevonden!"
No shit Sherlock!

Deze exploit is bij juiste configuratie (van mysql of op file-niveau) geen enkel issue meer.
Keren we het om: Door onjuiste configuratie is dit een beveiligingsrisico.

Get the point?
Sorry hoor maar permission evaluation hoort nooit een feature te zijn hoe goed zoiets ook gedocumenteerd is en zeker niet op deze manier. Het zeer gevaarlijk om toe te staan files aan te maken op het systeem en dan meteen de user van die file te veranderen in root@localhost terwijl die daar niet vanaf komt.

[Reactie gewijzigd door Rutix op 3 december 2012 13:44]

Standaard wordt dit ook niet toegestaan, dit is het 'gewone' gedocumenteerde gebruik van de FILE-permissies.
Daarmee kun je, met de rechten van de gebruiker waaronder de mysql-daemon draait, bestanden wegschrijven op locaties waar deze rechten op heeft.

Dit is gewoon een gevaarlijke functie die, indien je hem toch wilt gebruiken, goed geconfigureerd moet worden.

Dat root-toegang wordt verkregen is ook niet altijd waar; enkel wanneer mysqld draait onder root of vergelijkbare rechten heeft, is dit via deze weg te bemachtigen.

Working as intended; het is niet de taak van mysql te voorkomen dat de user zichzelf in de voet schiet. Het is de taak mr bullet zo snel en efficient mogelijk af te leveren in mr. voet wanneer de gebruiker dat wenst. Bij deze dus!

Op dit item kan niet meer gereageerd worden.



LG Nexus 5 (2015) Apple iPhone 6s FIFA 16 Microsoft Windows 10 Home NL Star Wars: Battlefront (2015) Samsung Gear S2 Skylake Samsung Galaxy S6 edge+

© 1998 - 2015 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True