Proces
Også kendt som: kørende program
Et program, mens det kører, med sin egen plads i hukommelsen og de rettigheder, som kontoen, der startede det, har.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En kørende forekomst af et program, som styresystemet giver sin egen private hukommelse, en andel af maskinens tid samt identitet og rettigheder fra den konto, det kører som.
Forklaret enkelt
En opskrift er programmet; selve madlavningen i et køkken med egne gryder og ingredienser er processen. To kokke kan følge den samme opskrift på samme tid.
I praksis
En IT-supporter på en skole åbner Jobliste på en lærers langsomme computer og finder en ukendt proces, der kører under lærerens konto og bruger det meste af maskinen; hun stopper den og får computeren undersøgt for malware.
Hvorfor det betyder noget
Skadelig software kører også som en proces og arver rettighederne fra den, der startede den - derfor begrænser man skaden fra et angreb ved at begrænse, hvad en konto må.
Teknisk uddybning
Kernen repræsenterer hver proces med en kontrolblok (task_struct i Linux, EPROCESS i Windows), der indeholder id, tilstand, scheduling-data, en henvisning til sidetabellerne, tabellen over åbne fildeskriptorer eller handles, signal- eller undtagelseshåndtering, ressourcegrænser og sikkerhedskonteksten: reel og effektiv UID/GID plus capabilities på Linux eller et access token med bruger- og gruppe-SID'er, privilegier og et integritetsniveau på Windows. Adresserummet er typisk opdelt i programkode, data og BSS, heap, hukommelsesafbildede biblioteker og en stak pr. tråd, randomiseret af ASLR. Tråde deler adresserum og handles med deres proces, men har egne registre og egen stak, og derfor er det processen og ikke tråden, der er enheden for isolation.
Unix opretter processer i to trin: fork() kopierer kalderen, billigt takket være copy-on-write-sider, og execve() udskifter programbilledet med et nyt program, men beholder åbne deskriptorer, der ikke er markeret close-on-exec, en almindelig årsag til, at filhandles lækker til børneprocesser. Windows samler begge trin i CreateProcess, og forælderen kan vælge at give et andet token med, hvilket er sådan tjenester starter arbejde som en anden bruger. Alle processer undtagen den første har en forælder (PID 1 på Linux er init, i dag som regel systemd). Et afsluttet barn, hvis exitstatus ikke er hentet med wait(), bliver hængende som zombie; forældreløse processer adopteres af init eller en udpeget subreaper. Scheduleren flytter processer mellem tilstandene kørende, klar og blokeret og udfører kontekstskift, hvor registertilstanden gemmes og genskabes og, ved skift af adresserum, sidetabellens basisadresse udskiftes.
Sikkerheden følger af nedarvningen: et barn arver normalt forælderens legitimationsoplysninger, så alt, hvad en bruger kan, kan ethvert program, brugeren starter, også. Kontrollerne virker på den kæde. Rettighedseskalering betyder at få en proces med et stærkere token (setuid-programmer, sudo, UAC-elevering, tyveri af tokens). Sandkasser indsnævrer, hvad en proces kan nå, med seccomp-filtre, AppArmor- eller SELinux-domæner, Windows AppContainers eller Job-objekter. Linux namespaces og cgroups giver et procestræ sit eget syn på PID'er, mounts, netværk og brugere samt ressourcegrænser, og det er alt, hvad en container er.
Detektion bygger i høj grad på procestelemetri. Windows event 4688 og Sysmon event 1 registrerer procesoprettelse med kommandolinje og forælder; EDR-produkter holder øje med mistænkelige forælder-barn-par som winword.exe, der starter powershell.exe. Angribere svarer med teknikker katalogiseret i MITRE ATT&CK T1055 (Process Injection), bl.a. process hollowing (T1055.012), hvor en legitim proces startes i pausetilstand og dens hukommelse udskiftes, og med living off the land-programmer, der får ondsindet aktivitet til at ligne almindelige systemprocesser. En proces adskiller sig fra et program (filen på disken), fra en tråd (en udførelsesenhed inde i den) og fra en tjeneste, som er en proces styret af tjenestestyringen i stedet for at være startet interaktivt.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Styresystem
- →Proces
Relationer
- Typer
- Tjeneste (service)
- Forudsætter
- Styresystem
- Åbner for
- Container
- Bruges sammen med
- BrugerkontoKerne (kernel)Rettighed
Kilder og videre læsning
Lærebøger
- Operating Systems: Three Easy Pieces · Arpaci-Dusseau
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…