Pochopenie Malware

Link: http://xfront.com/malware/index.html

Nedávno som sa rozhodol dozvedieť sa o škodlivom softvéri. Na zorganizovanie myšlienok som vytvoril model relevantných konceptov. Malware zahŕňa softvérové ​​programy, takže som potreboval modelovať programy – ich vstupy a výstupy. Dozvedel som sa, že malware zahŕňa úmysel spôsobiť škodu, takže som potreboval modelovať ľudí, ktorí vytvárajú programy s úmyslom (buď škodlivé alebo neškodné) a modelovať pojem poškodenia. Zistil som, že neexistuje všeobecne akceptovaná definícia škodlivého softvéru. Niektorí ľudia definujú malware ako softvér vytvorený so zlým úmyslom; iní ho definujú ako softvér, ktorý spôsobuje škody.

Nižšie sú vyjadrenia subjektov a vzťahov, ktoré som vyjadril vo svojom modeli. Upozorňujeme, že používam slovo program, skôr než softvér . Rozlišujem medzi programami a vstupmi do programov . Vstupy môžu byť softvér, kód, text alebo binárne. Programy spracovávajú (vykonávajú / interpretujú) vstupy. Cieľom je určiť, ktoré vstupy sú malware.

  1. Programy sú vytvárané ľuďmi.
  2. Vstupy do programov sú vytvárané ľuďmi.
  3. Každý vstup do programu vytvára jeden výstup.
  4. Vzhľadom na rovnaký vstup, program vždy produkuje rovnaký výstup.
  5. Program je vytvorený na spracovanie určitej sady vstupov a produkciu určitej množiny výstupov. Skutočný súbor vstupov do programu a výstupov vytvorených programom môže byť väčší. To znamená, že očakávaný vstup / výstup je podmnožinou skutočného I / O.
  6. Keď človek vytvorí vstup do programu, má buď vľúdne alebo zlé úmysly.
  7. Niektoré výstupy spôsobujú škody.
  8. Vstupy, ktoré program vytvára na spracovanie, sú neškodné. Výstupy, ktoré program vytvára na produkciu, nespôsobujú škody.
  9. Ak sú vyššie uvedené tvrdenia splnené, nasledujúce závery logicky nasledujú:
    • Vstupy, ktoré bol program vytvorený na spracovanie, nie sú malware; iba vstupy, ktoré nebol program vytvorený na spracovanie, môžu byť škodlivé.
    • Softvér napísaný s benígnym zámerom môže byť škodlivý softvér. Môžu existovať benígne vstupy, ktoré pri spustení programom spôsobia poškodenie.

——————————

Modelovanie zahŕňa odstraňovanie irelevantných aspektov a zjednodušenie niektorých relevantných aspektov. Ukázal som vyššie uvedené vyhlásenia priateľovi a on identifikoval veci, ktoré môj model vynechal a zjednodušil. Nižšie sú komentáre mojich priateľov v červenej farbe .

  1. Programy sú vytvárané ľuďmi.

    Niektoré programy sú vytvorené inými programami. Napríklad Lex dostane gramatiku ako vstup a vydá syntaktický analyzátor (čo je program). Takže program vytvoril program.

  2. Vstupy do programov sú vytvárané ľuďmi.

    Väčšina dnešného softvéru je zabudovaný softvér. Tieto programy získavajú vstupy zo snímačov a akčných členov. Väčšina vstupov je teda od ľudí.

  3. Každý vstup do programu vytvára jeden výstup.

    Ak program zlyhá, nemusí produkovať žiadny výstup, alebo môže produkovať nesprávny výstup, alebo môže produkovať správny výstup v nesprávnom čase (čo je v podstate to isté ako nesprávny výstup).

  4. Vzhľadom na rovnaký vstup, program vždy produkuje rovnaký výstup.

    To je takmer nikdy pravda, v vložených real-time programy. Vstupom programu je napríklad ventil kávovaru, ktorý reguluje prietok vody do kávovaru a výstupom je hladina vody. Dajte programu rovnaký vstup (ventil) a takmer vždy bude výstup (hladina vody) iný.

  5. Program je vytvorený na spracovanie určitej sady vstupov a produkciu určitej množiny výstupov. Skutočný súbor vstupov do programu a výstupov vytvorených programom môže byť väčší. To znamená, že očakávaný vstup / výstup je podmnožinou skutočného I / O.

    Program by mal vždy skontrolovať vstupy pred ich spracovaním. Takže súbor vstupov, ktoré sú spracované, by sa mal rovnať množine vstupov, ktoré program vytvoril na spracovanie.

  6. Keď človek vytvorí vstup do programu, má buď vľúdne alebo zlé úmysly.

    Ako už bolo uvedené, ľudia nie sú jedinými subjektmi, ktoré vytvárajú vstupy. Majú senzory a akčné členy zámery?

  7. Niektoré výstupy spôsobujú škody.

    Poriadku.

  8. Vstupy, ktoré program vytvára na spracovanie, sú neškodné. Výstupy, ktoré program vytvára na produkciu, nespôsobujú škody.

    Zvážte program, ktorý ovláda krídlo. Vstup je z Pitotovej trubice. Predpokladajme, že na trubici pitot je ľad, čo má za následok vstup do programu, ktorý produkuje výstup (konfiguráciu krídla), ktorá spôsobuje zastavenie lietadla. Vstup je v rozsahu očakávanom programom a má benígne úmysly (za predpokladu, že Pitotova trubica má zámery), ale výstup produkuje poškodenie.

  9. Ak sú vyššie uvedené tvrdenia splnené, nasledujúce závery logicky nasledujú:
    • Vstupy, ktoré bol program vytvorený na spracovanie, nie sú malware; iba vstupy, ktoré nebol program vytvorený na spracovanie, môžu byť škodlivé.

      Upravene.

    • Softvér napísaný s benígnym zámerom môže byť škodlivý softvér. Môžu existovať benígne vstupy, ktoré pri spustení programom spôsobia poškodenie.

      Áno, existujú niektoré vstupy, ktoré sú neškodné a napriek tomu vedú k poškodeniu. Nikto nemal v úmysle, aby radiačný systém spôsobil škodu, ale kvôli chybám v systéme bol niekto zabitý.

——————————

Pripomeňme si, že som prijal definíciu, že malware je softvér vytvorený so zlým úmyslom a keď je popravený spôsobuje škody. To, čo o tom povedal môj priateľ:

Predpokladajme, že existuje chyba v dizajne programu, ktorá vystavuje zraniteľnosť, ktorú niekto využíva; je tento program malware? Je buggy implementácia malware len preto, že môže byť zneužitá? Myslím, že to bol SSH, ktorý mal chybu v tom niečo ako 10 rokov, kým niekto využil chybu. Bol programový softvér SSH 10 rokov, že chyba nebola zistená? Čo keď je chyba v dizajne programu, ktorý má potenciál spôsobiť škodu, napr. Chybu v softvéri lietadla, ktorá môže spôsobiť jeho pád. Je to malware?

Posledná aktualizácia: 4. januára 2019. Autor: Roger Costello