On Sat, Sep 30, 2000 at 12:42:34PM +0200, Ronny Roeller wrote:
Kannst du mal genau sagen, wem was gehoeren soll, wer was ausfuehren soll und wesen environment dann geandert ist bzw. wie da jemand root wird? Am besten so in der Art:
- es gibt ein programm P, das eine funktion F aus der dynam. library L
ausführt. zumindest wärend der ausführung von F läuft es mit erweiterten rechten (z.b. suid auf root). die dynamische lib L liegt bsp.weise in /usr/lib.
- Angreifer A nimmt sich den source-code von L und ändert die betreffede
Funktion F. [wie gehen mal davon aus, daß das programm open-source ist, ansonsten ist es halt *etwas* streßiger.] die neue lib trage den namen FL (fakelib) mit der funktion FF (fake function)
- der pfad zu FL sollte vor dem nach L liegen in LD_*
- /home und /tmp mit der Option noexec mounten
- jetzt startet angreifer A das programm P
- der linker findet nun die lib FL vor L
- folglich wird FF statt F ausgeführt
*verstanden* :)
Deine Idee klappt allerding nicht, da bei binaries mit suid und/oder sgid-Bit, die LD-Variablen gar nicht ausgewerten werden. Aus "man ld.so":
The necessary shared libraries needed by the program are searched for in the following order
o Using the environment variable LD_LIBRARY_PATH (LD_AOUT_LIBRARY_PATH for a.out programs). Except if the executable is a setuid/setgid binary, in which case it is ignored.
[und weiter unten]
LD_PRELOAD A whitespace-separated list of additional, user- specified, ELF shared libraries to be loaded before all others. This can be used to selectively over ride functions in other shared libraries. For setuid/setgid ELF binaries, only libraries in the standard search directories that are also setgid
für meine begriffe sollte das funktionieren und wenn man in FF nicht nur "hello world" ausgibt, auch die übernahme des rechners möglich sein.
Nein. Das haben sich natuerlich auch schon andere Leute ueberlegt. Dein Angriff klappt wie oben beschrieben nicht.
Reinhard