Bugy - Menu Úvod Co je Bug Zdroje chyb Typy bugů
Základní typy
Existují dva základní typy programátorských chyb:
opomenutí kontroly,
logická chyba, překlep
Tento typ chyby může být velmi nebezpečný ve
chvíli, kdy náš program začne zpracovávat nedůvěryhodné vstupy. Pokud jsou
vstupy důvěryhodné, data si připravujeme my sami. Jedná se o menší problém, než
kdybychom dostávali vstupy z vnějšku a kdokoliv nám mohl cokoliv podvrhnout.
V současné době vzniká v tomto ohledu veliký problém, protože většina programů
přijímá výhradně nedůvěryhodné vstupy, jejich zdroji je hlavně internet a
programy zpracovávají vše, co obdrží. Což může vést k tomu, že například v
protokolu SMB se nic neděje do té doby pokud mezi sebou komunikují dva počítače
navzájem. Naopak se můžeme do počítače prolomit v okamžiku, kdy můžeme počítači
něco podvrhnout.
například: Data přicházející z počítačové sítě nebo z
Internetu, webový prohlížeč nebo e-mailový klient.
Nejvíce se ovšem vyskytují
u složitých implementací jako je vzdálené volání procedur RPC. Když napíšu
proceduru, která čte data z disku a následně ji přizpůsobím tak, aby byla
schopná přijímat požadavky ze sítě, dostávám nově vytvořený síťový souborový
systém, který je jednoduchý a primitivní. Poté zle využít sdílení v síti SMB
nebo NFS.
Síťové servery Apache a PHP jsou bezpečné z hlediska toho co jsou,
jenomže když do nich píší své kódy nevzdělaní programátoři, dostáváme se do
situace, kdy už vše není tak bezpečné.
použití nebezpečných funkcí
Programátor si něco nastudoval, ale nedodržel doporučení.
například: Funkce
strcpy() z jazyka C. Jedná se o systematickou chybu, protože to co dostane v
parametru kopíruje někam do paměti a neexistuje žádné omezení na délku.
Bezpečnostní problém je tedy v tom, že může dojít k přemazání námi neznámého
obsahu paměti.