original:http://xfront.com/malware/index.html
Pochopenie malvéru
Nedávno som sa rozhodol dozvedieť sa niečo o škodlivom softvéri. Aby som usporiadal svoje myšlienky, vytvoril som model príslušných konceptov. Malware zahŕňa softvérové programy, takže som potreboval modelovať programy – ich vstupy a výstupy. Dozvedel som sa, že škodlivý softvér zahŕňa úmysel spôsobiť škodu, takže som potreboval modelovať ľudí, ktorí vytvárajú programy, so zámerom (či už škodlivým alebo neškodným) a modelovať pojem poškodenia. Dozvedel som sa, že neexistuje všeobecne akceptovaná definícia škodlivého softvéru. Niektorí ľudia definujú malvér ako softvér vytvorený so škodlivým úmyslom; iní ho definujú ako softvér, ktorý spôsobuje ujmu.Prijal som definíciu, že škodlivý softvér je softvér vytvorený so zlým úmyslom a po vykonaní spôsobí jeho výsledky škodu.
Ďalej sú uvedené vyhlásenia subjektov a vzťahov, ktoré som vyjadril v mojom modeli. Upozorňujeme, že namiesto softvéru používam slovo program . Rozlišujem medzi programami a vstupmi do programov . Vstupy môžu byť softvér, kód, text alebo binárne súbory. Programy spracovávajú (vykonávajú / interpretujú) vstupy. Cieľom je určiť, ktoré vstupy sú malvér.
- Programy vytvárajú ľudia.
- Vstupy do programov vytvárajú ľudia.
- Každý vstup do programu vyprodukuje jeden výstup.
- Pri rovnakom vstupe program produkuje vždy rovnaký výstup.
- Vytvorí sa program na spracovanie určitej množiny vstupov a produkciu určitej množiny výstupov. Skutočná množina vstupov do programu a výstupov produkovaných programom môže byť väčšia. To znamená, že očakávané I / O je podmnožinou skutočných I / O.
- Keď osoba vytvorí vstup do programu, má buď benígne alebo škodlivé úmysly.
- Niektoré výstupy spôsobujú ujmu.
- Vstupy, ktoré sa vytvárajú na spracovanie, sú neškodné. Výstupy, ktoré sú vytvorené na produkciu, nespôsobujú škodu.
- Ak sú vyššie uvedené tvrdenia splnené, potom logicky nasledujú nasledujúce závery:
- Vstupy, ktoré bol vytvorený na spracovanie, nie sú malvérom; iba vstupy, ktoré program nebol vytvorený na spracovanie, môžu byť malvér.
- Softvér napísaný s neškodným úmyslom môže byť malvér. Môžu existovať benígne vstupy, ktoré pri vykonaní programom vedú k výstupom, ktoré spôsobujú škodu.
——————————
Modelovanie zahŕňa abstrahovanie od nepodstatných aspektov a zjednodušenie niektorých relevantných aspektov. Vyššie uvedené vyjadrenia som ukázal kamarátovi a ten identifikoval veci, ktoré môj model vynechal a zjednodušil. Nižšie sú komentáre mojich priateľov červené .
- Programy vytvárajú ľudia.Niektoré programy sú vytvorené inými programami. Napríklad Lex dostane gramatiku ako vstup a výstup syntaktického analyzátora (čo je program). Takže program vytvoril program.
- Vstupy do programov vytvárajú ľudia.Väčšina dnešného softvéru je zabudovaný softvér. Tieto programy získavajú vstupy zo senzorov a akčných členov. Väčšina vstupov teda pochádza od ľudí.
- Každý vstup do programu vyprodukuje jeden výstup.Ak program zlyhá, nemusí produkovať žiadny výstup alebo môže produkovať nesprávny výstup alebo nesprávny výstup (čo je v podstate to isté ako nesprávny výstup).
- Pri rovnakom vstupe program produkuje vždy rovnaký výstup.Vo vložených programoch v reálnom čase to takmer nikdy neplatí. Napríklad vstupom do programu je ventil kávovaru, ktorý riadi prietok vody do kávovaru a výstupom je hladina vody. Dajte programu rovnaký vstup (ventil) a takmer vždy sa bude líšiť výstup (hladina vody).
- Vytvorí sa program na spracovanie určitej množiny vstupov a produkciu určitej množiny výstupov. Skutočná množina vstupov do programu a výstupov produkovaných programom môže byť väčšia. To znamená, že očakávané I / O je podmnožinou skutočných I / O.Program by mal vždy skontrolovať vstupy pred ich spracovaním. Takže sada vstupov, ktoré sa spracúvajú, by sa mala rovnať množine vstupov, ktoré bol program vytvorený na spracovanie.
- Keď osoba vytvorí vstup do programu, má buď benígne alebo škodlivé úmysly.Ako už bolo povedané, ľudia nie sú jedinými entitami, ktoré vytvárajú vstupy. Majú senzory a akčné členy zámery?
- Niektoré výstupy spôsobujú ujmu.Dobre.
- Vstupy, ktoré sa vytvárajú na spracovanie, sú neškodné. Výstupy, ktoré sú vytvorené na produkciu, nespôsobujú škodu.Zvážte program, ktorý ovláda krídlo. Vstup je z Pitotovej trubice. Predpokladajme, že na Pitotovej trubici je ľad, čo vedie k vstupu do programu, ktorý produkuje výstup (konfigurácia krídla), ktorý spôsobí zastavenie lietadla. Vstup je v rozsahu očakávanom programom a má nezhubné úmysly (za predpokladu, že má úmysly Pitotova trubica), ale výstup poškodzuje.
- Ak sú vyššie uvedené tvrdenia splnené, potom logicky nasledujú nasledujúce závery:
- Vstupy, ktoré bol vytvorený na spracovanie, nie sú malvérom; iba vstupy, ktoré program nebol vytvorený na spracovanie, môžu byť malvér.Upravené.
- Softvér napísaný s neškodným úmyslom môže byť malvér. Môžu existovať benígne vstupy, ktoré pri vykonaní programom vedú k výstupom, ktoré spôsobujú škodu.Áno, existujú niektoré vstupy, ktoré sú benígne, a napriek tomu vedú k poškodeniu. Nikto nemal v úmysle spôsobiť ujmu radiačnému systému, ale kvôli chybám v systéme bol niekto zabitý.
——————————
Pripomeňme, že som prijal definíciu, že malvér je softvér vytvorený so zlým úmyslom a keď je vykonaný, spôsobí škodu. Tu mi povedal môj priateľ:
Predpokladajme, že v návrhu programu je chyba, ktorá odhaľuje zraniteľnosť, ktorú niekto zneužíva; je to programovy malware? Je bugový implementačný malvér iba preto, že ho možno zneužiť? Myslím, že to bol SSH, ktorý mal chybu v sebe asi 10 rokov, kým niekto chybu nevyužil. Bol program SSH malvérom 10 rokov, keď sa chyba nezistila? Čo ak sa v dizajne programu vyskytne chyba, ktorá môže spôsobiť škodu, napríklad chyba v softvéri lietadla, ktorá by mohla spôsobiť jeho pád. Je to malware?