bezpecnost
Divacky Roman
xdivac02 at stud.fit.vutbr.cz
Wed Mar 1 11:53:25 CET 2006
On Wed, Mar 01, 2006 at 10:47:34AM +0100, Dan Lukes wrote:
> Divacky Roman wrote:
> > myslim ze pokouset se o tuhle bezpecnost v OS napsanem v Ccku je jako zkouset
> > se prosexovat k panictvi... to proste NEJDE
>
> No, to je zrejme vec schopnosti pouzivat dany nastroj. Nemyslim si, ze
> existuje jazyk, ve kterem to jde at programator dela cokoliv a naopak,
> ze existuje jazyk, ve kterem to proste za zadnych okolnosti nejde.
> Programovaci jazyk je predevsim nastroj. A ten se bud' pouziva spravne
> nebo spatne - a vysledky jsou podle toho.
>
> Mimochodem, jestlize to "nejde" v C, pak to patrne "nejde" ani v
> assembleru - a z toho by se zpetne patrne dalo dokazat, ze to "nejde" v
> zadnem programovacim jazyku.
ok... rekneme ze v jazyce C je pravdepodobnost chyby VYRAZNE vyssi nez v
nejakem jine jazyce (souvisi s neexistenci bezpecnych pointeru, neexistenci GC,
posahanym typovym systemem a celkovou nizkourovnosti jazyka).
> > fbsd ma licenci na coverity a uz se odhalila spousta chyb, navic i fbsd ma
> > nejaky ten audit team, sice o nem neni slyset ale existuje :) a uprimne receno,
> > myslim ze nejvic chyb (jak bezpecnostnich tak vykonostnich tak chyb kter
>
> Ten nastroj neznam, ale vidim, jake chyby se v kodu objevuji. Bud' se
> ten nastroj nepouziva, nebo existuje prilis mnoho typu chyb, ktere
> nedokaze odhalit.
>
> Nicmene, nemyslim si, ze odpovednost programatora za kod se da
> redukovat na to "ze to prohnal nejakym automatizovanym nastrojem".
neni v lidskych silach vyvarovat se chyb typu
if ((bah = malloc(..)) = NULL)
a jsou principielne 2 moznosti jak tomuhle predchazet
1) pouzit jazyk ve kterem tento typ chyby neni popr. je vyrazne redukovat
2) projet ten kod nejakym checkerem na tyto typy chyb
fbsd je napsano v jazyce C a zvolilo druhou moznost, program coverity, ktery
odhaluje podobne typy chyb.
> > zpusobuji pad) se objevi prostym pouzivanim systemu a tady plati ze cim vic
> > uzivatelu tim lip...
>
> Na, ano, souhlasim, ze zpusob "spustte to a kdyz to nebude fungovat,
> tak je v tom asi chyba" je zpusob, jak zjistit, ze v kodu je chyba, ale
> neodvazil bych se ho propagovat jako ten hlavni a nejlepsi mozny. S
> touto myslenkou v hlave programuje, s prominutim, prase. A ja si,
> mimochodem, nemyslim, ze vetsina programatoru, kteri prispivaji do kodu
> by souhlasilo s tim, ze se lze na slusne programovani vykaslat, protoze
> na chyby se prijde, az to lidi spusti.
nerikam ze se na to ma spolehat, nicmene faktem je, ze se neda deterministicky
postihnout ze v kodu neni chyba. a tak se pouzivaji ruzne stochasticke procesy
kterymy se chyby zjistuji, napr. testovani uzivateli. co se ti na tom nezda?
az napises program, kteremu predlozis kus zdrojaku a on ti napise "program je
bez chyby" tak fajn, ale tohle nejde. vim, ze existuji ruzne verifikacni
formalismy, dokazovani programu (hoare-floyd) atd. ale realne se nic z toho
nepouziva protoze je proste levnejsi zaplatit 10ti studentum 50 korun za hodinu
at to testuji. a i kdyby se to pouzivalo tak to nikdy nebude fungovat 100%,
takove jsou zakony prirody.
reseni vidim tahle
1) pouzivat lepsi jazyky
2) pouzivat lepsi testovaci metody
3) pouzivat run-time verifikace
1cka je u fbsd nesmyslna, 3ka se v urcite mire pouziva (mimochodem, daleko vic
nez u linuxu atp.) ale jen ve vyvojovych verzich a 2ka je mimojine to co ty
kritizujes, tj. testovani davem...
kazdopadne - at se vratim k jakztakz puvodnimu topicu - obsd a fbsd jsou
bezpecnostne (co se tyce kvality kodu) naprosto srovnatelne, s tim ze mam
tendenci verit ze fbsd je na tom lip proste protoze ho pouziva vic lidi...
a uprimne receno myslim ze bysme tuhle debatu meli utnout :)
roman
More information about the Users-l
mailing list