Original: http://xfront.com/malware/index.html
Roger Costello
Nedavno sam krenuo da učim o malveru. Da bih organizovao svoje misli, kreirao sam model relevantnih koncepata. Malver uključuje softverske programe, tako da sam morao modelirati programe – njihove ulaze i izlaze. Saznala sam da malver uključuje namjeru da se nanese šteta, pa sam morao modelirati ljude koji kreiraju programe s namjerom (bilo zlonamjernim ili dobroćudnim) i modelirati pojam štete. Saznala sam da ne postoji opšteprihvaćena definicija malvera. Neki ljudi zlonamjernog softvera definišu kao softver koji je kreiran sa zlonamernim namerama; drugi je definiraju kao softver koji uzrokuje štetu. Usvojio sam definiciju da je malware softver koji je stvoren sa zlonamernim namerama i kada se njegovi rezultati izvrše štete.
U nastavku su izjave entiteta i odnosa izrazio u svom modelu. Imajte na umu da koristim riječ program, a ne softver. Ja razliku između programa i ulaza programima. Ulazi mogu biti softver, kod, tekst ili binarni. Programi obrađuju (izvršavaju/interpretiraju) ulaze. Cilj je da se odredi koji ulazi su zlonamjernog softvera.
- Programi stvaraju ljudi.
- Ulaze u programe kreiraju ljudi.
- Svaki ulaz u program proizvodi jedan izlaz.
- S obzirom na isti ulaz, program uvijek proizvodi isti izlaz.
- Program je kreiran da obrađuje određeni skup ulaza i proizvodi određeni skup izlaza. Stvarni skup ulaza u program i izlazi koje proizvodi program može biti veći. To jest, očekivani U/I je podskup stvarnog U/I.
- Kada osoba kreira ulaz u program, on ima ili benigne ili zlonamerne namere.
- Neki rezultati izazivaju štetu.
- Ulazni podaci koje program kreira za obradu su benigni. Izlazi koje je program kreirao da bi proizveli ne štete.
- Ako su gore navedene tvrdnje zadovoljene, logično slijede sljedeći zaključci:
- Unosi koje je program kreiran za obradu nisu malware; samo ulazi koje program nije kreiran za obradu može biti malware.
- Softver napisan sa benignom namerom može biti malware. Mogu postojati benigni ulazi koji, kada se izvršavaju programom, rezultiraju izlazima koji uzrokuju štetu.
——————————
Modeliranje uključuje apstrahovanje irelevantnih aspekata i pojednostavljenje nekih relevantnih aspekata. Pokazao sam gore navedene izjave prijatelju i on je identifikovao stvari koje je moj model izostavio i pojednostavio. U nastavku su komentari mojih prijatelja, u crvenoj boji.
1. Programi stvaraju ljudi.
Neki programi su kreirani od strane drugih programa. Na primjer, Lexu se daje gramatika kao ulaz i izlazi parser (koji je program). Dakle, program je kreirao program.
2. Ulaze u programe kreiraju ljudi.
Većina današnjeg softvera je ugrađeni softver. Ti programi dobijaju ulazne podatke od senzora i aktuatora. Dakle, većina unosa je od ne-ljudi.
3. Svaki ulaz u program proizvodi jedan izlaz.
Ako program ne uspije, možda neće proizvesti nikakav izlaz, ili može proizvesti pogrešan izlaz, ili može proizvesti pravi izlaz u pogrešno vrijeme (što je, u suštini, ista stvar kao i pogrešan izlaz).
4. S obzirom na isti ulaz, program uvijek proizvodi isti izlaz.
To gotovo nikada nije istinito u ugrađenim real-time programima. Na primjer, ulaz programa je ventil za kavu koji kontrolira protok vode u aparat za kavu, a izlaz je nivo vode. Dajte programu isti ulaz (ventil) i gotovo uvijek će izlaz (nivo vode) biti drugačiji.
5. Program je kreiran da obrađuje određeni skup ulaza i proizvodi određeni skup izlaza. Stvarni skup ulaza u program i izlazi koje proizvodi program može biti veći. To jest, očekivani U/I je podskup stvarnog U/I.
Program treba uvijek provjeriti ulazne podatke prije obrade. Dakle, skup ulaza koji se obrađuju treba da bude jednak skupu ulaza koje je program kreirao za obradu.
6. Kada osoba kreira ulaz u program, on ima ili benigne ili zlonamerne namere.
Kao što je ranije rečeno, ljudi nisu jedini entiteti koji stvaraju ulaze. Da li senzori i aktuatori imaju namjere?
7. Neki rezultati izazivaju štetu.
U redu.
8. Ulazni podaci koje program kreira za obradu su benigni. Izlazi koje je program kreirao da bi proizveli ne štete.
Razmislite o programu koji kontrolira krilo. Ulaz je iz pitot cijevi. Pretpostavimo da postoji led na pitot cevima, što dovodi do ulaza u program koji proizvodi izlaz (konfiguracija krila) koji uzrokuje da avion zastane. Ulaz je u rasponu koji očekuje program i ima benigne namjere (pod pretpostavkom da pitot cijev ima namjere), ali izlaz proizvodi štetu.
Ako su gore navedene tvrdnje zadovoljene, logično slijede sljedeći zaključci:
- Unosi koje je program kreiran za obradu nisu zlonamjernog softvera; samo ulazi koje program nije kreiran za obradu može biti zlonamjernog softvera.
Krasan.
- Softver napisan sa benignom namerom može biti zlonamjernog softvera. Mogu postojati benigni ulazi koji, kada se izvršavaju programom, rezultiraju izlazima koji uzrokuju štetu.
Da, postoje neki doprinosi koji su benigni i ipak dovode do štete. Niko nije nameravao da sistem zračenja izazove štetu, ali zbog grešaka u sistemu, neko je ubijen.
——————————
Sjetite se da sam usvojio definiciju da je malware softver koji je stvoren sa zlonamjernim namjerama i kada je izvršen uzrokuje štetu. Evo šta je moj prijatelj rekao o tome:
Pretpostavimo da postoji greška u dizajnu programa, koji otkriva ranjivost da neko eksploatiše; je taj program zlonamjernog softvera? Je implementacija buggy zlonamjernog softvera samo zato što mogu iskoristiti? Mislim da je to SSH koji je imao bubu u njemu nešto poput 10 godina dok neko iskoristio bug. Da li je program SSH zlonamjernog softvera za 10 godina da bug nije otkrivena? Šta ako postoji greška u dizajnu programa koji ima potencijal da uzrokuje štetu, npr greška u softveru aviona koji može uzrokovati da sruši. Da li je to zlonamjernog softvera?
Zadnja izmjena: 15. travnja 2019. Autor: Roger Costello