scponly wegen bugfix compilieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

scponly wegen bugfix compilieren

Beitrag von startx » 27.12.2005 22:36:52

hallo.

ich habe auf http://www.sublimation.org/scponly/ gelesen, das es eine mögliche sicherheitslücke in scponlyc gibt. da ich gleichzeitig scponly updaten will hab ich das mal in diese rubrik hier gepackt.


folgende fragen:
1) ich verstehe glaube ich diese punkte nicht:

a) zum bug selbst:
- if a user executable dynamically linked setuid binary (such as ping) exists on the same file system mount as the user's home directory
was ist damit gemeint "exists on the same file system mount" ?
b) "the operating system supports an LD_PRELOAD style mechanism to overload dynamic library loading" wie finde ich das raus?

c) zum fix selbst steht da:
"The new release of scponly-4.2 disallows chrooting to any directory that:
is owned by someone other than the superuser (UID 0)" wie jetzt?

2) wie auch immer, ich habe versucht scponly auf sarge zu compilieren:
leider bricht der vorgang sofort ab mit:

Code: Alles auswählen

i386-linux-gcc -Wall -g -O2 -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/usr/etc/scponly/debuglevel"' -o scponly scpo
nly.o helper.o
helper.o(.text+0x212): In function `check_dangerous_args':
/home/startx/scponly-4.2/helper.c:159: undefined reference to `optreset'
collect2: ld returned 1 exit status
make[1]: *** [scponly] Error 1
make[1]: Leaving directory `/home/startx/scponly-4.2'
make: *** [build-stamp] Error 2
was mir nicht wirklich was sagt ... woran fehlt es?
(configure ist problemlos ducrhgelaufen)

3) wie kommt es das der bug (vom 21.dez.) noch nicht in der debian security liste auftaucht ...?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.12.2005 00:32:16

startx hat geschrieben: a) zum bug selbst:
- if a user executable dynamically linked setuid binary (such as ping) exists on the same file system mount as the user's home directory
was ist damit gemeint "exists on the same file system mount" ?
z.B hat ping das setuid bit (s-bit) gesetzt, aber noch andere

Code: Alles auswählen

root@gms1:~# ls -l /bin/ping
-rwsr-xr-x  1 root root 30756 2005-10-23 20:19 /bin/ping
root@gms1:~# find /bin -perm -4000
/bin/su
/bin/mount
/bin/umount
/bin/ping
/bin/ping6
Wenn sich auf dem gemounteten Filesystem, auf dem sich die Homeverzeichnisse der User befinden, ein solches Programm befindet, ist die Bedingung erfüllt:

Code: Alles auswählen

find <Mountpoint> -perm -4000
startx hat geschrieben: b) "the operating system supports an LD_PRELOAD style mechanism to overload dynamic library loading" wie finde ich das raus?
Das ist unter Linux erfüllt. Ich kenne zumindest keine Methode dies abzuschalten. Siehe "man ld.so"
startx hat geschrieben: c) zum fix selbst steht da:
"The new release of scponly-4.2 disallows chrooting to any directory that:
is owned by someone other than the superuser (UID 0)" wie jetzt?
das chroot directory muß root gehören
startx hat geschrieben: 2) wie auch immer, ich habe versucht scponly auf sarge zu compilieren:
leider bricht der vorgang sofort ab mit:
"optreset" wird auch auf meinem System im /usr/include/getopt.h nicht declared, scheint also eine Inkompatibilität zu sein (libc6), die eigentlich über "configure" abgefangen werden sollte. Am einfachsten änderst du folgende Zeile "extern int optreset;" zu "int optreset;" in der Datei helper.c

Gruß
gms

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 28.12.2005 00:41:05

das chroot directory muß root gehören
also wenn /home/user das chroot verzeichnis ist muss das root gehören??
aber der user kann schreibrechte bekommen? sonst führe ich das doch ad absurdum
der user in sein verzeichnis nicht schreiben darf.

oder versteh ich was falsch?

<edit>

okay, das compilieren läuft jetzt durch, sowahl mit make als auch über dh_make etc ...

allerdings wird keine scponlyc erstellt, obwohl ich sowaohl in der debian/rules also auch beim manuellen ./configure "--enable-chrooted-binary" angegeben habe.

woran liegt das?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.12.2005 01:06:42

Code: Alles auswählen

Fix:
The new release of scponly-4.2 disallows chrooting to any directory that:                                 - is owned by someone other than the superuser (UID 0)                                            
        - is writeable by group or other 
nein, laut dieser Beschreibung dürfen auch keine Schreibrechte für andere außer root gesetzt sein. Ist sicher eine starke Einschränkung, aber anscheinend notwendig

Gruß
gms

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 28.12.2005 01:11:32

err aber das macht doch die sache quasi unbenutzbar ...
ich meine wozu brauche ich ein /home/username directory wenn ich nicht
nichts darin ablegen kann?

abgesehen davon frage ich mich immer noch warum dieser bug fast nirgendsdiskutiert wird, das müsste doch abertausende von accounts betreffen.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.12.2005 13:24:02

startx hat geschrieben: abgesehen davon frage ich mich immer noch warum dieser bug fast nirgendsdiskutiert wird, das müsste doch abertausende von accounts betreffen.
Die meisten werden wohl eine eigene Homepartition haben und daher kein setuid Programm auf dieser Partition. Daher haben die sicher noch keine Notwendigkeit upzugraden.
startx hat geschrieben:err aber das macht doch die sache quasi unbenutzbar ...
ich meine wozu brauche ich ein /home/username directory wenn ich nicht
nichts darin ablegen kann?
du mußt ein oder mehrere Unterverzeichnisse mit Schreibrechten für den User anlegen

So werden die Rechte standardmäßig vergeben:

Code: Alles auswählen

root@gms1:/# ls -ld /home/scponly /home/scponly/*
drwxr-xr-x  7 root    root  4096 2005-12-28 13:20 /home/scponly
drwxr-xr-x  2 root    root  4096 2005-12-28 13:20 /home/scponly/bin
drwxr-xr-x  2 root    root  4096 2005-12-28 13:20 /home/scponly/etc
drwxr-xr-x  2 scponly users 4096 2005-12-28 13:20 /home/scponly/incoming
drwxr-xr-x  3 root    root  4096 2005-12-28 13:20 /home/scponly/lib
drwxr-xr-x  4 root    root  4096 2005-12-28 13:20 /home/scponly/usr

Gruß
gms

Bierhasser
Beiträge: 23
Registriert: 29.10.2005 07:54:14
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von Bierhasser » 28.12.2005 17:57:28

@gms Danke für den Tip mit der helper.c Den selben fehler hatte ich beim combilieren auch und dachte da warte ich eben bis ein neues Releas heraus kommt. So ist das natürlich eine feine Sache ;)

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 28.12.2005 23:40:22

Die meisten werden wohl eine eigene Homepartition haben und daher kein setuid Programm auf dieser Partition.
ich dachte es heise "Im selben verzeichnisbaum".
ja, natürlich haben fast all ne extra /home partition ...

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.12.2005 00:34:14

Wenn du auf http://www.sublimation.org/scponly bei Exploit weiterliest, dort wird es ausführlicher (verständlicher) beschrieben:
http://www.sublimation.org/scponly/ hat geschrieben: create a hardlink to a system setuid program, such as ping (which is setuid), effectively placing a setuid binary in their chroot. (this is why the setuid binary has to be on the same mount point, as hardlinks cannot traverse file systems and softlinks cannot traverse outside the chroot)
Gruß
gms

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 29.12.2005 07:40:22

okay, sehe ich ein ... :)

hast du denn scponly erfolgreich compiliert? was muss ich ausser "./configure "--enable-chrooted-binary." machen um das scponlyc binary zu bekommen?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.12.2005 10:09:31

Mit "./configure --enable-chrooted-binary" und anschließendem "make && make install" erhältst du das "scponlyc" Programm.
Du könntest auch noch die Option "--disable-chroot-checkdir" ausprobieren. Zu empfehlen ist dies aber sicherlich nicht.

Gruß
gms

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 29.12.2005 15:08:40

"make && make install"
ja, nur hab ich dann eben kein debian paket ... was ich ja eigentlich gern hätte. na mal sehen.

Antworten