nebezpecnost sendmailu

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Březen 2 22:25:14 CET 2002


On Wed, 27 Feb 2002, Zdenek Pytela wrote:

> > Nemyslim, ze by mne nekdo mohl obvinovat z nekritickeho obdivu ke
> > qmailu nebo jeho autorovi, ale tento program jsem byl schopen
> > prozkoumat do takove hloubky a sirky, ze jsem ochoten predpokladat,
> > ze tam zadna zavazna chyba neni.
> 
> Máte matematický důkaz? Pak by mohl být bezpečný.

Tahle uvaha mi pripomina (pro mne neprilis pochopitelny) filosoficky
spor o tom, zda je urcita matematicka veta pravdiva odjakziva nebo az
od chvile, kdy je nalezen jeji dukaz.

Jinak k prvni otazce: matematicky dukaz nemam (i kdyz DJB mozna ano (mam
na mysli parcialni dukaz predpokladajici urcite chovani zbytku systemu --
vice k tomu nize), ale nechce se s nim pochlubit). Ale jakkoli povazuji
matematicke dukazy za nejspolehlivejsi metodu, jak spravnost (nebo
bezpecnost) programu overit, tak nevim, proc bych nemohl cinit rozdil
i mezi *duveryhodnosti* takovych programu, ke kterym dukaz nemam.

> Ale musel byste takhle projít také všechny knihovny, které používá,
> začněte třeba s glibc a máme od vás pár let pokoj ;-).

Uz je pomerne dlouho znamo, ze pravdivost a dokazatelnost je take otazka
vyberu axiomu (vcetne axiomu pomerne fundamentalnich, jako je zakon
vylouceneho tretiho). To se pochopitelne tyka i dukazu tykajicich se
programu -- nema smysl se bavit o dukazech, pokud se nebudeme zaroven
bavit o pouzitych axiomech, specialne o tech, ktere definuji operace,
ze kterych je program sestaven -- coz je stejne dobre programovaci jazyk, 
ve kterem je program zapsan, jako knihovni funkce (ci systemova volani),
ktere pouziva.

> Asi si nerozumíme. Je mutt 1.2.5 neškodný?

Neni. Kdyz ho (v beznem prostredi) spustim, muze delat vsechno, co ja,
ale pritom zpracovava data pochazejici ze zdroju, kterym nepozivaji z me
strany zadne duvery (emaily od cizich lidi).

> Nebo který program vůbec?

Jestlize otazka "ktery" smeruje k tomu, abych rekl jmeno, pak nemuzu
odpovedet, protoze neskodnost (= neschopnost ublizit) zalezi i na
prostredi a zpusobu pouziti programu...mozna nekdy i vic, nez na
samotnem programu.

> Možná jsem měl víc zdůraznit, že vždycky budete dělat kompromisy.

Asi ano, ale proc jich delat vic, nez je nezbytne?

> Tvrdit jenom tak, že jedna implementace je bezpečnější, je dost odvážné.
> Řekněme, že v qmailu je pravděpodobnost nalezení vážné chyby menší, třeba i
> o dost menší. Stačí to takhle?

Rikal jsem neco jineho? A tvrdil jsem to "jenom tak", bez duvodu?


On Fri, 1 Mar 2002, Ing. Pavel PaJaSoft Janousek wrote:

> Ano, muzeme se bavit i o MTA v OS typu UNIX. A ja rikam, ze pokud MTA v
> prostredi typu UNIX pouzije komponentu A a zaroven plati:
> - komponenta A je homogenni a vnitrne nerozdelovana
> - komponenta A obsahuje nezadouci vlastnosti
> - MTA pouziva cast A, ktera se na venek tvari, ze nema nezadouci
> vlastnosti
> 
> nelze o produktu oznacenem jako MTA prohlasit, ze je bezchybny, protoze
> produkt MTA nemuze zarucit, ze nezadouci vlastnosti komponenty A nemaji
> zadny vliv na casti, ktere MTA vyuziva.

To je pravda -- a predpoklady o tom, ze je to MTA nebo unixovy system
jsou zcela zbytecne. Ale pokud je A komponenta, resp. jeji cast uzivana
programem MTA, pouzivana temer vsemi programy v danem systemu (jadro,
systemove knihovny), pak nema smysl se bavit o MTA, protoze bezpecnost
diskutovaneho systemu je v haji bez ohledu na to, zda tam MTA je nebo
neni. A pokud treti predpoklad ("MTA pouziva cast A...") znamena, ze
MTA pouziva A ve shode se specifikaci A, tak uz to jednoznacne znamena,
ze MTA je v tom nevinne a ze chyba je v A.

Abychom si rozumeli: z hlediska bezpecnosti systemu je jedno, ktery kus
kodu to pokazil, jak rika klasicka poucka o retezu a jeho clancich, ale
z hlediska toho, jak bezpecny system budovat, aniz by to stalo jmeni,
trvalo vecnost a vsichni ucastnici se z toho zblaznili, je asi evidentni,
ze strukturovany pristup jediny mozny. Divide et impera.

> A tvrdim to prave z toho titulu, ze zrejme oba vime, jak je konkretne
> v Linuxu (a nejen zde) zpracovan linking a to jak staticky, tak
> dynamicky.

Mozna mi neco unika, ale linkovani, ani dynamicke, ani staticke, s jinymi
knihovnami vesmes nemiva za nasledek, ze se samy od sebe zacnou nahodne
vyvolavat uplne libovolne casti kodu techto knihoven.

> MTA treba qmail sel cestou, ze si neco ubastli a neco vyuzije odjinud,
> ovsem bez jakekoli zaruky - jak tedy muzete prohlasit o qmailu, ze je
> bezpecny (resp. ze je bezpecnejsi nez jiny produkt pouzivajici stejne
> komponenty)?

Protoze chyby ve spolecnych komponentach jsou porad ty same, ale chyb
ve vlastnim kodu bude v jednom pripade treba mnohem mene?

> Zustanme u volantu - volant bude vyroben z materialu, ktery reaguje
> negativne treba presne s 25% dehtem => projevi se to jen u specificke
> skupiny uzivatelu (kuraku - a to jen nekterych). Za beznych podminek
> se i vyrobce domnival, ze vyrobil naprosto dokonaly volant a dodal ho
> integratorovi, ktery ho zabudoval do auta. V okamziku, kdy se prislo
> na chybu a v cem vezi je chybne co?

Chyba vezi v tom, ze nekdo huli v aute. Pravdepodobnost, ze nastane
havarie kvuli tom, ze volant nesnasi urcitou koncentraci dehtu, je
zanedbatelna v porovnani s pravdepodobnosti, ze k havarii dojde kvuli
tomu koureni samotnemu (zvlaste je-li provadeno samotnym ridicem za
jizdy). ;)

> [...] jenze ktery produkt v Linuxu je opravdu ciste staticky
> linkovany? Kdo zaruci, ze dotycny Syscall v kernelu dela presne to,
> co dela apod.? A jsme zase u toho, ze bychom museli mit jednoho
> integratora, ktery by to zarucil a vyzadoval by to od dodavatelu
> komponent... - a to je kamen urazu, ktery vidim.

A byl by krome tohoto manifestu beznadeje a defetismu i nejaky
konstruktivni navrh?

> protoze sendmail je dinosaurus a jeho pouziti je dobrovolna sebevrazda

Ano, ja si to myslim, protoze je to hromada neuveritelne zpraseneho kodu
(pripoustim, ze uplne nejnovejsi verze jsem nevidel...i kdyz o pokusech
vycistit jednou zpraseny kod vim sve), ktera se konfiguruje zpusobem,
ktery je asi tak prakticky a smysluplny jako psat programy primo jako
Turingovy stroje, a ktera ma sklon k naprosto zmatenemu chovani (to
souvisi s predchozimi dvema body). Vsechny me tri argumenty vychazeji
z mych zkusenosti z praxe. YMMV (ostatne znam lidi, co tvrdi, ze jim
nikdy nespadly Wokna, nebo ze pres jejich open relay nikdy zadny
spammer nic neposilal...na svete se deji ruzne divne veci).


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