Annonce

Indsend nyhed

Del dine opdagelser!

Afstemning

I mit/vores serverrum står der primært servere fra?

  • 35%HP
  • 22%IBM
  • 21%Dell
  • 13%Anden producent
  • 5%Apple
  • 3%Fujitsu
  • 1%Oracle

Fejl i MySQL og MariaDB tillader login med forkerte passwords

12. jun. 2012 08:16Der er blevet fundet en fejl i de to databaser MySQL og MariaDB, som gør det muligt at logge ind i databasen uden at kende det rigtige password.

For at udnytte hullet kræves blot, at man kan oprette en forbindelse til databasen og at man kender et brugernavn. Da brugernavnet root næsten altid eksisterer, er det nemt at udnytte. Herefter skal man blot prøve få hundrede tilfældige passwords for at opnå adgang.

Fejlen skyldes forkert brug af memcmp() funktionen. Når et password skal checkes sammenlignes to hashværdier ved at kalde memcmp(), efterfølgende castes resultatet til en byte værdi. Ved omregning fra en større datatype til en enkelt byte er der en risiko på 1/256 for, at resultatet vil blive fortolket som et korrekt password, selvom memcmp() havde vist, at det var forkert.

Fejlen afhænger dog af hvilken version af memcmp(), der anvendes. Nogle versioner af memcmp() bruger kun værdier, som passer i en byte, og er databasen compileret med en af disse versioner, kan fejlen ikke udnyttes.

#1: Bundy

12. jun. 2012 09:15

Værd er bemærke at vendor binaries ikke er ramt, og hvis man bruger pakker hentet med apt eller whatever, er man ikke påvirket.

Linux is only free if your time has no value.

#3: Xyxoz

12. jun. 2012 09:53

Har dette måske været den medvirkende årsag til rækken af lækkede databaser over de seneste uger? Correct me if I'm wrong ;-)

#4: Bundy

12. jun. 2012 09:57

Der skal mere til en bare en exploit - Som default accepterer mysql kun connections fra localhost, og selv hvis den skal åbnes udtil, bør den stadig låses på hostname .. Also, mon dog f.eks Linked in kører på mysql ;)

Linux is only free if your time has no value.

#5: Carstone

12. jun. 2012 10:44

Jeg har testet det på Debian 3.1, Debian 5, Debian 6, Ubuntu 8.04 , 10.04, 11.04, og en gammel freebsd 4.11. Ingen af dem kunne jeg komme ind på med det exploit.

I have spoken.

#6: TuxDK

12. jun. 2012 10:48

#4

Hvorfor tror du ikke at LinkedIn kører på MySQL?

Core i7 920 @ 2.66 - 12GB DDR3 (1333 Mhz) - GTX285 1GB DDR - 22" Samsung T220 - Samsung Galaxy SIII Mini

#7: Bundy

12. jun. 2012 11:30

#6: Var egentlig under opfattelsen at der ikke var specielt mange der kørte kæmpe sites på mysql, men kan da være jeg tager fejl.

http://www.linkedin.com/answers/technology/web-development/TCH_WDD/519519-3361468

De bruger både oracle og mysql, står så ikke noget om til hvad :)

Linux is only free if your time has no value.

#8: kasperd

12. jun. 2012 11:31

En lignende fejl kunne i øvrigt være opstået, hvis man ved en fejl havde brugt en af strcmp funktionerne i stedet for memcmp. F.eks. vil strncmp opføre sig næsten som memcmp, bortset fra at strncmp stopper ved det første NUL tegn.

Det første resume jeg selv læste om hullet var så overfladisk at jeg troede de var kommet til at bruge strncmp i stedet for memcmp. Dog viste fejlen sig at være noget lidt andet.

Er det en fejl som en compiler kunne eller burde have fanget? Jeg prøvede lige at compilere følgende kode, og den gav ingen warnings:

#include <string.h>

char my_cmp(const void *s1, const void *s2)
{
  return memcmp(s1,s2,2);
}

The Internet is full, please try again later.

#9: ISCS

12. jun. 2012 12:17

Var egentlig under opfattelsen at der ikke var specielt mange der kørte kæmpe sites på mysql, men kan da være jeg tager fejl.Bundy (#7)

Du tager fejl :)

Facebook engineering blog:

Read on for Mark's insights into fast-storage challenges, Facebook's MySQL roadmap, and more.Kilde

code.google.com:

It is the core of YouTube's new MySQL serving infrastructureKilde

Adobe, Photobucket, linkedin, deviantART osv.

#10: arne_v

12. jun. 2012 18:53

#1-2

Hvis det kun rammer nogle builds, så er det ikke overraskende at det afhænger af C compileren og C library fremfor status af dem der har lavet build.

#11: arne_v

12. jun. 2012 19:02

Var egentlig under opfattelsen at der ikke var specielt mange der kørte kæmpe sites på mysql, men kan da være jeg tager fejl.Bundy (#7)

De fleste store sites bruger faktisk MySQL.

Kendte store MySQL brugere:

Google
Yahoo
Facebook
Twitter
LinkedIn
Wikipedia

Det er jo nærmest hele toppen af internettet.

#12: arne_v

12. jun. 2012 19:11

#8

C og C++ er generelt ikke de rette sprog hvis man vil have fanget den slags.

Men visse compilere har compiler options til det.

GCC:
-Wconversion

#13: kasperd

12. jun. 2012 19:44

Men visse compilere har compiler options til det.

GCC:
-Wconversionarne_v (#12)

Det giver ganske rigtigt en warning med mit eksempel ovenfor. Jeg prøvede dernæst at bruge samme option på den kode jeg arbejder med lige nu. Det gav mig 297 warnings. Jeg er ikke sikker på om det er produktivt for mig at undersøge dem alle, da jeg ved der er mange steder hvor jeg helt bevidst tildeler en værdi som vil blive truncatet. Som f.eks.

buffer[4]=size>>8;
buffer[5]=size;

Det gav mig to warnings.

The Internet is full, please try again later.

#14: arne_v

12. jun. 2012 20:17

#13

Der er jo nok en grund til at -Wall ikke enabler det.

Men du burde nok slå den til og så lave explicit cast når du ved at det er OK (så får man ingen warning).

#15: buchi

12. jun. 2012 20:39

Der skal mere til en bare en exploit - Som default accepterer mysql kun connections fra localhost, og selv hvis den skal åbnes udtil, bør den stadig låses på hostname .. Also, mon dog f.eks Linked in kører på mysql ;)Bundy (#4)

MySQL er en af verdens mest anvendte relationsdatabaser.

Men forhåbentligt er der ikke nogen der har hentet data ud direkte fra linkedins databaser. Disse skulle gerne stå i en DMZ zone.

Større sider kører som reget på flere servere, hvorfor det ikke nytter kun at tillade at connecte fra localhost.

#16: kasperd

12. jun. 2012 21:50

Større sider kører som reget på flere servere, hvorfor det ikke nytter kun at tillade at connecte fra localhost.buchi (#15)

Men man kan køre den på en RFC 4193 adresse, så der kun kan oprettes forbindelser fra lokalnettet.

The Internet is full, please try again later.

#17: Hubert

13. jun. 2012 08:54

Men forhåbentligt er der ikke nogen der har hentet data ud direkte fra linkedins databaser. Disse skulle gerne stå i en DMZ zone.
buchi (#15)

Der mangler da vist et 'ikke' her... :)

Maybe the dingo ate your baby!

#18: Hubert

13. jun. 2012 09:41

Der er muligvis tale om et lidt mere skræmmende hul end først antaget. Det påståes at huller kan give privilege escalation til kernel niveau på både win7 og FreeBSD. Hvilke versioner af FreeBSD der er tale om melder historien ikke noge om.

Maybe the dingo ate your baby!

#19: arne_v

13. jun. 2012 09:53

#18

Det lyder som en and. Hvordan skulle adgang til at logge ind til databasen give privilige escalation udenfor databasen?

#20: Hubert

13. jun. 2012 10:05

#18

Det lyder som en and. Hvordan skulle adgang til at logge ind til databasen give privilige escalation udenfor databasen?arne_v (#19)

Det er også noget værre vrøvl. Det er mig der har fået blandet 2 ting sammen. Den sårbarhed der kan give de muligheder er en anden sårbarhed der findes i Xen... My bad :(

Maybe the dingo ate your baby!

#21: Bundy

13. jun. 2012 10:27

MySQL er en af verdens mest anvendte relationsdatabaser.

Men forhåbentligt er der ikke nogen der har hentet data ud direkte fra linkedins databaser. Disse skulle gerne stå i en DMZ zone.

Større sider kører som reget på flere servere, hvorfor det ikke nytter kun at tillade at connecte fra localhost.buchi (#15)

Det er jeg godt klar over, men når man gør det , så sikrer man sig forhåbentlig også at kun de rigtige har adgang til den.

Linux is only free if your time has no value.

#22: LordMike

14. jun. 2012 13:05

#19, altså... med UDF injection skulle det være muligt at køre custom kode / commands på serveren. Så hvis det er linux, og den kører en outdated kernel med en readily-available privilege excalation exploit, så kan du elevere "mysql" kontoen til "root".

Og som root kan du, ja, alt. :)

Men det er nok ikke det der menes :)

An expert is a person who has made all mistakes in a very narrow profession - Niels Bohr Core i7 3770 @ 3.4 Ghz - 16GB DDR3 (1600 Mhz) - 120 GB...

#23: arne_v

27. jun. 2012 03:55

#22

Umiddelbart vil jeg tror at man skal være ret hardcore for at lave en UDF i SQL som udnytter en kernel exploit.

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret bruger