Core dump

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Leden 25 16:51:20 CET 2001


On Tue, 23 Jan 2001, Ing. Pavel PaJaSoft Janousek wrote:

> > K tomu rucnimu nastavovani dumpable...doufam, ze to setreuid() etc.
> > provadi jeste pred tim, nez zacne blbnout s threadama. Kdyby totiz bezely
> > thready pod ruznymi uzivateli, tak krome toho, ze je to samo o sobe
> > zverstvo (btw: takhle funguje MS IIS), tak specialne nahozeni dumpable na
> > nejakem z nich je zaruceny recept na diru do systemu dost velkou pro
> > nakladak.
> 
> 	Tak jako jsem schopen menit identitu pres spousteni subprocesu apod.
> (SUID), proc je takove zverstvo udelat stejnou funkcnost pomoci threadu? 

U procesu je mozno provest vicemene jednosmerny prechod, kterym se
pristupovych prav, co drzim, navzdy zbavim: zmenim uidy a gidy, zavru
vsechny soubory, co muzu, skocim do dobre definovaneho adresare a
pripadne provedu execve() (nemusim mozna delat, pokud mam jistotu, ze
v pameti neni nic, co by mohlo vadit, coz je ale dost osidny
predpoklad). A uz neni cesty zpet (krome zneuziti nejake privilegovane
sluzby, at uz set[ug]id programu, nebo nejakeho sitoveho demona).

Kdyz totez udelam s thready, tak zadnou separaci nemam. Vsechny thready
bezi v jednom pametovem prostoru a tudiz kazdy thread EFEKTIVNE disponuje
pravy, ktera ma libovolny jiny thread. Zrovna v pripade IIS to znamena, ze
vlastne cely webserver bezi pod uzivatelem SYSTEM, coz znamena, ze
sebepitomejsi chyba v libovolnem DLLku dava k dispozici absolutni
kontrolu nad celym systemem (viz napr. http://www.securityfocus.com/
vdb/?id=1911).

> 	Bezpecnostni rizika jsou porad stejna, stejne jako samba bezi vzdy pod
> uzivatelem ktery se k ni loguje, tak si dovedu predstavit ze to same
> bude delat samba, ale v threadech (ne forcich)...

Nejsou, viz vyse. Co se tyce Samby: nevim, jak je to presne udelane. Bud
to muze byt vyse popsany "jednocestny" zpusob, nebo to, ze proces dal bezi
pod rootem, ale pouziva setfsuid() a setfsgid() pro pristup k souborum.
Ten druhy pristup je pochopitelne skoro tak spatny jako ty thready.
NFS a FTP demoni to vetsinou tak delaji, ale NFS a FTP jsou diry samy o
sobe, takze je to skoro jedno. :)

> 	Podobny pristup jsem videl i u mnoha jinych veci, proc veskere
> bezpecnostni zaklopky implementovat na urovni programu, kdyz uz jsou
> kvalitne udelany v hostitelskem OS? (Napr. pristup k prostredkum,
> souborum apod.).

Protoze thready jednoho procesu bezici pod ruznymi uzivateli bezpecnostni
mechanismy OS akorat podkopavaji.

> 	Chapu, ze kazde reseni ma urcite +-, ale odsuzovat neco jen z pohledu
> ze je to sverstvo a pritom trosku jinymi prostredky dosahujeme (bez
> nazyvani zverstvem) presne tu samou funkcnost mi pripadne jako prilis
> jednostranne videni.

Dosahujeme? Kdo? Ale i kdybych to omylem nekdy spachal sam, tak to nic
nezmeni na tom, ze je to zverstvo (ac by si mnozi -- nechci jmenovat
nektere nase politiky -- prali, aby meritkem pravdivosti bylo to, kdo
urcitou vec hlasa, tak to nejak v praxi nefunguje).

> 	Nebo mi neco uniklo?

Nevim, kdo tady pred nedavnem Linux kritizoval sam. ;)


On Tue, 23 Jan 2001, Michal Krause wrote:

> Samozrejme, to by me ani ve snu nenapadlo, nechat bezet nektery
> z threadu pod rootem :)

Nektere lidi napadaji takove veci v naprosto bdelem stavu. :)

> > dumpable na nejakem z nich je zaruceny recept na diru do systemu dost
> > velkou pro nakladak.
> 
> Ale jenom pro pripad zneuziti lokalnim uzivatelem, ne? Nebo je v tom
> jeste neco jineho?

Samozrejme, ze toho muze vyuzit jen nekdo, kdo je schopen pod urcitym
uzivatelem spustit nejaky kod. To ovsem zdaleka neznamena, ze prilezitost
to vyuzit se nemuze naskytnout i nekomu uplne cizimu.


On Tue, 23 Jan 2001, Ing. Pavel PaJaSoft Janousek wrote:

> 	Ano, mate pravdu, ze se vytvareji lokalni kopie, ale vsechny tyto
> 'handle' ukazuji na ty same zdroje (vcetne jejich stavu).

Ano, ale to nemusi trvat vecne, viz vyse.

> 	Spis co mne zajima je, zda-li ma Linux podobnou podporu pro 'lokalni
> promenne threadu' jako MS Windows, kde si mohu (samozrejme, pres
> rozsireni MS VC++) 'atributy' promennych stanovit, ze promenna je
> lokalni i v ramci threadu a ze tim padem kazdy thread ma svou kopii...

To je naprosto genialni mechanismus a nejsem si jisty, jestli to
myslim vazne nebo ironicky. Uvnitr to funguje tak, ze kazdy thread ma
jinak nastaveny segmentovy registr FS a k temto promennym se automagicky
pristupuje pres nej (jak to delaji na neintelovskych platformach
nevim, ale mozna jsou podobne prasarnicky duvod, proc na ne postupne
rezignovali...nedali uz nahodou k ledu i Alphu?). Ovsem nasledky podobnych
triku jsou dost vesele, protoze se deji opravdu prazvlastni veci, kdyz se
nekdo pokusi vzit ukazatel na takovou promennou a nedejboze ho nekde zkusi
pouzit, pokud mozno rovnou v jinem threadu.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux