phpbar.de logo

Mailinglisten-Archive

Re: Sicherheitsprobleme bei MySQL !!!!
Archiv Mailingliste mysql-de

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

Re: Sicherheitsprobleme bei MySQL !!!!



Guido Stepken schrieb am Mittwoch, den  1. September 1999:
> >     Aber mache sich jeder nach eigener Lust und Laune unbeliebt.
[...]
> Herrschaften, ich bitte um Toleranz !

Unterschreib ich! :) Nur lasse ich mir selbst auch nicht die Freiheit
nehmen, eine Meinung zu haben und insbesondere freiwillige
Hilfeleistungen nur den Leuten zu geben, wie ich will.


> Mir sind ein paar haarsträubende Sicherheitsprobleme mit MySQL und SUSE
> aufgefallen .....
> 
> Hier meine Analyse .....
> http://www.little-idiot.de/firewall/zusammen-167.html#sql

Zu: 26.2 Angriff auf S.u.S.E. LINUX und MySQL
    <URL: http://www.little-idiot.de/firewall/zusammen-169.html >

Du zeigst schön, daß es möglich sein kann, mit der SQL-Anweisung
   LOAD DATA INFILE ...
auf Dateien des Rechners zuzugreifen, auf dem der MySQL-Server läuft.

Du schreibst aber nicht, daß das auch genau an der Stelle im MySQL-
Handbuch beschrieben ist, wo es hingehört - im Kapitel "7.15 LOAD DATA
INFILE syntax". :)

Du hast leider auch übersehen, daß es kein haarsträubendes
Sicherheitsproblem ist, sondern daß der entsprechende Datenbank-User
das "File"-Privileg besitzen muß, damit LOAD DATA INFILE erlaubt ist!

Somit es es höchstens ein Fehler des Datenbankverwalters, wenn er
vertrauensunwürdigen Leuten dieses Recht gibt.  (Oder ein Fehler der
S.U.S.E.-Distribution, MySQL in einer unnötig offenen Konfiguration
auszuliefern?)  Jedenfalls keine Manko, das MySQL wesenseigen ist!

Randnotiz:
  In dem Zusammenhang ist interessant, daß seit V3.22.6 auch LOAD DATA
  LOCAL INFILE existiert, das weder das File-Privileg braucht noch die
  potentiellen Sicherheitsprobleme besitzt, da man damit nicht auf
  server-seitige Dateien zugreift.


Weiters schreibst Du:
| Das Statement: 
|       insert .....  
|       select * from passwd into outfile "/etc/passwd";
|       Query OK, 32 rows affected (0.03 sec)
| spare ich mir nun, was Sie ebenfalls sich sparen sollten.

... und man sich auch wirklich sparen kann -- weil es nicht
funktioniert.  ;-)
MySQL überschreib mit SELECT .. INTO OUTFILE aus Sicherheitsgründen
niemals bestehende Dateien!


Deine Empfehlung
| Damit ein solcher Einbruch also nicht möglich ist, sollten Sie MySQL
| nur mit User-Rechten starten, und den MySQL Serverdämon in eine
| CHROOT() Umgebung verbannen.
ist natürlich gut, aber aus oben genannten Gründen eigentlich zu scharf.


Zum bemängelten, angeblich lückenhaften Logging:  Deine Aussage, daß
nur Zugriffe zur DB "mysql" mitgeloggt würden, kann ich nicht
nachvollziehen.  Bei mir wird alles notiert - und so ist das auch
normal.  Zusätzlich gäbe es sogar die Möglichkeit, den Server mit
--log-update=... zu starten, was einen noch besseren Einblick in
alle Datenveränderungen gibt.


Hattest Du im MySQL-Handbuch auch das für Deine Analyse ja sehr
wichtige Kapitel "6.14 How to make MySQL secure against crackers"
gelesen?


Kurzum:
  Dein "Analyse" ist unvollständig und deshalb irreführend, auch wenn
  die Absicht, Sicherheitslücken aufzudecken natürlich prima ist!


> Das sollte insbesondere Leute interessieren, die MySQL Server im
> Internet hinter einer Firewall betreiben ....


Hier evtl. erwähnenswert ist, daß sich MySQL sogar ohne jede TCP/IP-
Netzwerkfunktionalität betreiben läßt.  Dann können nur die Clients
auf genau diesem Rechner auf den Datenbestand zugreifen (z.B. CGI-
Skripte).


Regards,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ >
PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

---
*** 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