Förstå skadlig kod

Källa: http://xfront.com/malware/index.html

Författare: Roger Costello

Nyligen började jag lära mig om skadlig kod. För att organisera mina tankar skapade jag en modell av relevanta begrepp. Malware innebär program, så jag behövde modellera program – deras ingångar och utgångar. Jag lärde mig att malware innebär en avsikt att orsaka skada, så jag behövde modellera människor som skapar program med avsikt (antingen skadlig eller godartad) och modellerar begreppet skada. Jag lärde mig att det inte finns en allmänt accepterad definition av skadlig kod. Vissa människor definierar skadlig kod som programvara skapad med skadlig avsikt. andra definierar det som mjukvara som orsakar skada. Jag antog definitionen att skadlig kod är programvara skapad med skadlig avsikt och när den utförs, leder resultaten till skada.

Nedan finns uttalanden av de enheter och relationer jag uttryckte i min modell. Observera att jag använder ordprogrammet istället för programvara. Jag skiljer mellan program och ingångar till program. Ingångar kan vara programvara, kod, text eller binär. Programmen bearbetar (exekverar / tolkar) inmatningar. Målet är att bestämma vilka ingångar som är skadlig programvara.

  1. Program skapas av människor.
  2. Ingångar till program skapas av människor.
  3. Varje ingång till ett program producerar en utgång.
  4. Med samma ingång producerar ett program alltid samma utmatning.
  5. Ett program skapas för att bearbeta en viss uppsättning ingångar och producera en viss uppsättning utgångar. Den faktiska uppsättningen av inmatningar i ett program och utgångar som produceras av ett program kan vara större. Det vill säga den förväntade I / O är en delmängd av den faktiska I / O-enheten.
  6. När en person skapar en inmatning till ett program, har han antingen godartade eller onda intentioner.
  7. Vissa utgångar orsakar skada.
  8. Ingångarna som ett program skapas för att bearbeta är godartade. Utgångarna som ett program skapas för att producera orsakar inte skada.
  9. Om ovanstående uttalanden är uppfyllda följer följande slutsatser logiskt:
        –  Inmatningar som ett program skapades för att bearbeta är inte skadlig kod bara inmatningar som ett program inte skapades för att bearbeta kan vara skadlig programvara.
         –  Programvara skrivet med godartad avsikt kan vara skadlig kod. Det kan finnas godartade ingångar som, när de exekveras av ett program, resulterar i utgångar som orsakar skada.

Modellering innebär att man eliminerar irrelevanta aspekter och förenklar vissa relevanta aspekter. Jag visade ovanstående uttalanden till en vän och identifierade saker som min modell hade utelämnat och förenklat. Nedan följer mina vänner kommentarer, i rött.

  1. Program skapas av människor.

Vissa program skapas av andra program. Till exempel ges Lex en grammatik som inmatning och matar ut en parser (vilket är ett program). Så ett program skapade ett program.

2. Inmatningar till program skapas av människor.

    Det mesta av dagens programvara är inbyggd programvara. Dessa program får sina ingångar från sensorer och manöverdon. Så, mest inmatning är från icke-människa.

   3. Varje ingång till ett program producerar en utgång.

    Om ett program misslyckas kan det inte producera någon utdata, eller det kan ge fel output, eller det kan ge rätt utgång vid fel tidpunkt (vilket i huvudsak är samma sak som felutmatning).

   4. Med samma ingång, producerar ett program alltid samma utmatning.

    Det är nästan aldrig sant i inbyggda realtidsprogram. Programmets ingång är till exempel en kaffebryggare som styr vattenflödet i kaffemaskinen och utgången är vattennivån. Ge programmet samma ingång (ventil) och nästan alltid utmatningen (vattennivån) kommer att vara annorlunda.

   5. Ett program skapas för att bearbeta en viss uppsättning ingångar och producera en viss uppsättning utgångar. Den faktiska uppsättningen av inmatningar i ett program och utgångar som produceras av ett program kan vara större. Det vill säga den förväntade I / O är en delmängd av den faktiska I / O-enheten.

    Ett program ska alltid kontrollera ingångar innan de behandlas. Så bör uppsättningen ingångar som bearbetas motsvara den uppsättning ingångar som programmet skapades för att bearbeta.

  6. När en person skapar en inmatning till ett program, har han antingen godartade eller onda intentioner.

    Som tidigare sagt är människor inte de enda enheter som skapar insatser. Har sensorer och manöverdon intentioner?

   7. Vissa utgångar orsakar skada.

    Okej.

   8. Ingångarna som ett program skapas för att bearbeta är godartade. Utgångarna som ett program skapas för att producera orsakar inte skada.

    Tänk på ett program som styr en vinge. Ingången är från ett pitotrör. Antag att det finns is på pitotröret, vilket resulterar i inmatning till programmet som producerar en utgång (vinge-konfiguration) som gör att planen stannar. Ingången ligger inom det område som förväntas av programmet och har godartade intentioner (förutsatt att ett pitotrör har avsikter) men utsignalen ger skada.

  9. Om ovanstående uttalanden är uppfyllda följer följande slutsatser logiskt:

  • Inmatningar som ett program skapades för att bearbeta är inte skadlig kod bara inmatningar som ett program inte skapades för att bearbeta kan vara skadlig programvara.

        Propert.

  •       Programvara skrivet med godartad avsikt kan vara skadlig kod. Det kan finnas godartade ingångar som, när de exekveras av ett program, resulterar i utgångar som orsakar skada.

        Ja, det finns några ingångar som är godartade och ändå resulterar i skada. Ingen tänkte att strålningssystemet skulle orsaka skada, men på grund av fel i systemet dödades någon.


Minns att jag antog definitionen att skadlig kod är programvara skapad med skadlig avsikt och när den körs orsakar skada. Här är vad min vän hade att säga om det:

Antag att det finns ett fel i ett programs design, vilket utsätter en sårbarhet som någon utnyttjar. är det programmet malware? Är en buggy-implementering skadlig programvara bara för att den kan utnyttjas? Jag tycker att det var SSH som hade en bugg i det för ungefär 10 år tills någon utnyttjade buggen. Var SSH-programets skadliga programvara under de tio åren som felet inte upptäcktes? Vad händer om det finns ett fel i ett programs design som har potential att orsaka skada, till exempel en fel i flygplanets programvara som kan få den att krascha. Är den skadliga programvaran?

Leave a Reply

Your email address will not be published. Required fields are marked *

*