pravidla pro psani daemonu

Pavel Kankovsky peak na kerberos.troja.mff.cuni.cz
Čtvrtek Prosinec 10 12:44:50 CET 1998


On Wed, 9 Dec 1998, Jan Jirmasek wrote:

>   zajimalo by mne, jestli nekdo nevite o zdroji informaci, nebo spis o
> takovy kucharce, jak psat na linuxu 'bezpecne' demony. Ceho se urcite pri
> psani demonu vyvarovat, aby se z nich nestala cernocerna bezpecnostni
> dira...

Co se tyce bezpecnosti, tak existuje jedno obecne zakladni pravidlo:
vzdy vedet, co prichazi od neduveryhodneho zdroje (napr. po siti)
nebo se deje v koncinach, nad kterymi nemam plnou kontrolu (napr. v /tmp),
a zajistit, aby LIBOVOLNY stav techto veci nevedl k tomu, ze se muj
program bude chovat jinak, nez by se chovat mel.

V praxi je dobre si davat bacha specialne na stringy (strcpy(), sprintf()
a spol. -- nekteri jsou toho nazoru, ze je nejlepsi je nepouzivat vubec)
a na pole v cecku vubec, dale na praci se soubory (uz zminovane /tmp;
dobre je nedelat oblibenou hovadinu, totiz psat do souboru
/tmp/nejake_fixni_jmeno). Dalsi, ponekud sofistikovanejsi oblast, je
situace, kdy jsou nejaka data predavana dal (napr. zapisovana do souboru),
protoze tam by obsah tech dat mohl pusobit paseku (napr. narusit strukturu
toho souboru). (*)

Zvlastni kapitolou jsou denial of service (zpusobene vycerpanim dostupnych
zdroju, nikoli tim, ze napr. neco udela segfault). Ty se resi dost
obtizne, ale spon je treba dbat na to, aby spotreba prostredku byla nejak
proporcionalni vuci tomu, kolik musi spotrebovat utocnik, tj. aby napr.
zaslani O(n) dat nesezralo O(n^3) prostredku.

--Pavel Kankovsky aka Peak  [ Boycott Czech Telecom--http://www.bojkot.cz ]
"spt Telecom... ted zdrazujeme zitrek!" [ Engl. lang. info-- .../english/ ]

(*) mam blby dojem, ze tohle dela Apache, ze at dostane URL jakekoli, tak
ho opise slepe do logu, jeste se na to budu muset podivat...



Další informace o konferenci Linux