Bescherming, isolatie en virtuele machines

Leer hoe een besturingssysteem zichzelf en zijn gebruikers beschermt. Volg hoe de privilegeniveaus van de processor, systeemaanroepen en toegangsrechten in paginatabellen programma's van elkaar scheiden; hoe het systeem controleert wie je bent en wachtwoorden veilig opslaat; en hoe toegangscontrolelijsten, bevoegdheidstokens, Unix- en Windows-rechten en verplichte beleidsregels bepalen wie wat mag gebruiken. Bekijk vervolgens hoe hypervisors volledige besturingssystemen naast elkaar uitvoeren in virtuele machines en hoe containers toepassingen isoleren met naamruimten, controlegroepen en beperkingen van privileges, zodat je de juiste grens voor een werklast kunt kiezen.

GemiddeldLes 9 van 9 in Cursus Besturingssystemen: processen, geheugen, threads en bestandssystemen

Wat je leert

  1. Beschrijf de processormodi, gecontroleerde toegangspunten en geheugenbescherming die voorkomen dat programma's elkaar of de kernel beschadigen, en de mechanismen die aanvallen daarop bemoeilijken.
    • Scheid gebruikersmodus en kernelmodus
      Leg privilegeniveaus en geprivilegieerde instructies uit en beschrijf wat er gebeurt als een programma iets probeert te doen wat alleen de kernel mag.
    • Ga veilig naar de kernel via systeemaanroepen
      Volg een systeemaanroep van de trap tot de toegangscontrole en leg uit waarom de kernel elk ontvangen argument moet wantrouwen.
    • Bescherm geheugen en apparaten
      Gebruik toegangsrechten in paginatabellen, geheugenkoppelingen uitsluitend voor kerneltoegang en de IOMMU om uit te leggen hoe de kernel elk proces binnen zijn eigen geheugen houdt.
    • Bemoeilijk aanvallen op programma's en de kernel
      Leg uit hoe niet-uitvoerbaar geheugen, willekeurige adresindeling, systeemaanroepfilters, beveiligd opstarten en auditlogboeken exploits kostbaarder maken en vastleggen wat er is gebeurd.
  2. Leg uit hoe een besturingssysteem controleert wie een gebruiker is, wachtwoorden veilig opslaat, andere authenticatiefactoren gebruikt en de resulterende identiteit aan elk proces meegeeft.
    • Koppel identiteiten aan processen
      Volg een aanmelding van de wachtwoordvraag tot een draaiende shell en leg gebruikers-ID's, groepen, overerving en programma's die privileges wijzigen, zoals setuid-programma's en sudo, uit.
    • Sla wachtwoorden veilig op en controleer ze veilig
      Leg hashing, het gebruik van salts en trage wachtwoordhashfuncties uit en bereken hoe ze de kosten van gokaanvallen veranderen.
    • Authenticeer met wat je hebt en wat je bent
      Vergelijk wachtwoorden, tokens en biometrie, combineer ze in multifactorauthenticatie en authenticeer services en machines zonder persoon achter het toetsenbord.
  3. Geef rechten weer als een toegangsmatrix, implementeer ze met toegangscontrolelijsten of bevoegdheidstokens, lees en stel Unix- en Windows-rechten in en vergelijk discretionaire, verplichte en rolgebaseerde modellen.
    • Vergelijk toegangscontrolelijsten en bevoegdheidstokens
      Sla dezelfde rechten per object of per subject op en weeg de twee benaderingen af voor het controleren, beoordelen, delegeren en intrekken van toegang.
    • Lees en stel toegangsrechten in voor Unix en Windows
      Interpreteer toegangsrechtenbits en octale rechtennotaties, pas de Unix-controleregels toe op bestanden en directory's en lees POSIX-ACL's en Windows-toegangscontrolevermeldingen.
    • Vergelijk discretionaire, verplichte en rolgebaseerde toegangscontrole
      Onderscheid modellen waarin eigenaren beslissen van modellen waarin een systeembreed beleid beslist, en gebruik rollen om de rechten van veel gebruikers te beheren.
  4. Leg uit hoe een hypervisor de processor, het geheugen en de apparaten van één computer over meerdere volledige besturingssystemen verdeelt en die tegelijk van elkaar isoleert.
    • Beschrijf virtuele machines en hypervisors
      Definieer virtuele machines en hypervisors, onderscheid ontwerpen van type 1 en type 2 en leg uit waarvoor virtualisatie wordt gebruikt en waar de isolatie ophoudt.
    • Virtualiseer de processor
      Leg onderscheppen en emuleren uit, waarom klassiek x86 dat niet rechtstreeks kon gebruiken en hoe binaire vertaling, paravirtualisatie en hardwareondersteuning het probleem oplosten.
    • Virtualiseer geheugen
      Vertaal een virtueel adres van een gastbesturingssysteem naar een echt machineadres en vergelijk schaduwpaginatabellen met geneste paginering door hardware.
    • Virtualiseer apparaten en isoleer virtuele machines van elkaar
      Vergelijk geëmuleerde, paravirtuele en rechtstreeks toegewezen apparaten en leg de sterke punten en grenzen van isolatie tussen virtuele machines uit.
  5. Bouw een container met kernelfuncties (naamruimten voor wat een proces kan zien, controlegroepen voor wat het kan gebruiken en privilegebeperkingen voor wat het kan doen) en bepaal wanneer je een container of een virtuele machine gebruikt.
    • Beperk met naamruimten wat een proces kan zien
      Leg de typen Linux-naamruimten uit, maak naamruimten aan en sluit je erbij aan, en interpreteer PID-, koppel-, netwerk- en gebruikersnaamruimten.
    • Beperk met controlegroepen hoeveel bronnen een proces kan gebruiken
      Orden processen in controlegroepen en stel grenzen in voor CPU, geheugen, het aantal processen en I/O, en interpreteer de grenswaarden.
    • Beperk de bevoegdheden van containers en kies tussen containers en virtuele machines
      Verminder wat een proces in een container mag doen, leg het risico van een gedeelde kernel uit en kies voor een bepaalde werklast containers, virtuele machines of beide.

Bescherming, isolatie en virtuele machines: uitleg

5 hoofdstukken

1

Leg uit hoe hardware en de kernel het systeem beschermen

Programma's draaien snel omdat gewone instructies rechtstreeks op de processor worden uitgevoerd. Hardwarerechten en gecontroleerde toegangspunten tot de kernel maken die vrijheid veilig genoeg om een machine te delen. Volg de grens van CPU-privileges via controles bij systeemaanroepen tot toegang tot geheugen en apparaten, en bekijk daarna hoe uitvoeringsbeperkingen, willekeurige indeling, opstartverificatie en logboeken aanvallen op programma's en de kernel beperken.

1.1 Scheid gebruikersmodus en kernelmodus

Een programma heeft genoeg vrijheid nodig om snel te rekenen zonder de controle over de hele computer te krijgen. In gebruikersmodus kan het gewone instructies rechtstreeks uitvoeren. Kernelmodus, ook supervisormodus genoemd, geeft het besturingssysteem toegang tot de instructies die de machine besturen.

Laat de hardware privileges afdwingen

De CPU heeft een actueel privilegeniveau. Optellen, laden, opslaan en springen worden normaal op volle snelheid uitgevoerd, binnen de geldende geheugentoegangsrechten. De kernel controleert niet elke instructie met software. Dit is beperkte directe uitvoering: rechtstreeks uitvoeren totdat een beschermde bewerking of een interrupt de kernel nodig maakt.

Een geprivilegieerde instructie veroorzaakt een trap als gebruikerscode die probeert uit te voeren. Op x86-64 zijn kernelprivileges nodig voor HLT, het beschrijven van het paginatabelbasisregister CR3 en het installeren van een interrupttabel met LIDT. Anders zou een toepassing de CPU kunnen stoppen, haar eigen geheugengrenzen kunnen vervangen of de interruptafhandeling kunnen omleiden.

Stel dat een toepassing HLT uitvoert. De CPU veroorzaakt een algemene beschermingsfout in plaats van te stoppen. Hij gaat naar de door de kernel geregistreerde afhandelaar. Linux stuurt het proces normaal SIGSEGV, waardoor dat proces eindigt terwijl andere programma's doorgaan. De toepassing kan niet zomaar een gunstig adres binnen de kernel kiezen en daar beginnen met uitvoeren.

Passeer de grens via een gecontroleerd toegangspunt

Traps, excepties en interrupts komen binnen via adressen die door de kernel zijn geregistreerd. Hardware verandert het privilegeniveau en draagt de besturing over aan de afhandelaar; de kerneltoegangscode bewaart de toestand die nodig is om terug te keren. Een speciale retourinstructie herstelt de uitvoering in gebruikersmodus op de opgeslagen programmateller. Op x86-64 kan de terugkeer SYSRET of IRETQ gebruiken.

De timer maakt deze besturing ook nuttig wanneer een programma nooit om een dienst vraagt. Voordat de kernel het programma uitvoert, programmeert hij een timer. Wanneer de interrupt arriveert, kan de scheduler een ander proces kiezen. Gebruikerscode kan interrupts niet uitschakelen of die timer opnieuw programmeren, zodat een oneindige lus een processorkern niet voor altijd kan bezetten.

Lees privilegendiagrammen correct
ArchitectuurToepassingKernelAndere niveaus
x86Ring 3Ring 0Ring 1 en 2 bestaan, maar gewone Linux- en Windows-kernels laten ze ongebruikt
ARMv8-AEL0EL1EL2 ondersteunt een hypervisor; EL3 ondersteunt de beveiligde firmwaremonitor
RISC-VU-modusS-modusM-modus heeft machineprivileges

De nummeringsconventies verschillen: een lager x86-ringnummer betekent meer privileges, terwijl een hoger ARM-exceptieniveau meer privileges betekent. Intel-virtualisatie voegt ook VMX-root- en niet-rootuitvoering toe; die staan los van het ringnummer.

Houd identiteit en CPU-modus gescheiden

Root is een gebruikersidentiteit, UID 0, die kernelsoftware herkent. De gewone code van een roottoepassing draait nog steeds in gebruikersmodus en gaat via systeemaanroepen naar de kernel. Een apparaatstuurprogramma dat in kernelmodus draait, heeft veel meer directe macht: een geheugenfout daarin kan de kerneltoestand beschadigen zonder een controle van bestandsrechten te passeren.

De laag die een grens afdwingt, moet de laag daarbinnen beheersen. De kernel dwingt procesgrenzen af met CPU-modi en geheugentabellen. Een hypervisor beheerst op vergelijkbare wijze gastbesturingssystemen met hardwareondersteuning voor virtualisatie.

Belangrijkste punten

  • Gebruikersinstructies worden rechtstreeks uitgevoerd totdat de hardware toegang tot de kernel vereist.
  • Geprivilegieerde bewerkingen beschermen paginatabellen, interrupts, timers en apparaatbesturing.
  • Dankzij de timer kan de scheduler een processorkern terugnemen van een oneindige lus.
  • Een rootidentiteit plaatst een toepassing niet in kernelmodus.
  • De nummering van privileges hangt af van de architectuur.

1.2 Ga veilig naar de kernel via systeemaanroepen

Een systeemaanroep is een gecontroleerd verzoek om een dienst van de kernel. Bestanden openen, processen aanmaken en netwerkgegevens verzenden vereisen allemaal beslissingen die een toepassing niet veilig zelf kan nemen. Toegang tot de kernel geeft de afhandelaar bevoegdheden; het geeft de aanroeper geen toestemming om alles te doen wat die heeft gevraagd.

Volg het verzoek

Een wrapperfunctie in de C-bibliotheek zoals open() plaatst het aanroepnummer en de argumenten in registers. Die gebruikt SYSCALL op x86-64, SVC op ARM64 of ECALL op RISC-V. De kernel doet vervolgens het volgende:

  1. Hij komt binnen via zijn geregistreerde toegangspunt en slaat de gebruikersregisters op.
  2. Hij kiest de afhandelaar uit de systeemaanroeptabel en wijst een onbekend nummer af.
  3. Hij leest de identiteit en identificatiegegevens van de aanroeper uit het huidige proces.
  4. Hij controleert argumenten, toegangsrechten en de betrokken objecten.
  5. Hij voert de bewerking uit of retourneert een fout.
  6. Hij herstelt de opgeslagen toestand en keert terug naar gebruikersmodus.

De identiteit komt uit de identificatiegegevens van het proces, niet uit een door de gebruiker opgegeven naam. Een aanroeper kan geen rechten van een andere gebruiker krijgen door diens naam aan een verzoek toe te voegen.

Behandel argumenten als niet-vertrouwd

Een pointer is slechts een getal dat de aanroeper opgeeft. De kernel moet het volledige aangevraagde bereik in gebruikersgeheugen controleren, inclusief de lengte en de toegangsrichting. Linux gebruikt gecontroleerde routines zoals copy_from_user en copy_to_user om de grens veilig over te steken.

Bij read(fd, buf, 4096) mag een buf die naar kernelgeheugen wijst geen bestemming voor bestandsgegevens worden. Linux meldt EFAULT voor die ongeldige gebruikersbuffer. Een andere fout heeft een andere oorzaak: write() via een descriptor die met O_RDONLY is geopend, mislukt met EBADF, omdat aan de descriptor nooit schrijftoegang is verleend. Een gewoon geweigerd verzoek retourneert een fout; het beëindigt het proces niet automatisch. In C retourneert de wrapperfunctie meestal −1 en stelt die errno in.

Controleer het object dat daadwerkelijk wordt gebruikt

Een TOCTTOU-raceconditie scheidt een beslissing van het object dat die moest beschermen. Een geprivilegieerd hulpprogramma controleert access("/tmp/report", W_OK) en opent daarna het pad. Een aanvaller vervangt het pad tussen die bewerkingen door een symbolische koppeling naar /etc/passwd. De naam is ongewijzigd, maar het geopende object is anders.

De oplossing is om de toegang met de bedoelde identificatiegegevens uit te voeren op het daadwerkelijk geopende object. Doe afstand van privileges vóór het openen en gebruik vlaggen zoals O_NOFOLLOW wanneer symbolische koppelingen ongewenst zijn. Argumenten één keer naar kernelgeheugen kopiëren voorkomt ook dat veranderlijke gebruikersgegevens steeds opnieuw worden vertrouwd; de gekopieerde structuur moet nog steeds worden gecontroleerd.

Bepaal wat je moet vertrouwen

Een referentiemonitor regelt de toegang. Die moet worden aangeroepen telkens wanneer toegang wordt verkregen, tegen wijzigingen zijn beschermd en klein genoeg zijn om zorgvuldig te onderzoeken. Nadat de kernel een geheugenkoppeling heeft verleend, verlopen afzonderlijke laad- en opslagbewerkingen via de toegangscontroles van de MMU; ze doen niet elk een systeemaanroep.

De vertrouwde computerbasis (TCB) bestaat uit de hardware, firmware en geprivilegieerde software waarvan de bescherming afhankelijk is voor een correcte werking. Daartoe behoren de CPU, de opstartketen, de kernel en vertrouwde aanmeldcomponenten. Door stuurprogramma's of bestandssystemen naar servers in gebruikersmodus te verplaatsen, kan het kernelgedeelte van deze basis kleiner worden, zoals bij microkernelontwerpen. Een gecompromitteerde gewone toepassing misbruikt de rechten die eraan zijn verleend; een gecompromitteerde vertrouwde component kan de controles zelf ondermijnen.

Belangrijkste punten

  • Toegang tot de kernel en toestemming om een bewerking uit te voeren zijn afzonderlijke zaken.
  • Controleer pointerbereiken en toegangsrechten voordat je gebruikersargumenten gebruikt.
  • Door een TOCTTOU-raceconditie kan een gecontroleerde naam naar een ander object verwijzen.
  • Een referentiemonitor moet bestand zijn tegen omzeiling en wijzigingen.
  • De TCB omvat meer dan de kernel.
  • Een geweigerde systeemaanroep retourneert meestal een fout die het programma kan afhandelen.

1.3 Bescherm geheugen en apparaten

Virtueel geheugen vertaalt adressen en beschermt ook programma's. Een proces kan de fysieke paginaframes bereiken die in zijn actieve paginatabel staan, met de rechten die de kernel heeft ingesteld. De privéframes van een ander proces ontbreken; bewust gemaakte koppelingen voor gedeeld geheugen zijn een expliciete uitzondering.

Controleer elke geheugentoegang

De geheugenbeheereenheid (MMU) controleert paginatabelvermeldingen bij toegang. Belangrijke rechten en kenmerken zijn aanwezig of geldig, beschrijfbaar, toegankelijk voor gebruikers en uitvoerbaar. Op x86 onderscheidt U/S voor gebruikers toegankelijke pagina's van pagina's die alleen voor de supervisor toegankelijk zijn; NX of XD schakelt uitvoering uit. ARM noemt zijn uitvoeringsbeperking XN.

Een schending veroorzaakt een paginafout. De fout meldt een mislukte hardwarecontrole; de kernel bepaalt of die mislukking verwacht en herstelbaar is. Bekijk twee opslagbewerkingen naar alleen-lezenpagina's:

  • Een proces overschrijft een codepagina die niet bij schrijven wordt gekopieerd. De kernel behandelt dit als een ongeldige schrijfbewerking en stuurt normaal SIGSEGV.
  • Na fork() schrijft een proces naar gedeelde gegevens die zijn gemarkeerd om bij schrijven te worden gekopieerd. De kernel wijst een privékopie toe, maakt de koppeling beschrijfbaar en probeert de instructie opnieuw.

Beide fouten beginnen bij een beschermingsbit. De administratie van de kernel verklaart waarom de koppelingen alleen-lezen waren en bepaalt de reactie. Een paginafout is dus niet automatisch een crash of een verzoek om gegevens van schijf op te halen.

Bescherm kernelkoppelingen in beide richtingen

Traditionele indelingen koppelen kernelgeheugen aan procesadresruimten als alleen toegankelijk voor de supervisor. Dat maakt toegang tot de kernel eenvoudig en blokkeert tegelijk lezen en schrijven vanuit gebruikersmodus. De Meltdown-aanval uit 2018 liet zien dat sommige processors zulke gegevens via speculatieve uitvoering konden lekken. Isolatie van kernelpaginatabellen (KPTI) verwijdert de meeste kernelkoppelingen terwijl gebruikerscode op getroffen systemen draait.

Kernelcode moet ook worden beschermd tegen omleiding naar geheugen dat door de gebruiker wordt beheerd. x86-SMEP voorkomt uitvoering in kernelmodus vanaf gebruikerspagina's. SMAP blokkeert gegevenstoegang vanuit kernelmodus tot gebruikerspagina's, behalve tijdens bewust toegestane kopieerbewerkingen. ARM biedt verwante bescherming via PXN en PAN. Deze controles beperken de mogelijkheden voor een aanvaller om een kernelfout te gebruiken om code uit te voeren of vervalste kernelgegevens aan te bieden.

Alleen-lezentoegang beschermt de integriteit, niet de geheimhouding. Als een proces een gekoppelde pagina kan lezen, kan het de inhoud ervan te weten komen, ook wanneer schrijfbewerkingen mislukken. Vertrouwelijke gegevens moeten ontoegankelijk zijn voor dat proces: laat ze niet gekoppeld of dwing een passende grens af waarbij ze alleen voor de supervisor toegankelijk zijn.

Geef apparaten een eigen grens

Toepassingen vragen werk van een apparaat meestal aan via een stuurprogramma. Apparaatregisters zijn normaal alleen voor de kernel toegankelijk, al kan een bevoegd proces geselecteerde koppelingen krijgen, zoals bij grafische stuurprogramma's of Linux-I/O in gebruikersruimte.

Een apparaat dat directe geheugentoegang (DMA) uitvoert, leest of beschrijft RAM zonder die toegangen via de MMU van de CPU te laten verlopen. Paginarechten van de CPU alleen kunnen niet voorkomen dat een defect apparaat paginaframes van een ander proces overschrijft. Een IOMMU vertaalt en beperkt apparaatadressen met koppelingen per apparaat. Intel VT-d en AMD-Vi bieden dit mechanisme.

Voor een apparaat dat aan een VM is toegewezen, beperkt de IOMMU DMA tot het aan die VM toegewezen geheugen. Aan de CPU-kant is een vergelijkbare grens nodig: een tweede fase van paginavertaling koppelt fysieke gastadressen alleen aan paginaframes die de hypervisor toestaat. Om een werklast te beschermen moet je zowel CPU-toegang als apparaattoegang afdekken.

Belangrijkste punten

  • De MMU dwingt de koppelingen en toegangsrechtenbits af die de kernel instelt.
  • Een paginafout kan herstel, kopiëren bij schrijven of een fataal signaal veroorzaken.
  • Alleen-lezentoegang maakt gegevens niet vertrouwelijk.
  • KPTI verwijdert de meeste kernelkoppelingen tijdens de uitvoering van gebruikerscode.
  • SMEP en SMAP beperken het gebruik van gebruikerspagina's door de kernel.
  • De IOMMU begrenst DMA die de CPU-MMU omzeilt.

1.4 Bemoeilijk aanvallen op programma's en de kernel

Een fout in de geheugenveiligheid kan een aanval mogelijk maken wanneer beschadigde gegevens de besturingsstroom van het programma veranderen. Een bufferoverloop op de stack kan bijvoorbeeld een opgeslagen retouradres overschrijven. Verdedigingsmechanismen van het besturingssysteem beperken wat een aanvaller met die fout kan doen; ze herstellen de foutieve schrijfbewerking niet.

Scheid gegevens van uitvoerbare code

De NX-bit markeert gegevenspagina's als niet-uitvoerbaar. Windows noemt dit Data Execution Prevention (DEP). Instructies in een stackbuffer injecteren is minder nuttig als ernaartoe springen een fout veroorzaakt.

W^X, schrijven xor uitvoeren, is strenger: geen enkele pagina is tegelijk beschrijfbaar en uitvoerbaar. DEP alleen verbiedt een programma niet om expliciet zo'n koppeling aan te vragen. Onder W^X schrijft een just-in-timecompiler gegenereerde code naar beschrijfbaar geheugen en wijzigt daarna de rechten voordat hij de code uitvoert.

Een aanvaller kan in plaats daarvan bestaande uitvoerbare instructies hergebruiken. Retourgeoriënteerd programmeren (ROP) rijgt korte instructiereeksen, gadgets genoemd, aaneen. Willekeurige indeling van de adresruimte (ASLR) verandert de locaties van stacks, heaps, bibliotheken en positieonafhankelijke programma's, waardoor adressen van gadgets moeilijk te voorspellen zijn.

Als de basis van een bibliotheek met gelijke kans uit 228 posities wordt gekozen, slaagt één blinde gok met een kans van 1 op 268.435.456. Met slechts 28=256 posities en een indeling die na crashes van werkprocessen behouden blijft, zijn bij het proberen van verschillende posities maximaal 256 pogingen nodig en gemiddeld 128,5. Een uitgelekt adres binnen een bekende bibliotheek onthult de basis en de offsets van gadgets in die bibliotheek. Een afzonderlijk gerandomiseerde stack kan nog steeds onbekend blijven.

Beperk de diensten die een aanvaller kan aanvragen

seccomp-filters van Linux beperken de systeemaanroepen die een proces mag doen. Een proces dat voor een browser pagina's weergeeft, kan bijvoorbeeld aanroepen worden geweigerd om programma's te starten of rechtstreeks bestanden te openen. Filters worden door kindprocessen geërfd en kunnen niet worden verwijderd; latere filters kunnen beperkingen aanscherpen. Een overgenomen weergaveproces beschikt nog steeds over de toegestane bewerkingen, dus een filter vormt een grens rond diensten en is geen bewijs dat het programma foutvrij is. pledge van OpenBSD en de App Sandbox van macOS bieden verwante beperkingen.

Controleer het opstarten en bewaar bewijsmateriaal

Beveiligd opstarten controleert handtekeningen in de opstartketen. Firmware controleert een vertrouwde opstartlader; de lader controleert de kernel; de kernel kan ondertekende modules vereisen. Een gewijzigde component zonder vertrouwde handtekening wordt geweigerd. Dit helpt blijvende wijzigingen aan opstartsoftware tegen te houden, maar een geldige handtekening bewijst niet dat de software geen kwetsbaarheden heeft.

Opstarten met integriteitsmetingen legt hashes van geladen componenten vast, meestal met een Trusted Platform Module (TPM). Deze metingen ondersteunen attestatie: een andere partij kan wat is gestart vergelijken met een verwachte toestand. Meten en weigeren te starten zijn verschillende bewerkingen.

Registratie in een auditlogboek legt aanmeldingen, mislukte authenticatie, geweigerde toegangsverzoeken, accountwijzigingen en geprivilegieerde handelingen zoals sudo vast. Logboeken ondersteunen detectie en reconstructie. Een aanvaller die een host beheerst, kan lokale registraties wissen. Beschermde registratie of registratie op afstand bewaart daarom bewijsmateriaal buiten die host.

Aanvallers kunnen een adreslek, een geheugenbeschadigingsfout en een ontsnapping uit een sandbox combineren. Updates verwijderen de onderliggende kwetsbaarheden die deze verdedigingsmechanismen laten bestaan.

Belangrijkste punten

  • NX blokkeert uitvoering vanaf gemarkeerde gegevenspagina's; W^X verbiedt ook gelijktijdig schrijf- en uitvoerrecht.
  • ASLR maakt adressen voor codehergebruik moeilijker te voorspellen.
  • Een uitgelekt bibliotheekadres hoeft afzonderlijk gerandomiseerde gebieden niet te onthullen.
  • Systeemaanroepfilters beperken de diensten die voor een overgenomen proces beschikbaar zijn.
  • Beveiligd opstarten controleert het vertrouwen in opstartcomponenten; opstarten met integriteitsmetingen legt vast wat is geladen.
  • Auditlogboeken ondersteunen detectie en reconstructie, dus bescherm ze tegen verwijdering.
2

Authenticeer gebruikers en geef processen een identiteit

Een gebruikersnaam wordt pas bruikbaar voor de kernel wanneer die is gekoppeld aan betrouwbare identificatiegegevens van een proces. Volg een aanmelding tot een draaiende shell, inclusief de zorgvuldige omgang met hulpprogramma's met verhoogde privileges. Onderzoek daarna hoe wachtwoordhashes met salts gestolen verificatiegegevens moeilijker aan te vallen maken en hoe sleutels, tijdgebonden codes en biometrie het identiteitsbewijs veranderen voordat de normale toegangscontroles beginnen.

2.1 Koppel identiteiten aan processen

Een geslaagde aanmelding koppelt de identiteit van een persoon aan procesidentificatiegegevens die de kernel bewaart. Authenticatie controleert de opgegeven identiteit; autorisatie bepaalt wat die identiteit mag doen. Een beveiligingssubject kan een persoon of een serviceaccount zijn, en processen handelen namens dat subject.

Geef identiteit mee aan draaiende programma's

Unix-achtige systemen identificeren gebruikers met numerieke UID's en groepen met GID's. /etc/passwd koppelt namen aan UID's, persoonlijke directory's en shells. De kernel vergelijkt de nummers: twee accountnamen met één UID zijn voor toegangscontroles één identiteit. UID 0 is root en omzeilt de meeste gewone toegangscontroles.

Windows gebruikt beveiligingsidentificaties (SID's) voor gebruikers en groepen. Het toegangstoken van een proces legt de gebruikers-SID, groeps-SID's en privileges vast. Op beide platforms leveren de identificatiegegevens van het draaiende programma de identiteit voor latere beslissingen.

Een typische aanmelding met een wachtwoord onder Linux verloopt als volgt:

  1. Een geprivilegieerde aanmeldservice, zoals login, sshd of een grafische aanmeldbeheerder, ontvangt de identificatiegegevens.
  2. PAM, Pluggable Authentication Modules, controleert die via geconfigureerde authenticatiemodules.
  3. De service stelt de aanvullende groepen en GID van de gebruiker in en wijzigt daarna de UID om afstand te doen van rootrechten.
  4. De service start de shell. Kindprocessen erven deze identificatiegegevens via fork() en behouden ze normaal na execve().

De volgorde is van belang. Als het proces afstand doet van rootrechten voordat de groepen zijn ingesteld, kan het de geërfde lijst met geprivilegieerde groepen mogelijk niet meer vervangen. Ook worden bij het wijzigen van de groepslidmaatschappen van een account de identificatiegegevens van al draaiende processen niet herschreven; een nieuwe aanmeldsessie krijgt de nieuwe lijst.

Begrijp een gecontroleerde privilegewijziging

Een proces heeft een werkelijke UID, die normaal aangeeft wie het heeft gestart; een effectieve UID, die voor de meeste toegangscontroles wordt gebruikt; en een opgeslagen set-user-ID, die gecontroleerde terugkeer na een tijdelijke verlaging ondersteunt. Bij gewone programma's zijn alle drie gelijk.

Het aan root toebehorende /usr/bin/passwd illustreert setuid. De rechtennotatie 4755, weergegeven als -rwsr-xr-x, maakt de effectieve UID root wanneer een gewone gebruiker het uitvoert. Als alice UID 1000 heeft, blijft haar werkelijke UID 1000 terwijl de effectieve UID 0 wordt. Het programma kan /etc/shadow bijwerken en gebruikt de werkelijke identiteit van de aanroeper om te beperken van wie het wachtwoord mag worden gewijzigd. Een uitvoerbaar setgid-bestand verandert op vergelijkbare wijze de effectieve groep.

Dat kleine vertrouwde programma bezit gevaarlijke bevoegdheden. Een fout kan rootrechten blootstellen, dus beperken systemen het aantal setuid-programma's en doen ze vroeg afstand van privileges. Voor een service die alleen een poort met een laag nummer nodig heeft, verleent CAP_NET_BIND_SERVICE een beperkter Linux-privilege dan volledige rootrechten.

Beheer zonder één identiteit te delen

sudo authenticeert de aanroepende gebruiker, controleert welke commando's die gebruiker als welke doelidentiteit mag uitvoeren en legt het gebruik vast. Het beleid staat meestal in /etc/sudoers. Afzonderlijke identiteiten zorgen voor individuele verantwoording, die bij het delen van een rootwachtwoord verloren gaat. Onder Windows start UAC de programma's van een beheerder normaal met een gefilterd token en vraagt het om toestemming voor verhoging van privileges.

Dagelijkse toepassingen moeten met gewone rechten draaien en services moeten eigen accounts hebben zoals www-data. Een overgenomen documentviewer erft dan die beperkte identificatiegegevens in plaats van de volledige bevoegdheden van een beheerder.

Belangrijkste punten

  • Authenticatie stelt de identiteit vast; autorisatie controleert rechten.
  • Unix controleert numerieke UID's en GID's; Windows gebruikt SID's en tokens.
  • Stel groepen in voordat je definitief afstand doet van het privilege om ze te wijzigen.
  • De effectieve UID wordt gebruikt voor de meeste Unix-toegangscontroles.
  • Setuid-hulpprogramma's moeten zorgvuldig controleren omdat ze verhoogde bevoegdheden hebben.
  • Bestaande processen behouden hun oude groepslijst na een wijziging van het account.

2.2 Sla wachtwoorden veilig op en controleer ze veilig

Een wachtwoordverificatiesysteem moet een correct wachtwoord herkennen zonder een terug te halen kopie op te slaan. Het slaat een wachtwoordhash op met de informatie die nodig is om de controle te herhalen. Bij het aanmelden berekent het de hash opnieuw uit het ingevoerde wachtwoord en vergelijkt het de resultaten; het ontsleutelt de opgeslagen hash nooit.

Bescherm de opgeslagen verificatiegegevens

Onder Linux bevat /etc/shadow beschermde wachtwoordhashes. Het breed leesbare /etc/passwd bevat accountinformatie en een x op de plaats van het wachtwoord. Een wachtwoordveld in shadow vermeldt een algoritme-identificatie, kostenparameters, een salt en de resulterende hash. $y$ staat voor yescrypt, dat standaard wordt gebruikt in Debian 11, Ubuntu 22.04, Fedora 35 en latere versies; $6$ staat voor SHA-512-crypt.

Een gestolen hashbestand maakt een offlineaanval mogelijk. De aanvaller hasht gokpogingen op afzonderlijke hardware zonder de vertragingen van de aanmeldservice. Een bruteforceaanval probeert tekenreeksen systematisch; een woordenboekaanval begint met waarschijnlijke woorden, uitgelekte wachtwoorden en varianten zoals “Wachtwoord1!”.

Voor precies acht kleine letters zijn 268=208.827.064.576 tekenreeksen mogelijk. Bij 1010 pogingen per seconde duurt het ongeveer 21 seconden om alle mogelijkheden te doorzoeken. Bij 104 pogingen per seconde duurt het ongeveer 2,09×107 seconden, ongeveer 242 dagen. Dit zijn tijden voor een volledige doorzoeking, geen garanties voor een afzonderlijk wachtwoord. Twaalf kleine letters geven ongeveer 9,5×1016 tekenreeksen, zelfs bij de hogere snelheid ongeveer 110 dagen.

Maak elk account kostbaar om aan te vallen

Een salt is een nieuwe willekeurige waarde die naast elke wachtwoordhash wordt opgeslagen. Die zorgt dat gelijke wachtwoorden verschillende hashes opleveren en maakt herbruikbare vooraf berekende tabellen onbruikbaar. De salt is openbaar; zijn taak is afzonderlijk werk voor verschillende accounts af te dwingen.

Neem 1.000 accounts en een lijst met 106 gokpogingen, gecontroleerd met 104 hashes per seconde. Zonder salts duurt het 100 seconden om de lijst één keer te berekenen en kan die voor alle accounts worden gebruikt. Unieke salts vereisen 109 berekeningen, ongeveer 105 seconden of 27,8 uur. Een veelvoorkomend wachtwoord kan nog steeds aan het begin van de lijst worden gevonden.

Wachtwoordhashmethoden zoals bcrypt, scrypt, yescrypt, Argon2 en PBKDF2 hebben instelbare rekenkosten. Scrypt, yescrypt en Argon2 brengen ook geheugenkosten met zich mee. Bij een praktische aanmelding is een fractie van een seconde aanvaardbaar; een grote gokaanval herhaalt die kosten miljoenen keren. Eén snelle SHA-256-berekening mist deze bewuste kostenfactor.

Richt het aanmeldbeleid in op gokaanvallen

NIST SP 800-63B-4 (2025) vereist salts van ten minste 32 bits en een wachtwoordhashkostenfactor die zo hoog is als praktisch haalbaar. De wachtwoordrichtlijn vereist ten minste 15 tekens voor authenticatie met alleen een wachtwoord, of ten minste acht wanneer het wachtwoord deel uitmaakt van MFA, en beveelt aan ten minste 64 tekens te accepteren.

De richtlijn wijst verplichte combinaties zoals één cijfer en één symbool en routinematige verplichte wachtwoordwijzigingen af. Ze vereist dat veelvoorkomende of gecompromitteerde keuzes worden geblokkeerd, online gokpogingen worden beperkt en een wijziging wordt afgedwongen wanneer compromittering duidelijk is. Snelheidslimieten voor online pogingen beschermen de actieve service; trage hashing met salts beschermt gestolen verificatiegegevens. Een langer wachtwoord dat voorspelbaar uit een veelgebruikte lijst wordt gekozen, kan nog steeds zwak zijn.

Belangrijkste punten

  • Bij het aanmelden wordt een wachtwoordhash opnieuw berekend; er wordt geen wachtwoord ontsleuteld.
  • Offline gokken omzeilt de snelheidslimieten van de actieve aanmeldservice.
  • Een unieke openbare salt voorkomt hergebruik van hashwerk tussen accounts.
  • Een instelbare kostenfactor maakt elke gok kostbaar.
  • Wachtwoordlengte en blokkeerlijsten helpen meer dan voorspelbare samenstellingsregels.

2.3 Authenticeer met wat je hebt en wat je bent

Wachtwoorden bewijzen kennis. Andere authenticatiemiddelen bewijzen bezit van een voorwerp of een lichamelijk kenmerk. Het besturingssysteem koppelt uiteindelijk de geauthenticeerde identiteit aan processen, maar de weg naar die identiteit bepaalt mede hoe gemakkelijk een aanvaller zich als de gebruiker kan voordoen.

Combineer verschillende factortypen

De drie factortypen zijn iets wat je weet, zoals een wachtwoord of pincode; iets wat je hebt, zoals een telefoon, smartcard of beveiligingssleutel; en iets wat je bent, zoals een vingerafdruk. Multifactorauthenticatie (MFA) combineert verschillende typen. Een wachtwoord plus een beveiligingsvraag herhaalt de kennisfactor.

Tijdgebonden eenmalige wachtwoorden (TOTP) gebruiken een gedeeld geheim en een tijdstap, meestal 30 seconden, om overeenkomende codes te maken op een authenticatiemiddel en een server. RFC 6238 definieert de methode. Een code verloopt snel, maar een valse aanmeldpagina kan een verse code doorgeven voordat die verloopt. Appcodes voorkomen simkaartfraude; sms-codes zijn afhankelijk van de controle over het telefoonnummer en kunnen worden omgeleid als dat wordt overgenomen.

Bewijs bezit zonder de sleutel te versturen

Een authenticatiemiddel met een publieke sleutel ondertekent een nieuwe uitdaging met een privésleutel. De server verifieert die met een opgeslagen publieke sleutel, die zelf niet opnieuw kan worden gebruikt om een aanmelding te ondertekenen. FIDO2-beveiligingssleutels en passkeys koppelen de authenticatie ook aan de identiteit van de site, zodat een antwoord voor een valse site niet kan authenticeren bij de echte site. Een gewone SSH-sleutel bewijst ook bezit, maar je mag er niet van uitgaan dat die hetzelfde mechanisme voor binding aan een website heeft.

De opslag verandert het risico. Apparaatgebonden sleutels in een hardwarebeveiligingssleutel, TPM of beveiligde enclave ondertekenen binnen de hardware zonder de privésleutel prijs te geven. Gesynchroniseerde passkeys kopiëren versleuteld sleutelmateriaal tussen apparaten via een platformaccount. Dat maakt herstel eenvoudiger, maar brengt dat account binnen de vertrouwensgrens. Een gewone SSH-privésleutel is een bestand dat wordt beschermd door toegangsrechten en eventueel een wachtwoordzin.

Interpreteer biometrische fouten

Een biometrisch systeem vergelijkt gemeten kenmerken met een opgeslagen sjabloon. Het accepteert wanneer een overeenkomstscore een drempel bereikt; het vereist niet elke keer een identieke afbeelding.

PercentagePopulatie die als noemer wordt gebruiktGetelde fout
Foutacceptatiepercentage (FAR)Pogingen van onbevoegdenGeaccepteerde onbevoegden
Foutafwijzingspercentage (FRR)Pogingen van bevoegde gebruikersAfgewezen bevoegde gebruikers

Twee geaccepteerde onbevoegden op 10.000 geven een FAR van 0,02%. Dertig afwijzingen op 1.000 pogingen van bevoegde gebruikers geven een FRR van 3%. Een hogere overeenkomstsdrempel verlaagt FAR en verhoogt FRR. Een strengere overeenkomst vermindert het aantal geslaagde pogingen om zich als iemand anders voor te doen, maar maakt herhaalde pogingen van bevoegde gebruikers gebruikelijker.

Een uitgelekt biometrisch kenmerk kan niet zoals een wachtwoord worden gewijzigd, en sensoren hebben bescherming nodig tegen foto's of gekopieerde vingerafdrukken. Een nuttig ontwerp gebruikt biometrie lokaal om een beschermde sleutel te ontgrendelen en stuurt alleen een handtekening naar de server.

Authenticeer ook processen

Voor een lokale Unix-domeinverbinding haalt Linux met SO_PEERCRED identificatiegegevens van de andere partij bij de kernel op in plaats van een naam te vertrouwen die de client stuurt. Tussen machines gebruiken services sleutels, certificaten of tokens die zijn opgeslagen met beperkte toegang voor het serviceaccount. Na het aanmelden gebruiken gewone toegangscontroles van het besturingssysteem de UID of het toegangstoken; ze vragen niet of de gebruiker een wachtwoord heeft getypt of een sleutel heeft aangeraakt.

Belangrijkste punten

  • MFA combineert verschillende factortypen, niet alleen twee vragen.
  • TOTP-codes kunnen worden doorgestuurd zolang ze geldig zijn.
  • Aanmelden met een publieke sleutel bewijst bezit zonder de privésleutel te versturen.
  • FIDO2 koppelt authenticatie aan de bedoelde site.
  • FAR en FRR gebruiken verschillende populaties van pogingen.
  • Een strengere biometrische drempel levert minder acceptaties van onbevoegden op, maar meer afwijzingen van bevoegde gebruikers.
  • Identificatiegegevens van een lokale andere partij moeten van de kernel komen.
3

Regel de toegang tot bestanden en andere bronnen

Voor een geauthenticeerde identiteit is nog steeds een beslissing nodig over elke bron die ze aanvraagt. Geef rechten weer in een toegangsmatrix en vergelijk daarna lijsten bij objecten met tokens die processen bezitten. Werk bestands- en directoryrechten door voordat je verplicht beleid en functierollen toevoegt. Bij hetzelfde verzoek kunnen een geopende handle, gewone rechtenbits en een centraal afgedwongen grens voor een service betrokken zijn.

3.1 Vergelijk toegangscontrolelijsten en bevoegdheidstokens

Een toegangsbeslissing heeft drie onderdelen: een subject vraagt om een bewerking op een object uit te voeren. Het subject is meestal een proces dat namens een beveiligingssubject handelt; objecten zijn onder meer bestanden, apparaten en andere processen. Een toegangsmatrix geeft de rechten weer in cellen, met subjecten als rijen en objecten als kolommen.

Sla dezelfde rechten op twee manieren op

Stel dat alice report.txt kan lezen en beschrijven, bob het alleen kan lezen en de back-upservice zowel report.txt als payroll.db kan lezen. Bob kan ook payroll.db lezen en beschrijven. Alice en bob mogen de printer gebruiken; de back-upservice niet. De meeste cellen in de veel grotere matrix van een werkelijk systeem zijn leeg.

Een toegangscontrolelijst (ACL) slaat een kolom op bij het bijbehorende object. De lijst bij report.txt vermeldt alice, bob en backup met hun respectieve rechten. Een lijst met bevoegdheidstokens slaat een rij op bij het subject. Bob bezit tokens om het rapport te lezen, de salarisadministratie te lezen en te beschrijven en de printer te gebruiken.

VraagACLLijst met bevoegdheidstokens
Wie mag dit object gebruiken?Bekijk de lijst ervanZoek alle houders
Wat mag dit subject gebruiken?Bekijk veel objectenBekijk de tokens ervan
Hoe worden beperkte rechten gedelegeerd?Voeg vermeldingen toe of wijzig zeGeef geselecteerde tokens door zonder extra rechten
Wat maakt intrekking moeilijk?Eerder verleende handles kunnen blijven bestaanKopieën van tokens kunnen zijn verspreid

Een bevoegdheidstoken vermeldt zowel een object als toegestane bewerkingen en kan niet door de houder worden vervalst of uitgebreid. Toegestaan kopiëren en delegeren zijn mogelijk. De kernel kan het echte token bewaren terwijl gebruikerscode een index bezit; een ander ontwerp beschermt een token cryptografisch.

Volg een descriptor na het openen

Unix combineert beide benaderingen. open() controleert de aanroeper aan de hand van de toegangsrechten van het bestand en retourneert daarna een bestandsdescriptor die de verleende toegang vastlegt. Latere lees- en schrijfbewerkingen controleren die geopende handle. Een kindproces kan die erven via fork(), of een proces kan die via een Unix-domeinsocket ontvangen.

Alice opent app.log om te schrijven. De eigenaar wijzigt de rechtennotatie in 444. De al geopende descriptor van alice kan nog steeds schrijven; een nieuwe poging om het bestand voor schrijven te openen krijgt met de nieuwe rechten te maken. De ACL bijwerken die toekomstige openingen regelt, trekt niet elk al uitgegeven bevoegdheidstoken in. Windows-handles volgen hetzelfde algemene patroon.

Capsicum van FreeBSD maakt dit bruikbaar voor afscherming. Na cap_enter() kan een proces geen willekeurig absoluut pad openen. Het kan werken via bestaande descriptoren, descriptoren ontvangen en openat() gebruiken onder een directorydescriptor die het bezit. Een ouderproces kan een werkproces daardoor precies de bestanden geven die het nodig heeft. Kernels gebaseerd op bevoegdheidstokens, zoals seL4 en Fuchsia, breiden het idee uit naar kernelobjecten in het algemeen.

Onderscheid de andere betekenis van capability in Linux

Afzonderlijke Linux-privileges verdelen de privileges van root in categorieën. CAP_NET_BIND_SERVICE staat het binden van poorten met lage nummers toe; CAP_DAC_OVERRIDE omzeilt gewone toegangscontroles voor bestanden. Deze privileges wijzen niet één specifiek object aan en verschillen daarom van een bevoegdheidstoken in een toegangsmatrix. Eén Linux-privilege kan een klasse van bewerkingen op veel objecten toestaan.

Belangrijkste punten

  • ACL's ordenen rechten per object; lijsten met bevoegdheidstokens ordenen ze per subject.
  • Een bevoegdheidstoken kan niet door de houder worden vervalst of uitgebreid.
  • Descriptoren behouden de toegang die is verleend toen een object werd geopend.
  • De rechtennotatie van een bestand wijzigen trekt bestaande descriptoren normaal niet in.
  • Afzonderlijke Linux-privileges verdelen rootprivileges en wijzen geen afzonderlijke objecten aan.

3.2 Lees en stel toegangsrechten in voor Unix en Windows

Unix-rechten koppelen rechten aan de eigenaar, de groep van de eigenaar en alle anderen. Om over toegang te beslissen, bepaal je eerst de bewerking en het relevante object. Bestandsinhoud lezen, een directory doorzoeken en een naam verwijderen vereisen verschillende rechten.

Ontcijfer en selecteer de bits

Lezen is 4, schrijven 2 en uitvoeren 1. Tel deze waarden voor elke klasse op: 754 betekent rwxr-xr--; 640 betekent rw-r-----. chmod 640 notes.txt stelt de rechtennotatie in, terwijl chmod g+w,o-r notes.txt geselecteerde bits wijzigt. De eigenaar of root mag de rechtennotatie wijzigen; de eigenaar wijzigen vereist rootbevoegdheid, onder Linux vertegenwoordigd door CAP_CHOWN.

De kernel kiest de eerste overeenkomende klasse: eigenaar als de effectieve UID overeenkomt, anders groep als een groep van het proces overeenkomt, anders anderen. Hij combineert geen klassen en probeert geen ruimere klasse. Alice bezit een bestand met rechtennotatie 077: de eigenaarbits zijn leeg, dus kan zij het niet lezen, ook al hebben groep en anderen volledige rechten. Als eigenaar kan zij de rechtennotatie nog steeds wijzigen.

Root omzeilt normaal lees- en schrijfcontroles. Om een gewoon bestand onder de gebruikelijke discretionaire controles van Linux uit te voeren, moet ten minste één uitvoerbit zijn ingesteld. Verplicht beleid kan verdere beperkingen opleggen.

Interpreteer directorybits en speciale bits

Leesrecht op een directory laat namen zien; uitvoerrecht staat doorzoeken en opzoeken toe; schrijfrecht samen met uitvoerrecht staat aanmaken, verwijderen en hernoemen van vermeldingen toe. Een naam verwijderen wijzigt de directory ervan, zodat een bestand met rechtennotatie 000 kan worden verwijderd door iemand met de benodigde directoryrechten.

Setuid voegt octaal 4000 toe aan de rechtennotatie van een uitvoerbaar bestand en wijzigt de effectieve gebruikersidentiteit bij uitvoering. Setgid voegt 2000 toe en wijzigt op vergelijkbare wijze de groep; op een directory zorgt het dat nieuwe bestanden de groep van de directory erven. De stickybit voegt 1000 toe. Een directory zoals /tmp, met rechtennotatie 1777, staat verwijderen of hernoemen alleen toe aan de bestandseigenaar, de directoryeigenaar of een geprivilegieerd proces, waarbij de gewone directoryrechten nog steeds vereist zijn.

Verwijder bits bij het aanmaken van bestanden

Een umask wist bits uit de rechtennotatie die een programma aanvraagt. Het is een bitbewerking, geen octale aftrekking. Bij de gebruikelijke aanvragen van 666 voor bestanden en 777 voor directory's:

UmaskNieuw bestandNieuwe directory
022644755
027640750
000666777

Een umask kan geen uitvoerrechten toevoegen die in de bestandsaanvraag ontbraken.

Lees uitgebreidere toegangslijsten

POSIX-ACL's voegen genoemde gebruikers en groepen toe. setfacl -m u:bob:r report.txt geeft bob een leesvermelding op naam; getfacl toont die en ls -l markeert de uitgebreide ACL met +. Het ACL-masker beperkt genoemde gebruikers, genoemde groepen en de groep van de eigenaar, zodat een vermelding op naam meer rechten kan tonen dan effectief zijn.

Windows NTFS gebruikt een beveiligingsdescriptor met een eigenaar-SID en een DACL van geordende ACE's die rechten toestaan of weigeren. De beoordeling stopt wanneer een gevraagd recht wordt geweigerd of alle gevraagde rechten zijn verleend; rechten die niet zijn verleend, worden geweigerd. De voorkeursvolgorde plaatst expliciete vermeldingen vóór geërfde vermeldingen, met weigeringen vóór toestemmingen binnen elke groep. Een expliciete toestemming kan daardoor een verzoek afhandelen voordat een geërfde weigering wordt bereikt. Een afzonderlijke SACL selecteert toegangsgebeurtenissen voor registratie in het auditlogboek.

Belangrijkste punten

  • Kies de overeenkomende Unix-rechtenklasse voordat je de bits ervan controleert.
  • Directoryrechten regelen namen; bestandsrechten regelen bestandsinhoud.
  • De stickybit voegt een eigenaarscontrole toe voor verwijderen en hernoemen.
  • Een umask wist aangevraagde bits en voegt ze nooit toe.
  • Het POSIX-ACL-masker begrenst de groepsklasse en vermeldingen op naam.
  • De beoordeling van een Windows-DACL hangt af van de volgorde van ACE's.
  • Een SACL selecteert wat wordt vastgelegd in plaats van toegang te verlenen.

3.3 Vergelijk discretionaire, verplichte en rolgebaseerde toegangscontrole

Verschillende modellen voor toegangscontrole beantwoorden verschillende beheervragen. Wie mag toegang verlenen? Kan een gecompromitteerd programma gegevens van een gebruiker delen? Hoe kan een beheerder de rechten van veel medewerkers wijzigen zonder elk bestand te bewerken? Eén besturingssysteem kan meerdere modellen op hetzelfde verzoek toepassen.

Onderscheid de keuze van de eigenaar van systeembeleid

Bij discretionaire toegangscontrole (DAC) beslist de eigenaar van een object wie het mag gebruiken. Unix-rechtennotaties en ACL's zijn bekende mechanismen. Het zwakke punt is dat een kwaadaardig programma dat als de gebruiker handelt, de rechten van die gebruiker kan uitoefenen, inclusief het elders naartoe kopiëren van leesbare gegevens.

Bij verplichte toegangscontrole (MAC) beperkt het systeembrede beleid van een beheerder de toegang onafhankelijk van de wensen van de eigenaar. De kernel past MAC toe naast DAC. Beide controles moeten toegang toestaan, dus een ruime bestandsrechtennotatie gaat niet boven een verplichte weigering.

Het Bell–LaPadula-model beschermt vertrouwelijkheid met geordende niveaus en twee regels: niet omhoog lezen en niet omlaag schrijven. Een proces op niveau Geheim kan vertrouwelijke gegevens lezen en naar een zeer geheime bestemming schrijven. Het kan geen zeer geheime gegevens lezen of vertrouwelijke gegevens schrijven. Een programma kan informatie niet van Geheim naar Vertrouwelijk verplaatsen door die simpelweg te lezen en opnieuw te schrijven. Biba keert de lees- en schrijfrichtingen om om integriteit te beschermen.

Beperk een service ook wanneer die root is

SELinux geeft bestanden een label met een type en voert processen uit in domeinen. Het beleid vermeldt welk domein welke bewerkingen op elk type mag uitvoeren; niet-vermelde toegang wordt geweigerd. Een webserver in httpd_t mag pagina's met het label httpd_sys_content_t lezen, terwijl toegang tot user_home_t wordt geblokkeerd, zelfs als gewone Unix-rechten het lezen toestaan. ls -Z toont labels.

In afdwingende modus blokkeert SELinux schendingen en legt die vast. In toelatende modus legt het schendingen vast zonder ze te blokkeren. Root in een beperkt domein moet nog steeds aan het afdwingende beleid voldoen. UID 0 en onbeperkte toegang zijn daarom verschillende beweringen.

AppArmor beperkt programma's met profielen op basis van bestandspaden en toegestane afzonderlijke Linux-privileges. Het wordt vaak gebruikt op Ubuntu en SUSE. SELinux en AppArmor werken via aanknopingspunten van Linux-beveiligingsmodules (LSM) bij beveiligingsbeslissingen. Android combineert appspecifieke UID's met SELinux; systemen van Apple gebruiken ook sandboxprofielen voor toepassingen.

Wijs functies toe in plaats van afzonderlijke rechten

Bij rolgebaseerde toegangscontrole (RBAC) worden rechten aan rollen gekoppeld en krijgen gebruikers rollen toegewezen. Als iemand van functie verandert, wijzigen de roltoewijzingen in plaats van veel afzonderlijke objectrechten.

Stel dat 50 medewerkers elk 20 rechten nodig hebben. Directe toewijzing vereist 1.000 koppelingen tussen gebruikers en rechten. Als vijf rollen elk 20 rechten hebben en elke medewerker één rol heeft, vereist het beheer 50 koppelingen tussen gebruikers en rollen en 100 koppelingen tussen rollen en rechten: 150 in totaal. De besparing komt door gedeelde functiepatronen, niet door vereiste rechten te verwijderen.

Windows-groepen die als rollen worden gebruikt en groepsgebaseerd sudo-beleid passen dit patroon toe. DAC is geschikt voor bestanden die door eigenaren worden beheerd, MAC beperkt services met centraal afgedwongen regels en RBAC ordent administratieve toewijzingen. Een service kan zijn functierechten via een rol krijgen terwijl DAC en MAC beide de daadwerkelijke bestandstoegang controleren.

Belangrijkste punten

  • Met DAC kiezen eigenaren de toegang; MAC dwingt een systeembreed beleid af.
  • Een verzoek moet zowel de DAC-controle als de afdwingende MAC-controle doorstaan.
  • Bell–LaPadula blokkeert omhoog lezen en omlaag schrijven.
  • SELinux-domeinen en -typen kunnen rootprocessen beperken.
  • RBAC beheert rechten via functierollen.
4

Voer besturingssystemen uit in virtuele machines

Meerdere kernels op één computer uitvoeren voegt een beschermingslaag onder het besturingssysteem toe. Een hypervisor moet de eigen omgeving van elk gastbesturingssysteem behouden en tegelijk de controle over fysieke CPU-tijd, geheugen en apparaten houden. Volg de mechanismen van onderschepte instructies tot adresvertaling in twee fasen en vergelijk daarna apparaatinterfaces en de resterende manieren waarop een gastbesturingssysteem zijn host kan beïnvloeden.

4.1 Beschrijf virtuele machines en hypervisors

Een virtuele machine (VM) geeft een volledig besturingssysteem een schijnbaar eigen computer. Dat besturingssysteem is het gastbesturingssysteem. De fysieke computer is de host en de hypervisor, of monitor voor virtuele machines (VMM), wijst echte processortijd, geheugen en apparaten toe aan de gastbesturingssystemen.

Behoud het gedrag en houd de controle

Het model van Popek en Goldberg uit 1974 onderscheidt drie eigenschappen. Equivalentie betekent dat programma's zich gedragen zoals op een echte machine, afgezien van timing en beschikbare bronnen. Bronbeheer betekent dat de hypervisor de hardware blijft besturen. Efficiëntie betekent dat de meeste instructies van het gastbesturingssysteem rechtstreeks op de processor worden uitgevoerd.

De hypervisor plant virtuele CPU's (vCPU's) op fysieke processorkernen. Een machinewisseling slaat de volledige uitvoeringstoestand van één VM op, inclusief geprivilegieerde registers en interruptinstellingen, en herstelt vervolgens die van een andere VM. Een gastbesturingssysteem ziet zijn eigen toestand, ook wanneer het een fysieke processorkern met andere gastbesturingssystemen deelt.

OntwerpWaar de hypervisor draaitVoorbeelden
Type 1, rechtstreeks op hardwareBeheert de hardware rechtstreeksESXi, Xen, Hyper-V
Type 2, op een hostDraait als toepassing op een hostbesturingssysteemVirtualBox, VMware Workstation, Parallels Desktop

KVM maakt van de Linux-kernel zelf een hypervisor en wordt meestal als type 1 ingedeeld. Een volledige Linux-host blijft beschikbaar, waardoor het eenvoudige onderscheid tussen twee typen minder duidelijk is. Bepaal om de bescherming te begrijpen welke component de CPU- en geheugenvirtualisatie daadwerkelijk beheert.

Gebruik de machineabstractie

Serverconsolidatie brengt licht gebruikte systemen samen. Twaalf servers die elk gemiddeld 5% van een computer met acht processorkernen gebruiken, hebben samen 60% van één zo'n computer nodig. Dat gemiddelde suggereert dat consolidatie mogelijk is, maar voor gelijktijdige pieken en de vraag naar RAM en apparaten blijft reservecapaciteit nodig.

Een momentopname slaat de toestand van een VM op om die later te herstellen. Alleen een schijfimage kopiëren legt een draaiende CPU en het geheugen daarvan niet vast. Livemigratie verplaatst een draaiende VM naar een andere host door geheugen te kopiëren en de uitvoering na een korte pauze over te schakelen. Deze bewerkingen zijn mogelijk omdat de machinetoestand van het gastbesturingssysteem wordt weergegeven als gegevens die de hypervisor beheert.

VM's ondersteunen ook het testen van oude systemen, het scheiden van conflicterende software en het uitvoeren van verschillende besturingssystemen op compatibele hardware. Een VM met een Windows-gastbesturingssysteem kan naast een Linux-gastbesturingssysteem draaien, elk met een eigen kernel. Cloudserverinstanties gebruiken vaak deze grens.

Onderscheid virtualisatie van volledige emulatie

Een emulator kan een instructieset voor een andere processor interpreteren of vertalen, zoals ARM-code op x86. Hardwarevirtualisatie voert gastinstructies normaal rechtstreeks op een compatibele processor uit en grijpt in bij gevoelige gebeurtenissen. Dat verklaart zowel de snelheid als de noodzaak van CPU-ondersteuning.

Afzonderlijke gastkernels vormen een bruikbare grens: de overname van één gastkernel geeft niet rechtstreeks controle over de hostkernel. De grens hangt nog steeds af van correcte code in de hypervisor en het apparaatmodel. Een ontsnapping uit een virtuele machine maakt misbruik van die laag, terwijl een zijkanaal gegevens via gedeelde hardware kan lekken zonder gewone geheugentoegang te verlenen. Een VM kiezen vermindert de interfaces die aan een niet-vertrouwd gastbesturingssysteem worden blootgesteld; gedeelde hardware wordt er niet onfeilbaar door.

Belangrijkste punten

  • Een VM presenteert een volledige machine aan zijn gastbesturingssysteem.
  • Equivalentie, bronbeheer en efficiëntie beschrijven de taak van een VMM.
  • Een vCPU wordt op een fysieke CPU ingepland.
  • Momentopnamen en migratie zijn afhankelijk van het opslaan en overdragen van de machinetoestand.
  • Consolidatie vereist reservecapaciteit voor piekbelasting, niet alleen een laag gemiddelde.
  • VM-isolatie hangt af van de correcte werking van de hypervisor, het apparaatmodel en de hardware.

4.2 Virtualiseer de processor

Een gastkernel verwacht zijn machine te besturen. De hypervisor moet die schijn ophouden zonder de echte computer over te dragen. CPU-virtualisatie laat gewone gastinstructies rechtstreeks uitvoeren en onderschept bewerkingen die een wijziging van de toestand van de virtuele machine vereisen.

Onderschep en emuleer de virtuele toestand

Bij klassiek onderscheppen en emuleren draait de gastkernel met verlaagde privileges. Een poging om een paginatabelregister te laden of een traptabel te installeren veroorzaakt een trap naar de hypervisor. De hypervisor werkt het virtuele register of de virtuele tabel van het gastbesturingssysteem bij en hervat de uitvoering. Hij laat het gastbesturingssysteem de echte besturingsstructuren van de hypervisor niet vervangen.

Een gast-systeemaanroep kan in dit ontwerp meerdere overgangen vereisen. De gasttoepassing veroorzaakt een trap naar de echte afhandelaar van de hypervisor. De hypervisor draagt de uitvoering met verlaagde privileges over aan de geregistreerde afhandelaar van de gastkernel. Wanneer de gastkernel terugkeert, veroorzaakt die geprivilegieerde terugkeer opnieuw een trap; de hypervisor voltooit de echte terugkeer naar de gasttoepassing.

De voorwaarde van Popek en Goldberg voor deze techniek is dat elke gevoelige instructie geprivilegieerd moet zijn. Gevoelig betekent dat de instructie de machineconfiguratie wijzigt of zich anders gedraagt afhankelijk van het privilegeniveau. Geprivilegieerd betekent dat de instructie buiten de modus met de meeste privileges een trap veroorzaakt. Stilzwijgende verschillen kunnen niet worden geëmuleerd als de hypervisor nooit merkt dat ze zijn opgetreden.

Begrijp het klassieke x86-probleem

De analyse van Robin en Irvine uit 2000 vond 17 gevoelige, niet-geprivilegieerde x86-instructies. Zo kan POPF met voldoende privileges de vlag herstellen die interrupts inschakelt, maar die bij verlaagde privileges stilzwijgend ongewijzigd laten. Een gastbesturingssysteem met verlaagde privileges kan denken dat het interrupts heeft uitgeschakeld, terwijl geen trap de hypervisor heeft verteld de virtuele interrupttoestand bij te werken.

Drie benaderingen lossen dit probleem op:

BenaderingHoe de bewerking wordt onderscheptWijziging van het gastbesturingssysteem
Binaire vertalingHerschrijft problematische gastkernelinstructies vóór uitvoering en bewaart vertaalde code in een cacheGeen broncodewijziging
ParavirtualisatieVervangt geprivilegieerde bewerkingen door expliciete hypercallsAangepaste gastkernel
HardwareondersteuningBiedt afzonderlijke gastuitvoering en gecontroleerde overgangen naar de hypervisorEen ongewijzigd gastbesturingssysteem kan draaien

VMware gebruikte binaire vertaling in 1999; Xen gebruikte paravirtualisatie in 2003. Intel VT-x kwam in 2005 en AMD-V in 2006. Gewone gasttoepassingen kunnen nog steeds rechtstreeks draaien wanneer kernelcode vertaling of hypercalls nodig heeft.

Houd ringnummer en virtualisatiemodus gescheiden

Met Intel VT-x draait de hypervisor in VMX-rootmodus en een gastbesturingssysteem in niet-rootmodus. De gastkernel kan daar ring 0 gebruiken. Ring 0 in een gastbesturingssysteem betekent geen controle over de fysieke host.

Geconfigureerde gebeurtenissen veroorzaken een VM exit, waarbij de vCPU-toestand wordt opgeslagen in een besturingsstructuur zoals de VMCS. De hypervisor handelt de gebeurtenis af en hervat via een VM entry. Veel systeemaanroepen kunnen volledig binnen het gastbesturingssysteem blijven. ARM gebruikt EL2 voor de hypervisor; RISC-V biedt een hypervisoruitbreiding.

Als een gastbesturingssysteem HLT uitvoert en die gebeurtenis is geconfigureerd om naar de hypervisor over te gaan, markeert de hypervisor zijn vCPU als wachtend en plant ander werk totdat een virtuele interrupt arriveert. De fysieke processorkern hoeft niet ongebruikt te blijven. Overgangen heen en terug kosten nog steeds tijd, doorgaans honderden tot duizenden cycli, dus blijven bundeling en paravirtuele interfaces waardevol.

Belangrijkste punten

  • Bij onderscheppen en emuleren worden gevoelige bewerkingen op de toestand van de virtuele machine toegepast.
  • Klassiek onderscheppen en emuleren vereist dat gevoelige instructies een trap veroorzaken.
  • Binaire vertaling herschrijft code; paravirtualisatie verandert de interface van het gastbesturingssysteem.
  • Ring 0 van een gastbesturingssysteem onder VT-x blijft gescheiden van VMX-rootmodus.
  • VM exits zijn gecontroleerde gebeurtenissen met werkelijke prestatiekosten.

4.3 Virtualiseer geheugen

Een gasttoepassing gebruikt een virtueel gastadres. De kernel daarvan vertaalt dat naar een fysiek gastadres, de kijk van het gastbesturingssysteem op RAM. De hypervisor koppelt dat adres vervolgens aan een fysiek hostadres, of machineadres. Elk gastbesturingssysteem kan denken dat zijn RAM bij nul begint terwijl het andere echte paginaframes gebruikt.

Behoud de paginaoffset

Gebruik pagina's van 4 KiB. Het gastbesturingssysteem koppelt virtuele pagina 2 aan gastpaginaframe 7; de hypervisor koppelt gastpaginaframe 7 aan machinepaginaframe 42. Voor adres 0x2ABC:

  1. Splits het in pagina 2 en offset 0xABC.
  2. Vervang pagina 2 door gastpaginaframe 7, wat 0x7ABC oplevert.
  3. Vervang gastpaginaframe 7 door machinepaginaframe 42, hexadecimaal 0x2A.
  4. Behoud de offset, wat machineadres 0x2AABC oplevert, of 174.780 bytes vanaf adres nul.

Alleen het paginanummer verandert. Als je het fysieke gastadres als een echt RAM-adres behandelt, omzeil je de toewijzings- en isolatiebeslissing van de hypervisor.

Vergelijk vertaling door software en hardware

Schaduwpaginatabellen koppelen virtuele gastpagina's rechtstreeks aan machinepaginaframes. De echte MMU gebruikt deze door de hypervisor gebouwde tabellen. De hypervisor beveiligt pagina's met gastpaginatabellen tegen schrijven en onderschept wijzigingen en wisselingen van gasttabellen, zodat de schaduwtabellen consistent blijven. Frequente wijzigingen van gastadresruimten veroorzaken daardoor extra traps.

Geneste paginering, Intel EPT of AMD NPT, geeft de MMU beide fasen. De hardware doorloopt de gasttabellen en de tabellen van fysiek gastadres naar machineadres. Wijzigingen in gastpaginatabellen hoeven niet langer allemaal door software te worden onderschept. De TLB bewaart de gecombineerde uiteindelijke vertaling.

Een cachemisser kan nog steeds duur zijn. Met vier niveaus in elke fase heeft elk van de vier gasttabelvermeldingen vier verwijzingen naar geneste tabellen plus de vermelding zelf nodig: 20 verwijzingen. Voor de vertaling van het uiteindelijke fysieke gastadres van de gegevens komen er nog vier bij, wat vóór de gegevenstoegang 24 vertaalverwijzingen oplevert. Grote pagina's en caches voor het doorlopen van paginatabellen verminderen dit werk in het slechtste geval zonder cache.

Win geheugen terug met beperkte kennis van het gastbesturingssysteem

Bij geheugenoverboeking wordt aan gastbesturingssystemen samen meer geheugen toegezegd dan de host heeft. Vier VM's van 16 GiB komen samen op 64 GiB op een host met 48 GiB. Dit werkt alleen zolang hun actieve behoeften binnen de capaciteit passen; als ze allemaal druk worden, is terugwinning of uitwisseling nodig.

Een balloonstuurprogramma binnen een gastbesturingssysteem wijst op verzoek van de hypervisor pagina's toe. Het gastbesturingssysteem kiest wat het vrijgeeft, terwijl de hypervisor de machinepaginaframes achter de balloonpagina's terugneemt. Dit verkleint de informatiekloof: het gastbesturingssysteem weet welke gegevens belangrijk zijn, terwijl de hypervisor toewijzingen ziet zonder hun volledige betekenis te kennen.

Delen van pagina's, zoals Linux KSM, voegt identieke pagina's samen tot één alleen-lezenkopie en splitst die bij een schrijfbewerking. Uitwisseling door de hypervisor is een andere terugvaloptie, maar kan een slechte keuze maken omdat de kennis van het gastbesturingssysteem ontbreekt. Een apparaat dat rechtstreeks aan de VM is toegewezen, heeft ook een IOMMU nodig om zijn DMA-adressen te vertalen en te beperken.

Identieke pagina's delen tussen klanten heeft gevolgen voor de privacy: de tijd die kopiëren bij schrijven kost, kan onthullen of een ander gastbesturingssysteem dezelfde gegevens bezit. Cloudaanbieders schakelen die vorm van delen tussen klanten vaak uit, ook al bespaart die geheugen.

Belangrijkste punten

  • Virtuele gastadressen, fysieke gastadressen en machineadressen zijn verschillende lagen.
  • Een paginaoffset blijft bij beide vertalingen ongewijzigd.
  • Bij schaduwpaginatabellen moet de hypervisor wijzigingen in gasttabellen bijhouden.
  • Geneste paginering voert beide fasen uit in hardware en bewaart het gecombineerde resultaat in een cache.
  • Geheugenoverboeking hangt ervan af dat de vraag onder de beschikbare capaciteit blijft.
  • Ballooning gebruikt kennis van het gastbesturingssysteem; het delen van pagina's kan informatie via tijdverschillen blootstellen.

4.4 Virtualiseer apparaten en isoleer virtuele machines van elkaar

Een VM heeft naast CPU-tijd en RAM ook opslag, netwerken en andere apparaten nodig. De apparaatinterface beïnvloedt compatibiliteit, prestaties en de code die een niet-vertrouwd gastbesturingssysteem kan bereiken. Een snelle interface en een kleine vertrouwde interface zijn verwante ontwerpkeuzes, maar niet dezelfde eigenschap.

Kies hoe het gastbesturingssysteem een apparaat bereikt
BenaderingInterface voor het gastbesturingssysteemBelangrijkste afweging
EmulatieEen model van een bekend fysiek apparaatBestaande stuurprogramma's werken, maar registerbewerkingen vereisen softwarewerk
Paravirtueel apparaatEen stuurprogramma dat rekening houdt met virtualisatie en gedeelde wachtrijenEfficiënte bundeling, maar het gastbesturingssysteem heeft het stuurprogramma nodig
Rechtstreekse toewijzingEen toegewezen fysiek apparaat of virtuele functieToegang met bijna dezelfde snelheid als rechtstreeks op de hardware, maar delen en migreren zijn moeilijker

Een hulpprogramma zoals QEMU kan een Intel e1000-netwerkkaart emuleren. Het gewone gaststuurprogramma schrijft naar bekende registers; het hulpprogramma voert het effect uit. Frequente registertoegang kan veel overgangen naar de hypervisor en softwarebewerkingen veroorzaken.

Een virtio-stuurprogramma wisselt daarentegen verzoeken uit via wachtrijen in gedeeld geheugen. Het kan meerdere bewerkingen in de wachtrij plaatsen en de achterliggende component één keer informeren. De vmxnet3 van VMware en VMBus-apparaten van Hyper-V volgen verwante ontwerpen die rekening houden met virtualisatie. Een paravirtueel apparaatstuurprogramma betekent niet dat de hele gastkernel paravirtuele CPU-bewerkingen moet gebruiken.

Bij rechtstreekse apparaattoewijzing beschikt het gastbesturingssysteem over een fysiek apparaat of een virtuele SR-IOV-functie. De IOMMU beperkt DMA tot het geheugen van de VM. Rechtstreekse toewijzing vermindert tussenkomst van software, maar het overdragen van de apparaattoestand naar een andere host kan livemigratie moeilijk maken.

Behandel virtuele schijven als beheerde toestand

Een virtuele schijf is meestal een bestand op de host, zoals qcow2, VMDK of VHDX, of een opslagvolume. Images met kopiëren bij schrijven laten veel gastbesturingssystemen een basis delen terwijl afzonderlijke wijzigingen worden vastgelegd. Momentopnamen kunnen de schijftoestand goedkoop bewaren, en een volledige momentopname van een draaiende VM heeft ook de uitvoerings- en geheugentoestand nodig. Klonen en migratie steunen op het vermogen van de hypervisor om deze representaties te beheren.

Zoek de grens die een aanvaller moet oversteken

Een gecompromitteerde gastkernel beheerst die VM al, maar om de host te bereiken is een ontsnapping uit een virtuele machine of een andere doorbroken grens nodig. De VENOM-kwetsbaarheid uit 2015 trof de geëmuleerde diskettestationcontroller van QEMU en kon gastcode laten uitvoeren in het QEMU-proces van de host. Door apparaatemulatie in een afzonderlijk proces met een sandbox te houden, worden de bevoegdheden beperkt die via zo'n fout worden blootgesteld.

Gedeelde CPU-caches, vertakkingsvoorspellers en geheugenbussen creëren ook zijkanalen. Spectre en L1TF lieten zien dat isolatie niet alleen op basis van paginakoppelingen kan worden beoordeeld. Maatregelen omvatten processor- en microcode-updates, het wissen van relevante toestand tussen gastbesturingssystemen en het vermijden dat verschillende klanten tegelijk op verwante hardwarethreads van één processorkern worden geplaatst.

Vertrouwelijke gegevensverwerking, waaronder AMD SEV-SNP en Intel TDX, beschermt gastgeheugen tegen de hypervisor met versleutelingssleutels die de hardware bewaart en ondersteunt attestatie van de gestarte omgeving. Dit breidt de vertrouwensgrens uit tegen een gecompromitteerde host of beheerder. Het verwijdert niet elk zijkanaal of elke manier waarop een host de dienstverlening kan onderbreken. VM-beveiliging blijft afhankelijk van de hypervisor, apparaatinterfaces, hardware en de configuratie daarvan.

Belangrijkste punten

  • Emulatie bevordert compatibiliteit; paravirtuele wachtrijen verminderen herhaalde overgangen naar de hypervisor.
  • Rechtstreekse apparaattoewijzing vereist dat de IOMMU de DMA van het apparaat begrenst.
  • Virtuele schijven en opgeslagen machinetoestand ondersteunen momentopnamen en migratie.
  • Fouten in apparaatmodellen kunnen een ontsnapping uit een virtuele machine mogelijk maken.
  • Gedeelde hardware kan informatie lekken zonder een gewone schending van geheugentoegangsrechten.
  • Vertrouwelijke gegevensverwerking beschermt gastgeheugen tegen de host binnen de garanties van de hardware.
5

Isoleer toepassingen met containers

Containers bouwen een geïsoleerde omgeving rond gewone processen op de hostkernel. Hun eigen weergaven, bronbudgetten en bevoegdheden komen van verschillende kernelfuncties en vereisen daarom elk afzonderlijke aandacht. Lees naamruimtekoppelingen en instellingen van controlegroepen en verbind die daarna met privilegebeperkingen. Gebruik de grens van de gedeelde kernel om te bepalen waar containers, VM's of een combinatie bij een werklast passen.

5.1 Beperk met naamruimten wat een proces kan zien

Een Linux-container is een verzameling processen die de hostkernel gebruikt met beperkte weergaven en privileges. Een container heeft geen afzonderlijke kernel of geëmuleerde computer. Naamruimten geven processen eigen instanties van bronnen die anders globaal zouden zijn.

Koppel elke naamruimte aan zijn weergave
NaamruimteWat die scheidt
KoppelingGekoppelde bestandssystemen en de zichtbare bestandsboom
PIDProcesnummers en zichtbaarheid van processen
NetwerkInterfaces, adressen, routes, poorten en firewallregels
UTSHostnaam en NIS-domeinnaam
IPCSystem V IPC-objecten en POSIX-berichtenwachtrijen
GebruikerKoppelingen van gebruikers- en groeps-ID's en afgebakende privileges
CgroupHet zichtbare deel van de cgroup-hiërarchie
TijdOffsets voor de monotoon oplopende klok en de opstartklok

clone() met naamruimtevlaggen maakt een kindproces in geselecteerde nieuwe naamruimten. unshare() scheidt de naamruimtecontext en setns() sluit zich aan bij een bestaande naamruimte via een descriptor, zoals een descriptor die is geopend vanuit /proc/1234/ns/net. Opnieuw koppelen aan een PID-naamruimte beïnvloedt latere kindprocessen zonder de aanroeper te verplaatsen. Voor tijdnaamruimten bereidt unshare(CLONE_NEWTIME) ook een naamruimte voor latere kindprocessen voor; setns() kan de aanroeper naar een bestaande tijdnaamruimte verplaatsen. Tijdnaamruimten worden met unshare() aangemaakt.

Zo gebruikt unshare --pid --fork --mount-proc bash --fork om de shell binnen de nieuwe PID-naamruimte aan te maken. Die shell is daar PID 1, ook als de host-PID 48213 is. PID 1 adopteert weesprocessen; als het eindigt, beëindigt de kernel de overige processen van de naamruimte. Processen in een bovenliggende naamruimte kunnen onderliggende processen zien, terwijl processen binnen de naamruimte niet naar buiten kunnen kijken in bovenliggende PID-naamruimten.

Scheid bestanden en netwerken

Een naamruimte voor bestandssysteemkoppelingen geeft een eigen koppellijst. Een uitvoeringsomgeving stelt een bestandsboom samen en maakt die met pivot_root tot root. Een container kan /etc en /usr van een andere Linux-distributie gebruiken terwijl hij nog steeds de hostkernel aanroept. chroot alleen verandert slechts het startpunt voor het opzoeken van paden; het is geen veilige grens tegen een geprivilegieerd proces.

Een nieuwe netwerknaamruimte heeft een loopbackinterface. Een uitvoeringsomgeving kan die verbinden via een veth-paar, met één eindpunt binnen de container en een ander verbonden met een brug op de host. Door afzonderlijke stacks kunnen twee containers allebei op poort 80 luisteren zonder om de poort van één naamruimte te concurreren.

Vertaal identiteiten over een gebruikersnaamruimte heen

Een regel in /proc/<pid>/uid_map vermeldt de eerste interne ID, de eerste externe ID en de lengte van het bereik. De regel 0 100000 65536 koppelt interne ID's 0–65535 aan host-ID's 100000–165535. Interne UID 1000 wordt dus extern aan 101000 gekoppeld. ID's zonder bruikbare koppeling worden normaal weergegeven als de overloop-UID 65534.

Root binnen die naamruimte heeft privileges voor bronnen die door die naamruimte worden beheerd, geen bevoegdheid op de hele host. Een kernelmodule laden of de echte systeemklok wijzigen vereist nog steeds privileges in de oorspronkelijke gebruikersnaamruimte. Een UID-koppeling beschermt een geprivilegieerde besturingssocket van de uitvoeringsomgeving niet als die aan de container wordt gegeven.

Een eigen weergave beperkt ook het verbruik niet. Een proces met eigen PID- en koppelnaamruimten kan nog steeds CPU en RAM verbruiken. Cgroups beperken hoeveelheden, terwijl privilegebeperkingen en seccomp bewerkingen beperken.

Belangrijkste punten

  • Containers gebruiken hostkernelprocessen met eigen weergaven van bronnen.
  • De acht typen naamruimten scheiden verschillende soorten globale toestand.
  • Opnieuw koppelen aan een PID-naamruimte en unshare van tijdnaamruimten beïnvloeden latere kindprocessen; met setns kun je rechtstreeks een tijdnaamruimte binnengaan.
  • PID 1 heeft speciale taken rond de levenscyclus binnen zijn naamruimte.
  • Gebruikersnaamruimten vertalen ID's en bakenen bevoegdheden af.
  • Eigen weergaven vereisen afzonderlijke beperkingen van bronnen en privileges.

5.2 Beperk met controlegroepen hoeveel bronnen een proces kan gebruiken

Een controlegroep, of cgroup, groepeert processen om brongebruik te registreren en te beheersen. Naamruimten bepalen hun weergave; cgroups beheren hoeveelheden zoals CPU-tijd, geheugen en het aantal taken. Kindprocessen erven de groep van hun ouderproces en de hiërarchie voorkomt dat een onderliggende groep aan de grenzen van een bovenliggende groep ontsnapt.

Lees de bestanden van cgroup v2

Cgroup v2 gebruikt één gemeenschappelijke hiërarchie, normaal op /sys/fs/cgroup. Een bovenliggende groep schakelt controllers voor onderliggende groepen in via cgroup.subtree_control, bijvoorbeeld +cpu +memory +pids. Afzonderlijke bestanden in elke onderliggende groep bevatten grenzen en tellers.

Controllers omvatten cpu, cpuset, memory, io, pids, hugetlb en rdma. Ze beheren CPU-tijd, plaatsing op CPU's en geheugenknooppunten, gewoon geheugen, blok-I/O, het aantal taken, grote pagina's en RDMA-bronnen. Prestatiegebeurtenissen die rekening houden met cgroups ondersteunen metingen, en cgroup.freeze pauzeert de uitvoering van een groep.

Onderscheid een CPU-bovengrens van een aandeel

cpu.max bevat quotum en periode in microseconden. 50000 100000 staat per 100 ms 50 ms CPU-uitvoering toe, gelijk aan de helft van één CPU. 200000 100000 staat de hoeveelheid tijd van twee CPU's toe, eventueel verdeeld over processorkernen. max 100000 betekent geen quotumbovengrens. Zodra het quotum is verbruikt, wacht de groep op de volgende periode, ook als een CPU niets doet.

cpu.weight stelt bij concurrentie een relatief aandeel in, van 1 tot 10.000 met standaardwaarde 100. Voor op gelijke wijze geplaatste groepen die kunnen draaien op vier CPU's, verdelen de gewichten 100 en 300 de beschikbare tijd als 1:3: ongeveer één CPU en drie CPU's. Als de zwaardere groep niets meer doet, kan de andere alle vier gebruiken, tenzij een andere beperking ingrijpt. Een gewicht is geen reservering of harde bovengrens.

Beperk uitputting van geheugen en taken

memory.high oefent boven zijn drempel druk uit om geheugen terug te winnen en vertraagt taken. memory.max stelt een harde grens. De kernel probeert eerst geheugen terug te winnen, waaronder cache en beschikbare wisselruimte. Als hij niet genoeg kan terugwinnen, beëindigt de OOM-afhandeling van de cgroup een daarvoor in aanmerking komend proces binnen de getroffen groep.

Bij een memory.max van 512M is de grens 536.870.912 bytes, of 512 MiB. Een proces met een geheugenlek kan terugwinning en uiteindelijk beëindiging door de OOM-killer veroorzaken, maar het slachtoffer wordt door de kernel gekozen en is niet gegarandeerd dat proces. De groepsgrens houdt de gebeurtenis binnen de groep in plaats van een niet-gerelateerd hostproces te kiezen.

pids.max telt processen en threads. Bij een grens van 100 mislukt verdere aanmaak met EAGAIN, waardoor de groei van het aantal taken door een forkbom wordt ingeperkt. Een I/O-grens zoals 8:0 rbps=10485760 in io.max begrenst lezen van blokapparaat 8:0 tot 10 MiB/s.

Deze bestanden verbergen geen hostprocessen of bestandsnamen. Ook kunnen /proc/meminfo en hulpmiddelen die dat bestand lezen het host-RAM tonen in plaats van memory.max; het weergegeven totaal alleen bewijst niet dat een cgroup geen grens heeft. Bronmetingen moet je lezen op de laag die de grens afdwingt.

Belangrijkste punten

  • Cgroup v2 past bronbeperkingen toe via één gemeenschappelijke hiërarchie.
  • Een onderliggende groep blijft beperkt door de grenzen van bovenliggende groepen.
  • cpu.max is een hard quotum; cpu.weight is een relatief aandeel bij concurrentie.
  • memory.high oefent druk uit; memory.max kan leiden tot lokale beëindiging door de OOM-killer.
  • pids.max telt zowel threads als processen.
  • Cgroup-grenzen creëren geen eigen weergaven van hostbronnen.

5.3 Beperk de bevoegdheden van containers en kies tussen containers en virtuele machines

Een bruikbare containergrens combineert weergaven, bronbeperkingen en beperkte bevoegdheden. Een eigen bestandsboom alleen houdt gevaarlijke systeemaanroepen niet tegen, en een CPU-quotum houdt toegang tot een blootgesteld hostbestand niet tegen. De hostkernel dwingt elk van deze controles af.

Verminder de bevoegdheden van het proces

Een uitvoeringsomgeving combineert naamruimten, cgroups en een bestandssysteemimage met programma's en bibliotheken. Ze kan de grens versterken door:

  • De werklast niet als root uit te voeren of container-ID's via een gebruikersnaamruimte te koppelen.
  • Afzonderlijke Linux-privileges te laten vervallen, vooral ruime bevoegdheden zoals CAP_SYS_ADMIN en CAP_SYS_MODULE.
  • Seccomp toe te passen om onnodige aanroepen te beperken.
  • Een SELinux- of AppArmor-beleid toe te passen.
  • Het rootbestandssysteem waar praktisch mogelijk alleen-lezen te maken.
  • no_new_privs in te stellen zodat setuid-uitvoering privileges niet kan verhogen.

Elke controle dekt een andere route af. Een alleen-lezenrootbestandssysteem staat nog steeds toegestane netwerkbewerkingen toe; een seccomp-filter staat nog steeds de aanroepen op zijn lijst toe. Het ontwerp moet passen bij de bewerkingen die de toepassing daadwerkelijk nodig heeft.

Herken het risico van een gedeelde kernel

Alle gewone containers delen de hostkernel. Een bereikbare kernelfout kan daardoor de host en andere containers compromitteren. In een VM geeft misbruik van de gastkernel controle over dat gastbesturingssysteem; om de host te bereiken moet ook de grens van de hypervisor of een apparaat worden doorbroken.

Root binnen een container is bijzonder gevoelig. Zonder gebruikersnaamruimte is die voor de hostkernel UID 0, beperkt door afzonderlijke privileges, filters en verplicht beleid. Geprivilegieerde modus of toegang tot het rootbestandssysteem van de host kan die beperkingen wegnemen. Een besturingssocket van de uitvoeringsomgeving die eigendom is van root is ook gevaarlijk: de client ervan kan de uitvoeringsomgeving vragen geprivilegieerde handelingen uit te voeren. Root in de container koppelen aan een ongeprivilegieerde host-ID maakt die socket niet veilig en verwijdert geen kernelkwetsbaarheden.

Kies een grens voor de werklast
BehoefteGeschikte grensReden
Vaak uitgerolde Linux-services van één teamBeperkte containersSnel starten en weinig overhead op één kernel
Code van klanten die elkaar niet vertrouwenVM's of micro-VM'sAfzonderlijke gastkernels verminderen blootstelling via een gedeelde kernel
Een toepassing die alleen op Windows werkt op Linux-hostsVMDe werklast heeft een andere kernel nodig

Een Linux-container heeft een Linux-kernel nodig. Platforms op Windows en macOS bieden daarom vaak een Linux-VM onder Linux-containers. VM's starten een besturingssysteem op en wijzen voor elke kernel geheugen toe; containers starten gewone processen en kunnen werklasten dichter op elkaar plaatsen.

Herken tussenliggende ontwerpen

gVisor handelt veel containersysteemaanroepen af in een kernel in gebruikersruimte, waardoor minder direct contact met de hostkernel nodig is. Kata Containers geeft elke sandbox, meestal een Kubernetes-pod, een lichtgewicht VM; containers in die sandbox delen de gastkernel ervan. Firecracker levert micro-VM's met een minimaal apparaatmodel voor platforms die functies of containerwerklasten uitvoeren, waaronder AWS Lambda.

Cloudsystemen plaatsen containers vaak binnen VM's: een VM scheidt klanten, terwijl containers de toepassingen van één klant ordenen. De gastkernels en de hostkernel blijven gescheiden, dus een ontsnapping uit een container binnen een VM bewijst op zichzelf geen ontsnapping uit de hypervisor.

Belangrijkste punten

  • Containerisolatie vereist weergaven, bronbeperkingen en privilegebeperkingen.
  • Alle gewone containers op een host delen de kernel ervan.
  • Een UID-koppeling zonder rootrechten op de host vermindert bevoegdheden maar kan kernelfouten niet verhelpen.
  • Toegang tot een geprivilegieerde besturingssocket van de uitvoeringsomgeving kan controle over de host geven.
  • VM's kunnen een andere kernel meebrengen; containers gebruiken de kernel onder hen.
  • gVisor, Kata en Firecracker voegen verschillende grenzen rond werklasten toe.
  • Containers binnen VM's combineren een hoge dichtheid aan toepassingen met afzonderlijke gastkernels.

Bescherming, isolatie en virtuele machines: voorbeelden

5 Walkthroughs

1

Volg een verzoek over de kernelgrens

16 stappen
Volg uitvoering, argumentcontroles, geheugentoegangsrechten en verdediging tegen exploits in een kleine service.
  1. 1
    IntroductieBegin met een draaiende toepassing

    Een rapportageservice besteedt het grootste deel van zijn tijd aan berekeningen in gebruikersmodus. De service heeft de kernel alleen nodig voor beschermd werk, zoals een bestand openen of een koppeling regelen.

    Volg wat verandert wanneer de uitvoering die grens passeert: het CPU-privilegeniveau verandert, maar de identiteit van de aanroeper en de geldigheid van het verzoek moeten nog steeds worden gecontroleerd. Volg daarna de afzonderlijke bescherming voor geheugen, apparaten en uitvoerbare code.

  2. 2
    UitlegVoer gewone code rechtstreeks uit

    De CPU voert optellingen, laadbewerkingen en sprongen van de service rechtstreeks uit. De hardware controleert tijdens de uitvoering privileges en geheugentoegangsrechten; de kernel keurt niet elke instructie met software goed.

    Een poging om een paginatabel te vervangen of interrupts uit te schakelen moet een trap veroorzaken. Anders zou het programma dezelfde beperkingen kunnen verwijderen die het moeten begrenzen. Deze combinatie is beperkte directe uitvoering.

  3. 3
    UitdagingEen service stopt met verzoeken doen

    De service raakt vast in een eindeloze lus in gebruikersmodus. Er volgt geen enkele systeemaanroep meer. Kan de scheduler nog steeds een ander gereed proces uitvoeren?

    ---reveal---

    Ja. Een hardwaretimerinterrupt gaat naar de kernel zonder dat de service hoeft mee te werken. De scheduler kan een ander proces kiezen. De timer programmeren en interrupts uitschakelen vereisen privileges, dus kan de vastgelopen service de processorkern niet behouden door systeemaanroepen te vermijden.

  4. 4
    UitlegVraag om een beschermde dienst

    Om een bestand te lezen plaatst de wrapperfunctie in de bibliotheek een aanroepnummer, descriptor, bufferadres en lengte in registers en voert daarna de systeemaanroepinstructie van de architectuur uit.

    De kernel slaat de gebruikerstoestand op, kiest de afhandelaar en haalt de identificatiegegevens van de aanroeper uit het huidige proces. Binnenkomen met kernelprivileges is slechts het begin: de afhandelaar moet nog steeds beslissen of deze aanroeper en deze argumenten zijn toegestaan.

  5. 5
    VoorbeeldControleer de volledige bestemming

    Stel dat de service read(fd, buf, 8192) vraagt om bytes naar zijn buffer te kopiëren. Het is niet voldoende dat de eerste byte geldig is: de kopieerbewerking kan een paginagrens overschrijden en in een verboden bereik terechtkomen.

    De kernel moet de volledige bestemming die voor de overdracht nodig is controleren en veilig benaderen. Gecontroleerde Linux-routines voor kopiëren van en naar gebruikersgeheugen handelen ongeldige gebruikersadressen af zonder toe te staan dat de gevraagde kopieerbewerking kernelgeheugen overschrijft.

  6. 6
    UitdagingEen verzoek gebruikt de verkeerde soort toegang

    De buffer is geldig, maar de service probeert write() met een descriptor die met O_RDONLY is geopend. Wat moet de kernel controleren en moet het proces eindigen?

    ---reveal---

    Hij controleert de aan de descriptor verleende toegang en wijst de schrijfbewerking onder Linux af met EBADF. Dit is een foutresultaat dat het programma kan afhandelen. De aanroep is correct de kernel binnengegaan, maar de descriptor bevat het gevraagde recht niet.

  7. 7
    KernpuntHoud een gecontroleerd pad gekoppeld aan zijn object

    Een hulpprogramma controleert de rechten op een pad en opent het later met hogere privileges. Tussen de twee bewerkingen kan een ander proces de directoryvermelding vervangen. Een gekopieerde padstring voorkomt die vervanging niet.

    Dit is een TOCTTOU-raceconditie. Open met de bedoelde identificatiegegevens en gebruik een methode om het object te verkrijgen die controleert wat daadwerkelijk wordt geopend; gebruik O_NOFOLLOW wanneer symbolische koppelingen ongewenst zijn.

  8. 8
    UitlegLaat koppelingen latere toegang bepalen

    Zodra een koppeling is verleend, verlopen laad- en opslagbewerkingen via de MMU zonder een systeemaanroep per byte. De MMU controleert de schrijf-, gebruikers-/supervisor- en uitvoerrechten van de actieve paginatabel.

    Een alleen-lezengebruikerspagina beschermt de inhoud tegen wijzigingen, maar laat het proces die nog steeds lezen. Om gegevens voor dat proces geheim te houden, moet de koppeling ook lezen weigeren, bijvoorbeeld doordat ze ontbreekt of alleen voor de supervisor toegankelijk is.

  9. 9
    VoorbeeldInterpreteer twee schrijffouten op alleen-lezenpagina's

    De service schrijft eerst naar zijn codepagina en daarna naar gegevens die na fork() worden gedeeld. Beide pagina's zijn alleen-lezen, dus veroorzaken beide opslagbewerkingen aanvankelijk een fout.

    De administratie van de kernel onderscheidt de uitkomsten. Een ongeoorloofde schrijfbewerking naar code leidt normaal tot SIGSEGV. Een geldige gegevensfout door kopiëren bij schrijven leidt tot een privékopie en een opnieuw gestarte instructie. De hardware meldt de schending; de administratie van de kernel bepaalt of die kan worden hersteld.

  10. 10
    UitdagingEen apparaat passeert de geheugengrens

    De service wordt begrensd door CPU-paginatabellen, maar een defect apparaat schrijft rechtstreeks naar RAM dat daar niets mee te maken heeft. Waarom hielden die CPU-koppelingen het niet tegen?

    ---reveal---

    DMA verloopt niet via de MMU van de CPU. Het apparaat heeft een IOMMU-koppeling nodig die zijn eigen adressen beperkt. Laad- en opslagbewerkingen van de CPU beschermen vormt één grens; overdrachten vanuit apparaten begrenzen vereist de bijbehorende apparaatgrens.

  11. 11
    UitlegBlokkeer uitvoering van geïnjecteerde bytes

    Een bufferoverloop kan een opgeslagen retouradres overschrijven. Door de stack als NX te markeren worden geïnjecteerde stackinstructies niet-uitvoerbaar, zodat een sprong daarheen een fout veroorzaakt.

    W^X voegt de regel toe dat geen pagina tegelijk beschrijfbaar en uitvoerbaar mag zijn. Een just-in-timecompiler moet gegenereerde code schrijven en daarna de rechten omschakelen voordat hij de code uitvoert. Deze controles beperken misbruik, terwijl de oorspronkelijke schrijfbewerking buiten de grenzen nog moet worden verholpen.

  12. 12
    VerbandMaak bestaande code moeilijk te vinden

    Een aanvaller kan instructies hergebruiken die al in uitvoerbare bibliotheken staan, in plaats van nieuwe instructies te injecteren. ROP verbindt deze korte gadgets tot een nieuwe berekening.

    ASLR maakt hun adressen moeilijker te voorspellen. Een uitgelekt adres van een bekende bibliotheek onthult de basis en bekende offsets van die bibliotheek, maar onthult geen onafhankelijk gerandomiseerde stack. Willekeurige indeling werkt het best wanneer fouten de gekozen adressen niet kunnen onthullen.

  13. 13
    UitdagingBeperk een gecompromitteerd weergaveproces

    Een weergaveproces is overgenomen. De stack is NX en de adressen van de bibliotheken zijn nu bekend bij de aanvaller. Een seccomp-beleid blokkeert nog steeds aanroepen om programma's te starten. Kan codehergebruik die beperking eenvoudig verwijderen?

    ---reveal---

    Nee. Uitvoerbare instructies hergebruiken verwijdert een geïnstalleerd seccomp-filter niet. Het proces blijft beperkt tot toegestane aanroepen, dus om een ander programma te starten is een verdere manier nodig om het filter te omzeilen of een andere grens te doorbreken.

  14. 14
    UitlegScheid opstartcontroles van gebeurtenisregistraties

    Beveiligd opstarten verifieert handtekeningen voordat het de controle overdraagt aan de volgende vertrouwde opstartcomponent. Opstarten met integriteitsmetingen legt hashes van componenten vast, vaak met een TPM, zodat een externe controleur kan beoordelen wat is geladen.

    Registratie in een auditlogboek dient een later doel: ze legt gebeurtenissen vast zoals mislukte aanmeldingen en commando's met verhoogde privileges. Kopieën buiten de host beschermen helpt dat bewijsmateriaal te bewaren als een indringer bevoegdheid krijgt om lokale logboeken te wissen.

  15. 15
    UitdagingKies de ontbrekende beschermingslaag

    Een rootservice koppelt gevoelige gegevens als alleen-lezen aan een niet-vertrouwd werkproces en beperkt de systeemaanroepen van dat werkproces. Het werkproces leest vervolgens de gegevens. Welke beslissing stelde ze bloot?

    ---reveal---

    De voor gebruikers leesbare koppeling stelde de inhoud bloot. Alleen-lezen beschermt tegen wijzigingen en een systeemaanroepfilter blokkeert geen gewone laadbewerkingen vanaf een toegestane pagina. De kernel moet het werkproces die koppeling of het leesrecht erop weigeren om de vertrouwelijkheid te bewaren.

  16. 16
    SamenvattingZoek de controle die de handeling bepaalt

    Volg bij een onbekende fout de bewerking: CPU-instructie, kernelverzoek, toegang tot gekoppeld geheugen of apparaat-DMA. Elk bereikt een ander afdwingingspunt.

    Vraag daarna wat de aanvaller al beheerst. Een rootidentiteit, uitvoerbare gadgets en een geldige descriptor geven verschillende bevoegdheden. Een nuttige diagnose noemt precies de ontbrekende controle in plaats van aan te nemen dat één geslaagde verdediging elk pad beschermt.

2

Volg een aanmelding tot procesidentificatiegegevens

14 stappen
Verbind wachtwoordverificatie en andere factoren met de identiteit die een draaiend programma daadwerkelijk heeft.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieMaak van een aanmelding een identiteit voor uitvoering
  2. 2
    UitlegStel groepen in voordat je afstand doet van rootrechten
  3. 3
    VoorbeeldVolg een setuid-hulpprogramma voor wachtwoorden
  4. 4
    UitdagingWerk een account bij tijdens een sessie
  5. 5
    UitlegBereken verificatiegegevens opnieuw zonder een wachtwoord terug te halen
  6. 6
    VoorbeeldMeet het gokwerk voor één account
  7. 7
    VoorbeeldHerhaal het werk voor verschillende salts
  8. 8
    UitdagingEen blokkering bereikt het gestolen bestand niet
  9. 9
    UitlegOnderscheid een code van een sitegebonden handtekening
  10. 10
    VoorbeeldKies de noemer voordat je rekent
  11. 11
    UitdagingTwee geheimen zijn nog steeds één factortype
  12. 12
    VerbandLaat de kernel een lokale andere partij identificeren
  13. 13
    UitdagingZoek waar de sterkte van de aanmelding niet meer meetelt
  14. 14
    SamenvattingHoud het bewijs en de resulterende rechten gescheiden
3

Werk een toegangsbeslissing door

15 stappen
Gebruik identificatiegegevens, directorybewerkingen en beleid samen om een toegangsresultaat te verklaren.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieNoem de bewerking en het bijbehorende object
  2. 2
    UitlegOrden rechten per object of per subject
  3. 3
    VoorbeeldGeef een beperkte bevoegdheid door aan een werkproces
  4. 4
    UitdagingWijzig rechten na het verlenen van een handle
  5. 5
    UitlegKies een klasse voordat je de bits optelt
  6. 6
    VoorbeeldMaak een bestand aan onder een masker
  7. 7
    VoorbeeldTest toegang met de resulterende rechtennotatie
  8. 8
    UitdagingVerwijder een naam zonder de gegevens te lezen
  9. 9
    TipLees zowel de ACL-grens als de vermelding
  10. 10
    UitlegVoeg beleid toe waarvan de eigenaar niet kan afwijken
  11. 11
    VoorbeeldVolg vertrouwelijke informatie tussen niveaus
  12. 12
    UitdagingVerklaar geweigerde leestoegang voor een rootservice
  13. 13
    VerbandWijzig een functie via rollen
  14. 14
    UitdagingVolg een bevoegdheid door meerdere controles
  15. 15
    SamenvattingVolg de beslissing in een bruikbare volgorde
4

Voer een gastbesturingssysteem uit zonder de host uit handen te geven

17 stappen
Volg CPU-onderschepping, paginavertaling en apparaatafhandeling over de grens van een virtuele machine.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieGeef een kernel een schijnbaar eigen computer
  2. 2
    UitlegPlan een virtuele processor in
  3. 3
    UitdagingBeoordeel een bewering over consolidatie
  4. 4
    UitlegEmuleer alleen de besturingstoestand van het gastbesturingssysteem
  5. 5
    VoorbeeldVerhelp een instructie die geen trap veroorzaakt
  6. 6
    UitdagingHoud ring 0 van het gastbesturingssysteem onder controle
  7. 7
    UitlegHoud de drie adresnamen uit elkaar
  8. 8
    VoorbeeldPas eerst de koppeling van het gastbesturingssysteem toe
  9. 9
    VoorbeeldPas daarna de koppeling van de hypervisor toe
  10. 10
    UitdagingVertaal een andere byte in de pagina
  11. 11
    VerbandKies waar de gecombineerde koppeling wordt bijgehouden
  12. 12
    KernpuntWin geheugen terug met hulp van het gastbesturingssysteem
  13. 13
    UitlegWeeg apparaatcompatibiliteit af tegen minder overgangen
  14. 14
    UitdagingVerminder frequente apparaatovergangen naar de hypervisor
  15. 15
    UitlegBescherm een grens die groter is dan paginakoppelingen
  16. 16
    UitdagingBereid een draaiende machine voor op een andere host
  17. 17
    SamenvattingHoud controle bij elke virtuele interface
5

Bouw en beoordeel een containergrens

16 stappen
Combineer naamruimteweergaven, bronbudgetten en privilegebeperkingen en kies daarna een geschikte isolatielaag.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieOnderscheid drie taken binnen een container
  2. 2
    UitlegGeef processen eigen weergaven van bronnen
  3. 3
    VoorbeeldStart het eerste kindproces in een PID-naamruimte
  4. 4
    VoorbeeldKoppel een interne identiteit aan de host
  5. 5
    UitdagingKies de weergave die een conflict oplost
  6. 6
    UitlegLees een hard CPU-budget
  7. 7
    VoorbeeldVerdeel een bovenliggend budget tussen onderliggende groepen
  8. 8
    UitdagingLaat een concurrerende groep niets meer doen
  9. 9
    UitlegBeperk de groei van geheugen en taken
  10. 10
    UitdagingLees de grens op de laag die die afdwingt
  11. 11
    UitlegBeperk wat het proces mag aanvragen
  12. 12
    UitdagingEen gekoppelde UID bereikt nog steeds een geprivilegieerde service
  13. 13
    VerbandKies waar een afzonderlijke kernel nodig is
  14. 14
    UitlegHerken toegevoegde sandboxlagen
  15. 15
    UitdagingPlaats niet-vertrouwde taken met bronbeperkingen
  16. 16
    SamenvattingKoppel elke behoefte aan het bijbehorende mechanisme

Bescherming, isolatie en virtuele machines: oefenvragen

60 Oefenvragen in 6 sets

Set 1: Volg identiteiten en authenticatie10 Oefenvragen

Vraag 1 van 10

Twee lokale accountnamen hebben UID 2400. Hoe onderscheidt de Unix-kernel hun identiteit als bestandseigenaar?
  1. Hij vergelijkt de spelling van hun aanmeldnamen.
  2. Hij geeft elk een nieuwe UID wanneer de shell start.
  3. Hij vergelijkt hun wachtwoordhashalgoritmen.
  4. Hij behandelt beide als dezelfde numerieke gebruikersidentiteit.
Toon antwoordVerberg antwoord
Antwoord: D
De kernel controleert numerieke UID's in plaats van accountnaamstrings. Beide namen duiden voor deze toegangscontroles daarom dezelfde eigenaar aan. Verschillende wachtwoordverificatiegegevens kunnen de authenticatie beïnvloeden, maar creëren geen afzonderlijke kernelgebruikersidentiteiten wanneer de UID in beide procesidentificatiegegevens gelijk is.

Vraag 2 van 10

Een aanmeldhulpprogramma verandert definitief van UID 0 naar UID 2400 voordat het zijn aanvullende groepen vervangt. Waarom is deze volgorde onveilig?
  1. Het kan de bevoegdheid verliezen die nodig is om geprivilegieerde groepen te vervangen.
  2. Het verandert alle bestaande bestanden naar de primaire groep van de gebruiker.
  3. Het maakt van de werkelijke UID van de gebruiker de oude groeps-ID.
  4. Het geeft de gebruiker daarna toestemming om elke groep in te stellen.
Toon antwoordVerberg antwoord
Antwoord: A
Aanvullende groepen wijzigen vereist privileges, dus kan eerst definitief afstand doen van rootrechten de latere groepswijziging laten mislukken. Het proces kan de oude geprivilegieerde groepslidmaatschappen behouden. Bestandseigendom wordt niet herschreven door procesidentificatiegegevens te wijzigen; het probleem betreft de gegevens die de shell erft.

Vraag 3 van 10

Nora wordt toegevoegd aan de groep archive terwijl haar terminal open blijft. Waarom kan een commando dat vanuit die terminal wordt gestart toch niet slagen voor een controle op de groep archive?
  1. De bestandseigenaar moet eerst de groep archive hernoemen.
  2. Het erft de oude procesgroepslijst van de terminal.
  3. Alleen de werkelijke UID kan een aanvullende groep vastleggen.
  4. Nieuwe kindprocessen verwijderen altijd aanvullende groepen.
Toon antwoordVerberg antwoord
Antwoord: B
De shell behoudt de groepslijst die voor zijn sessie is ingesteld, en een nieuw kindproces erft die lijst. De accountdatabase wijzigen herschrijft de identificatiegegevens van de shell in de kernel niet. Een nieuwe aanmelding stelt normaal de bijgewerkte groepslidmaatschappen in; alleen een ander commando vanuit de oude shell starten doet dat niet.

Vraag 4 van 10

Een gestolen wachtwoorddatabase bevat naast elke hash een andere willekeurige salt. Moeten de salts verborgen blijven om hun belangrijkste bescherming te laten werken?
  1. Ja; ze zijn de ontsleutelsleutels voor de wachtwoorden.
  2. Ja; een openbare salt maakt elke opgeslagen hash omkeerbaar.
  3. Nee; ze voorkomen herbruikbaar hashwerk ook als ze openbaar zijn.
  4. Nee; de salt zelf vervangt het geheime wachtwoord van de gebruiker.
Toon antwoordVerberg antwoord
Antwoord: C
Een salt wordt bewust bij de verificatiegegevens opgeslagen en hoeft niet geheim te zijn. De waarde maakt de hashberekening van elk account verschillend en voorkomt zo herbruikbare vooraf berekende tabellen en gedeeld gokwerk. Een salt is geen versleutelingssleutel, dus geeft kennis van de salt geen bewerking waarmee de hash kan worden ontsleuteld.

Vraag 5 van 10

Een testruimte bevat 81.000.000 even waarschijnlijke wachtwoorden. Een offlineaanvaller controleert er 3.000 per seconde. Hoe lang duurt het om de hele ruimte te doorzoeken?
  1. 13.500 seconden.
  2. 27.000 seconden.
  3. 243.000 seconden.
  4. 270.000 seconden.
Toon antwoordVerberg antwoord
Antwoord: B
Deel 81.000.000 kandidaten door 3.000 controles per seconde. Een volledige doorzoeking duurt dan 27.000 seconden. De vraag gaat over het doorzoeken van de hele ruimte, niet over het gemiddelde stoppunt als de juiste kandidaat gelijkmatig over de ruimte is verdeeld. Door de uitkomst te halveren verwar je deze twee verschillende maten voor de benodigde gokinspanning.

Vraag 6 van 10

Een service voegt per account een unieke openbare salt en een onlineblokkering toe, maar blijft één snelle hash gebruiken. De database met verificatiegegevens wordt gestolen. Welke bescherming ontbreekt nog?
  1. Een kostbare wachtwoordhashmethode voor elke offline gok.
  2. Een tweede onlineblokkering voor de gestolen database.
  3. Versleuteling waarmee de service vergeten wachtwoorden kan terughalen.
  4. Een gemeenschappelijke salt verborgen in het openbare accountnamenbestand.
Toon antwoordVerberg antwoord
Antwoord: A
De aanvaller kan offline gokken zonder contact met de geblokkeerde service en elke snelle hash blijft goedkoop. Unieke salts voorkomen dat één berekening voor meerdere accounts wordt hergebruikt, maar maken de gokpogingen per account niet kostbaar. Een wachtwoordhashmethode met een instelbare kostenfactor pakt die afzonderlijke zwakte aan.

Vraag 7 van 10

Een service die alleen wachtwoorden gebruikt, volgt NIST SP 800-63B-4. Welk beleid past bij de richtlijnen voor minimale lengte en routinematig wijzigen?
  1. Minimaal 8 tekens, met een verplichte wijziging elke kalendermaand.
  2. Minimaal 12 tekens, met één verplicht symbool in elk wachtwoord.
  3. Minimaal 15 tekens, met een verplichte wijziging bij aanwijzingen van compromittering.
  4. Minimaal 15 tekens, met een verplichte wijziging na elke geslaagde aanmelding.
Toon antwoordVerberg antwoord
Antwoord: C
De richtlijn van NIST uit 2025 vereist minimaal 15 tekens voor een wachtwoord dat als enige factor wordt gebruikt en een wijziging wanneer compromittering duidelijk is. Het minimum van acht tekens geldt voor wachtwoorden binnen MFA. Routinematig geplande wijzigingen en verplichte tekencombinaties zijn geen aanbevolen vervanging voor blokkeerlijsten en snelheidslimieten.

Vraag 8 van 10

Een aanmelding vraagt om een wachtwoord en daarna om een pincode die de gebruiker onthoudt. Hoeveel factortypen worden gebruikt?
  1. Twee: ook bezit.
  2. Eén: identiteit.
  3. Twee: één per scherm.
  4. Eén: kennis.
Toon antwoordVerberg antwoord
Antwoord: D
Zowel het wachtwoord als de onthouden pincode bewijst kennis. Twee keer iets vragen creëert geen bezitsfactor, ook niet als de vragen op verschillende schermen verschijnen. MFA vereist verschillende factortypen, zoals een wachtwoord plus bewijs dat je een beveiligingssleutel bezit, niet slechts twee afzonderlijke geheimen van hetzelfde type.

Vraag 9 van 10

In een biometrische test slagen 6 van de 30.000 pogingen van onbevoegden en mislukken 18 van de 900 pogingen van bevoegde gebruikers. Wat zijn FAR en FRR?
  1. FAR 0,02%; FRR 2%.
  2. FAR 2%; FRR 0,02%.
  3. FAR 0,02%; FRR 0,06%.
  4. FAR 0,2%; FRR 20%.
Toon antwoordVerberg antwoord
Antwoord: A
FAR is 6 gedeeld door 30.000, oftewel 0,02%; FRR is 18 gedeeld door 900, oftewel 2%. Elk percentage gebruikt zijn eigen populatie van pogingen. Als je alle pogingen als gemeenschappelijke noemer gebruikt, verberg je de verschillende vragen: hoe vaak onbevoegden binnenkomen en hoe vaak bevoegde gebruikers worden geweigerd.

Vraag 10 van 10

Een aanvaller steelt de database met verificatiegegevens van een service en beheert een valse site die eerder verse TOTP-codes doorgaf. De service vervangt die aanmeldmethode door FIDO2. Kunnen opgeslagen publieke sleutels of antwoorden die voor de valse site zijn verkregen een geldige handtekening voor de echte site leveren?
  1. Publieke sleutels kunnen nieuwe uitdagingen ondertekenen, maar antwoorden voor de valse site zijn niet geldig voor de echte site.
  2. Geen van beide volstaat: publieke sleutels kunnen niet ondertekenen en antwoorden voor de valse site zijn niet geldig voor de echte site.
  3. Publieke sleutels kunnen niet ondertekenen, maar een vers antwoord voor de valse site kan als een TOTP-code worden doorgegeven.
  4. Beide volstaan zolang een uitdaging vers is, omdat de tijd en niet de identiteit van de site de acceptatie bepaalt.
Toon antwoordVerberg antwoord
Antwoord: B
De publieke sleutels in de database verifiëren handtekeningen maar kunnen ze niet maken; de aanvaller mist nog steeds de private ondertekeningssleutel. FIDO2 bindt een antwoord ook aan de bedoelde site, zodat een antwoord voor een valse site niet kan authenticeren bij de echte site. Versheid alleen, waardoor TOTP-codes konden worden doorgestuurd, is hier niet de enige controle.
Set 2: Volg hardware- en kernelgrenzen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een rekenprogramma dat eigendom is van root telt in zijn hoofdfunctie twee gehele getallen op. In welke CPU-modus draait deze toepassingscode normaal?
  1. Kernelmodus.
  2. VMX-rootmodus.
  3. Gebruikersmodus.
  4. Rootmodus.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een gebruikersproces probeert met x86-LIDT een vervangende interrupttabel te installeren. Wat voorkomt dat het de interruptafhandeling overneemt?
  1. De scheduler weigert de volgende tijdschijf.
  2. De CPU veroorzaakt een trap bij de geprivilegieerde instructie.
  3. De C-bibliotheek herschrijft het tabeladres.
  4. De paginacache verwijdert de tabelinhoud.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een proces springt herhaaldelijk naar zijn eigen code en doet geen systeemaanroepen. Hoe kan een ander gereed proces toch CPU-tijd krijgen?
  1. De volgende systeemaanroep kiest automatisch het andere proces.
  2. Sprongen in gebruikersmodus verliezen na genoeg herhalingen privileges.
  3. De MMU telt sprongen en maakt uiteindelijk de codepagina ongeldig.
  4. Een timerinterrupt gaat naar de kernel, die opnieuw kan plannen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een programma opent een bestand als alleen-lezen en roept later write() aan via die descriptor. Welke Linux-fout past bij de ontbrekende toegang van de descriptor?
  1. EBADF.
  2. EFAULT.
  3. EACCES.
  4. EAGAIN.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een geprivilegieerd exporthulpprogramma controleert een pad, pauzeert en opent het daarna. Een ander proces vervangt het pad tijdens de pauze. Welke wijziging pakt de raceconditie aan?
  1. Controleer het pad twee keer vóór openen met volledige privileges.
  2. Kopieer de padtekst en behoud de oorspronkelijke afzonderlijke controle.
  3. Verleng de aanmeldvertraging vóór het starten van het hulpprogramma.
  4. Open het werkelijke object met de bedoelde beperkte identificatiegegevens.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een kernelafhandelaar vertrouwt een door de aanroeper opgegeven gebruikersnaam, controleert de eerste byte van een buffer en kopieert daarna een door de aanroeper opgegeven lengte naar die buffer. Welke volledige oplossing is nodig?
  1. Gebruik identificatiegegevens van de kernel en controleer alleen de eerste bestemmingspagina.
  2. Gebruik identificatiegegevens van de kernel en controleer het volledige bestemmingsbereik.
  3. Vertrouw de gebruikersnaam na controle van het volledige bestemmingsbereik.
  4. Behoud de naamcontrole en kopieer met een instructie in kernelmodus.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een opslagbewerking naar een alleen-lezengegevenspagina veroorzaakt na fork() een fout. De administratie van de kernel markeert de pagina om bij schrijven te worden gekopieerd. Welke reactie behoudt het normale programmagedrag?
  1. Beëindig het proces omdat elke schrijfbewerking naar alleen-lezengeheugen fataal is.
  2. Maak de gedeelde fysieke pagina beschrijfbaar voor beide processen.
  3. Maak een beschrijfbare privékopie en probeer de opslagbewerking opnieuw.
  4. Retourneer EACCES als resultaat van de opslaginstructie.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een proces heeft een alleen-lezen uitvoerbare codepagina zonder kopiëren bij schrijven en een alleen-lezengegevenspagina die na fork() wordt gedeeld en bij schrijven wordt gekopieerd. Opslagbewerkingen naar beide veroorzaken een fout. Een stuurprogramma heeft ook DMA naar een afzonderlijke buffer nodig. Welke reactie bewaart de bedoelde grenzen?
  1. Houd code beschermd, maak een privékopie van de beschreven gegevens en begrens DMA met een IOMMU.
  2. Houd code beschermd, maak een privékopie van de beschreven gegevens en begrens DMA alleen met de CPU-MMU.
  3. Houd code beschermd, maak de gedeelde gegevens ter plaatse beschrijfbaar en begrens DMA met een IOMMU.
  4. Sta na de fout schrijven naar code toe, maak een privékopie van de gegevens en begrens DMA met een IOMMU.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een aanvaller leidt de uitvoering naar geïnjecteerde bytes op een stackpagina die als NX is gemarkeerd. Welke bescherming geldt onmiddellijk?
  1. De geïnjecteerde bytes worden eerst gewist.
  2. Instructies ophalen van die pagina veroorzaakt een fout.
  3. De pagina verhuist naar een willekeurig fysiek paginaframe.
  4. De effectieve UID wordt die van een gewone gebruiker.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een lek onthult een adres binnen een bekende gedeelde bibliotheek. De stack wordt onafhankelijk gerandomiseerd. Wat kan een aanvaller uit het lek afleiden?
  1. De bibliotheekbasis en bekende gadgetoffsets, maar niet de stackbasis.
  2. Zowel de bibliotheekbasis als de onafhankelijke stackbasis.
  3. Alleen de uitgelekte byte, omdat offsets binnen de bibliotheek veranderen.
  4. De stackbasis, maar geen andere adressen binnen de bibliotheek.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Bepaal wie een bron mag gebruiken10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een beheerder wil iedereen bekijken die één databaseobject mag lezen. Welke weergave groepeert die rechten direct?
  1. De lijst met bevoegdheidstokens van elke gebruiker.
  2. De ACL van het databaseobject.
  3. De uitvoeringswachtrij van de scheduler.
  4. De paginatabellen van elk proces.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een werkproces erft een beschrijfbare descriptor voor metrics.bin. De eigenaar verwijdert daarna het schrijfrecht uit de rechtennotatie van het bestand. Wat gebeurt er met gewone schrijfbewerkingen via die descriptor?
  1. Ze kunnen doorgaan met de toegang die bij het openen is verleend.
  2. Ze mislukken zodra de volgende rechtencontrole geen schrijfbit ziet.
  3. Ze gaan alleen door als het werkproces bestandseigenaar wordt.
  4. Ze openen het pad automatisch opnieuw met de UID van het werkproces.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een toezichthoudend proces moet een werkproces leestoegang geven tot één al geopend invoerbestand, het zoeken via bestandsnamen niet toestaan en al zijn eigen overige rechten behouden. Welk ontwerp past daar het best bij?
  1. Deel de volledige accountidentificatiegegevens van het toezichthoudende proces.
  2. Voeg het werkproces toe aan de groep van de invoerdirectory's.
  3. Geef een alleen-lezen bevoegdheidstoken voor het object aan het werkproces.
  4. Verleen een Linux-privilege dat controles op bestandstoegang omzeilt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Welke rechten geeft Unix-rechtennotatie 652 aan de groep van de eigenaar?
  1. Lezen en schrijven.
  2. Alleen schrijven.
  3. Alleen lezen.
  4. Lezen en uitvoeren.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Mina bezit een bestand met rechtennotatie 046. Kan zij het via de eigenaarcontrole lezen als je ACL's en geprivilegieerde uitzonderingen buiten beschouwing laat?
  1. Ja, omdat de groepsklasse leesrecht geeft.
  2. Nee, omdat de eigenaarsklasse geen rechten heeft.
  3. Ja, omdat de klasse voor anderen leesrecht geeft.
  4. Ja, omdat alle drie de klassen worden gecombineerd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een programma vraagt rechtennotatie 666 aan voor een nieuw bestand onder umask 037. Welke rechtennotatie ontstaat?
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Omar heeft gewone schrijf- en uitvoerrechten op de directory van Leena, die een stickybit heeft. Een bestand daarin met rechtennotatie 000 is ook van Leena. Omar is van geen van beide eigenaar en heeft geen uitzonderingsrechten. Kan hij het nu lezen of verwijderen, en zou hij het kunnen verwijderen als alleen de stickybit werd verwijderd?
  1. Nu niet lezen, maar verwijderen kan al en blijft mogelijk nadat de bit is verwijderd.
  2. Lezen en verwijderen kunnen nu allebei omdat de directory schrijf- en uitvoerrecht geeft.
  3. Beide kunnen nu niet en rechtennotatie 000 verhindert verwijderen ook na het verwijderen van de bit.
  4. Nu niet lezen of verwijderen; verwijderen wordt mogelijk nadat de stickybit is verwijderd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

De Unix-controles van een rootservice staan een leesbewerking toe, maar afdwingend SELinux weigert het domein toegang tot het bestandstype. Wat is het resultaat?
  1. UID 0 gaat boven de SELinux-weigering.
  2. De eerdere DAC-controle staat de leesbewerking toe.
  3. Verplicht beleid weigert de leesbewerking.
  4. De leesbewerking wordt vastgelegd maar toch toegestaan.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een proces op niveau Geheim moet geheime aantekeningen naar vertrouwelijke opslag sturen. Het kan rechtstreeks schrijven of een hulpproces op niveau Vertrouwelijk vragen zijn buffer met label Geheim te lezen en daarna naar de opslag te schrijven. Wat gebeurt er volgens Bell–LaPadula met deze twee paden?
  1. Alleen rechtstreeks schrijven mislukt; het hulpproces mag omhoog lezen voordat het op zijn eigen niveau schrijft.
  2. Alleen het hulpproces mislukt; het proces op niveau Geheim mag naar elke bestemming schrijven die het kan lezen.
  3. Beide mislukken: rechtstreeks schrijven is omlaag en het hulpproces leest omhoog.
  4. Beide slagen omdat het hulpproces op niveau Vertrouwelijk naar de eindbestemming kan schrijven.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een bedrijf beheert 72 medewerkers met elk 24 rechten. Zes functierollen zonder overlap bevatten elk 24 rechten; iedere persoon heeft één rol. Hoeveel toewijzingen heeft dit RBAC-ontwerp nodig en waarom?
  1. 216: 72 koppelingen tussen gebruikers en rollen plus 144 tussen rollen en rechten.
  2. 144: alleen de zes verzamelingen koppelingen tussen rollen en rechten tellen mee.
  3. 1.728: elke gebruiker moet nog steeds elk recht rechtstreeks krijgen.
  4. 288: 72 koppelingen tussen gebruikers en rollen plus 216 tussen rollen en rechten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Volg een gastbesturingssysteem via virtuele hardware10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een virtualisatietoepassing is afhankelijk van een gewoon hostbesturingssysteem dat de hardware beheert. Welk hypervisorontwerp is dit?
  1. Type 1, rechtstreeks op hardware.
  2. Gebaseerd op containers.
  3. Type 2, op een host.
  4. Gebaseerd op rechtstreekse apparaattoewijzing.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Acht even grote servers gebruiken elk gemiddeld 7% CPU. Wat kan hun gezamenlijke gemiddelde een consolidatieplanner vertellen?
  1. Ze gebruiken gemiddeld 56%, dus één host kan gegarandeerd aan alle toekomstige vraag voldoen.
  2. Ze gebruiken gemiddeld 7%, omdat gelijktijdige gastbesturingssystemen dezelfde fysieke kernen delen.
  3. Ze gebruiken gemiddeld 87,5%, dus de vraag naar geheugen en apparaten hoeft niet verder te worden gecontroleerd.
  4. Ze gebruiken gemiddeld 56% van één gelijkwaardige machine, maar voor pieken is nog reservecapaciteit nodig.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Onder Intel VT-x draait een gastkernel op ring 0 in VMX-niet-rootmodus. Geeft dat ringnummer de kernel de hardwarebevoegdheden van de hypervisor?
  1. Nee; VMX-rootmodus blijft een afzonderlijke besturingslaag.
  2. Ja; elke instructie op ring 0 behoort tot de hostkernel.
  3. Ja; niet-rootmodus verandert alleen de UID van het gastbesturingssysteem.
  4. Nee; ring 0 is de x86-beschermingsring met de minste privileges.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een instructie van een klassiek gastbesturingssysteem met verlaagde privileges laat een interruptvlag stilzwijgend ongewijzigd in plaats van een trap te veroorzaken. Waarom is eenvoudig onderscheppen en emuleren onvoldoende?
  1. De instructie kost te veel rekenwerk om rechtstreeks uit te voeren.
  2. De hypervisor ontvangt geen gebeurtenis om de bedoelde wijziging van het gastbesturingssysteem te emuleren.
  3. Het gastbesturingssysteem moet de vlag eerst via geneste paginatabellen vertalen.
  4. De hypervisor heeft de fysieke interrupttabel al uit handen gegeven.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een gastbesturingssysteem kan niet worden aangepast en de beschikbare CPU heeft geen geschikte virtualisatieondersteuning. De kernel gebruikt gevoelige instructies die geen trap veroorzaken. Welke benadering kan het gedrag van het gastbesturingssysteem behouden en tegelijk de controle bewaren?
  1. Voer de gastkernel rechtstreeks uit met volledige hostprivileges.
  2. Vervang die instructies door hypercalls in de broncode.
  3. Gebruik geneste paginatabellen om elke CPU-instructie een trap te laten veroorzaken.
  4. Vertaal problematische gastkernelinstructies vóór uitvoering.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Bij pagina's van 4 KiB is virtuele gastpagina 5 gekoppeld aan gastpaginaframe 12, dat is gekoppeld aan machinepaginaframe 29. Welk machineadres hoort bij 0x53D0?
  1. 0x1D3D0.
  2. 0xC3D0.
  3. 0x1D53D0.
  4. 0x533D0.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een VM gebruikt geneste paginering door hardware met drie gastpaginatabelniveaus en vier hypervisorniveaus. Hoeveel geheugenverwijzingen voor paginatabellen zijn bij een volledig ongecachete vertaling vóór de gegevenstoegang nodig, en moet elke wijziging van een gastpaginatabel een trap veroorzaken om een schaduwtabel te synchroniseren?
  1. 7 verwijzingen; geneste paginering door hardware vereist geen schaduwsynchronisatie bij elke wijziging.
  2. 19 verwijzingen; elke wijziging van een gasttabel moet een trap veroorzaken om een softwareschaduwtabel te synchroniseren.
  3. 19 verwijzingen; geneste paginering door hardware vereist geen schaduwsynchronisatie bij elke wijziging.
  4. 24 verwijzingen; elk paar geneste tabellen heeft ongeacht de diepte dezelfde doorlooplengte.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een host boekt geheugen over tussen afzonderlijke klanten. Elk gastbesturingssysteem weet welke gegevens het kan vrijgeven en pagina's delen tussen klanten is verboden. Welke terugwinstrategie gebruikt die kennis, en wat als alle gastbesturingssystemen later hun volledige toegezegde geheugen nodig hebben?
  1. Gebruik blinde uitwisseling door de host; die weet direct welke gastpagina's vrij zijn en voorkomt druk bij volledige vraag.
  2. Gebruik ballooning; dat kan nog steeds niet al het toegezegde RAM bieden als de gezamenlijke actieve vraag de hostcapaciteit overschrijdt.
  3. Gebruik ballooning; dat vergroot de hostcapaciteit blijvend genoeg om elke toegezegde toewijzing na te komen.
  4. Voeg identieke pagina's samen; dat voldoet aan de deelbeperking omdat samengevoegde pagina's aanvankelijk alleen-lezen zijn.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een gaststuurprogramma voor opslag plaatst veel verzoeken in een wachtrij in gedeeld geheugen voordat het een achterliggende component informeert. Welk apparaatmodel illustreert dit?
  1. Een apparaat dat register voor register wordt geëmuleerd.
  2. Een paravirtuele apparaatinterface.
  3. Een fysiek apparaat dat zonder tussenkomst wordt gedeeld.
  4. Een emulator voor een CPU-instructieset.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

VM's hebben correcte eigen paginakoppelingen, maar een aanvaller leidt gegevens af uit de timing van een gedeelde cache. De beheerder overweegt CPU-microcode-updates en wil vermijden dat verschillende klanten op hardwarethreads van dezelfde processorkern draaien. Welke diagnose verbindt de blootstelling met die maatregelen?
  1. Een zijkanaal via gedeelde hardware vereist CPU-maatregelen en zorgvuldige plaatsing op verwante hardwarethreads.
  2. Een ontsnapping via het apparaatmodel vereist alleen gepatchte emulatie; cachetiming kan correcte gastkoppelingen niet passeren.
  3. Een zijkanaal via een gedeelde cache vereist alleen CPU-updates; die verwijderen elk risico van verwante hardwarethreads.
  4. Een zijkanaal via een gedeelde cache vereist alleen scheiding van threads; CPU-kwetsbaarheden hebben dan geen updates nodig.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Interpreteer containerweergaven en -grenzen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een service heeft eigen interfaces, een eigen routeringstabel en een eigen ruimte voor luisterpoorten nodig. Welke Linux-naamruimte biedt die weergave?
  1. Netwerk.
  2. Koppeling.
  3. PID.
  4. Cgroup.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een UID-koppeling is 0 220000 8000. Welke host-UID hoort bij interne UID 1750?
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een toezichthoudend proces roept unshare(CLONE_NEWPID) aan, maakt daar zijn eerste kindproces aan en blijft daarbuiten actief. Dat kindproces maakt een logproces aan en eindigt vervolgens. Wat gebeurt er met het logproces en het toezichthoudende proces?
  1. Het logproces blijft als PID 1 bestaan en het toezichthoudende proces gaat naar de naamruimte van het kindproces.
  2. Het logproces blijft in de hostnaamruimte bestaan en het toezichthoudende proces behoudt zijn oude naamruimte.
  3. Het logproces wordt beëindigd en het toezichthoudende proces ook, omdat beide dezelfde kernel delen.
  4. Het logproces wordt beëindigd en het toezichthoudende proces blijft in zijn oorspronkelijke PID-naamruimte.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een groep heeft cpu.max met de waarde 120000 100000. Welke CPU-ruimte legt dit vast?
  1. De hoeveelheid tijd van 0,12 CPU per periode.
  2. De hoeveelheid tijd van 1,2 CPU per periode.
  3. De hoeveelheid tijd van 12 CPU's per periode.
  4. Een relatief planningsgewicht van 1,2.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Twee groepen op hetzelfde niveau met voldoende uitvoerbare threads concurreren op zes even goed beschikbare CPU's. Hun gewichten zijn 200 en 400, zonder quota. Welk aandeel krijgt de eerste en wat gebeurt er als de tweede niets meer doet?
  1. Ongeveer twee CPU's bij concurrentie; alleen blijft de groep op twee begrensd.
  2. Ongeveer twee CPU's bij concurrentie; alleen mag de groep alle zes gebruiken.
  3. Ongeveer drie CPU's bij concurrentie; alleen mag de groep alle zes gebruiken.
  4. Ongeveer vier CPU's bij concurrentie; alleen blijft de groep op vier begrensd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een bovenliggende groep begrenst twee actieve onderliggende groepen op het equivalent van 1,5 CPU. Onderliggende groep A heeft gewicht 100 en een eigen quotum van 0,5 CPU; B heeft gewicht 200. A moet bij concurrentie zijn aandeel van een derde behouden, maar alle beschikbare capaciteit van de bovenliggende groep kunnen gebruiken wanneer B niets doet. Welke wijziging past daarbij?
  1. Verwijder het eigen quotum van A en behoud beide gewichten en de bovenliggende grens.
  2. Verhoog het gewicht van A naar 300 en behoud het eigen quotum en de bovenliggende grens.
  3. Verhoog alleen de bovenliggende grens en behoud het eigen quotum van A en beide gewichten.
  4. Geef B een kleiner quotum en behoud het eigen quotum van A en beide gewichten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een bovenliggende groep heeft een pids.max van 30. Onderliggende groep A heeft vier processen met elk in totaal zeven threads en een lokale grens van 40; nevenliggende groep B bevat twee processen met elk één thread. Kan A nog een thread aanmaken terwijl alle bestaande taken actief blijven?
  1. Ja; A zit onder de lokale grens van 40, dus het totaal van de bovenliggende groep telt niet.
  2. Ja; de bovenliggende groep telt alleen de zes hoofdthreads, zodat 24 taakplaatsen overblijven.
  3. Nee; de 28 taken van A plus de 2 van B vullen de grens van 30 taken van de bovenliggende groep al.
  4. Nee; A overschrijdt de lokale grens al omdat elk proces zeven extra hoofdthreads toevoegt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een team wil een toepassing die een Windows-kernel vereist op Linux-servers uitvoeren. Welke grens kan die kernel bieden?
  1. Een Windows-container.
  2. Een UID-0-naamruimte.
  3. Een gekoppelde Windows-bestandsboom.
  4. Een VM waarop Windows draait.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een container zonder rootrechten op de host krijgt een bruikbare socket naar een hostuitvoeringsomgeving die eigendom is van root. Waarom kan de UID-koppeling de host onvoldoende beschermen tegen de verzoeken van de container?
  1. De gekoppelde UID geeft verzoeken van de uitvoeringsomgeving alleen de beperkte bevoegdheden van de container.
  2. De koppeling blokkeert privilegewijzigingen in de client, zodat verzoeken geen hostobjecten kunnen beïnvloeden.
  3. De uitvoeringsomgeving handelt verzoeken van de client af met haar eigen geprivilegieerde bevoegdheden.
  4. De socket staat alleen lokale handelingen binnen de naamruimte toe omdat de client in een gebruikersnaamruimte zit.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een aanbieder voert geüploade code uit voor klanten die niets met elkaar te maken hebben. Klanten A en C hebben Linux nodig; B heeft Windows nodig. De aanbieder wil containers binnen elke klantomgeving snel kunnen uitrollen en tegelijk een compromittering van een gastkernel binnen die klantomgeving houden. Hoe moet de aanbieder de grenzen inrichten?
  1. Gebruik per klant een afzonderlijke VM of micro-VM, met het benodigde besturingssysteem en compatibele containers erin.
  2. Gebruik één VM per besturingssysteem, meng de containers van A en C in Linux en plaats B in een Windows-VM.
  3. Gebruik één gedeelde Linux-VM met afzonderlijke containers zonder rootrechten op de host en geef B een Windows-bestandsboom.
  4. Gebruik één gedeelde Windows-VM met afzonderlijke PID-naamruimten en verpak de bibliotheken van alle drie de klanten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 6: Diagnosticeer fouten over isolatielagen heen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een onderzoeker heeft registraties nodig van mislukte aanmeldingen en gebruik van commando's met verhoogde privileges. Welk mechanisme levert dat bewijs?
  1. Willekeurige adresindeling.
  2. Registratie in een auditlogboek.
  3. Geneste paginering.
  4. Een CPU-uitvoeringsquotum.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een biometrisch systeem accepteert te veel onbevoegden. De beheerder verhoogt de overeenkomstsdrempel. Op welke afweging moet bij het testen worden gelet?
  1. Meer acceptaties van onbevoegden en minder afwijzingen van bevoegde gebruikers.
  2. Minder acceptaties van onbevoegden en minder afwijzingen van bevoegde gebruikers.
  3. Meer acceptaties van onbevoegden en meer afwijzingen van bevoegde gebruikers.
  4. Minder acceptaties van onbevoegden en meer afwijzingen van bevoegde gebruikers.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een POSIX-ACL geeft een genoemde gebruiker lees- en schrijfrecht, maar het masker staat alleen lezen toe. De vermelding voor anderen van het bestand heeft schrijfrecht. De gebruiker is niet de eigenaar. Kan de genoemde gebruiker schrijven via een nieuwe opening?
  1. Nee; het masker begrenst de vermelding op naam en die kan niet terugvallen op anderen.
  2. Ja; de lees-schrijfvermelding op naam omzeilt het masker van de groepsklasse.
  3. Ja; schrijfrecht voor anderen wordt gecombineerd met de gemaskeerde vermelding op naam.
  4. Nee; elke genoemde gebruiker moet eerst lid worden van de eigenaarsgroep om een ACL te gebruiken.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een geprivilegieerd hulpprogramma kopieert een padnaam naar privégeheugen, controleert die met access() en opent dat pad daarna met volledige privileges. Een aanvaller kan de genoemde vermelding vervangen. Welke fout blijft bestaan?
  1. Het kopiëren van de string heeft zowel de geheugenrace als de padrace weggenomen.
  2. De kopie verandert de werkelijke UID van het hulpprogramma in die van de eigenaar van het pad.
  3. De ongewijzigde string kan bij het openen nog steeds naar een ander object verwijzen.
  4. De kopie maakt symbolische koppelingen onzichtbaar voor alle latere naamzoekacties.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Bij pagina's van 4 KiB koppelt een gastbesturingssysteem virtuele pagina 9 aan gastpaginaframe 4 en daarna aan machinepaginaframe 51. Een toegewezen apparaat mag van zijn IOMMU ook machinepaginaframes 48–55 gebruiken. Wat is het CPU-adres voor 0x9B20 en valt het resulterende paginaframe binnen de apparaatkoppeling?
  1. 0x4B20; nee, paginaframe 4 valt buiten het toegestane bereik.
  2. 0x33B20; nee, de offset valt buiten het toegestane bereik.
  3. 0x33B20; ja, paginaframe 51 valt binnen het toegestane bereik.
  4. 0x9B20; ja, het virtuele paginanummer valt binnen het toegestane bereik.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een host met acht CPU's geeft een bovenliggende cgroup een quotum van twee CPU's. Twee uitvoerbare onderliggende groepen op hetzelfde niveau hebben gewichten 100 en 300, geen kleinere quota en voldoende parallel werk. Welke aanhoudende aandelen volgen zolang beide concurreren?
  1. Ongeveer 2 en 6 CPU's van alle acht host-CPU's.
  2. Ongeveer 0,5 en 1,5 CPU binnen de bovenliggende grens.
  3. Ongeveer 1 en 1 CPU met het quotum gelijk verdeeld.
  4. Ongeveer 2 en 2 CPU's met elk een volledig quotum.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een toezichthoudend proces opent een bestand, geeft een alleen-lezendescriptor aan een werkproces en wijzigt daarna de rechtennotatie van het bestand om toekomstige openingen door dat werkproces te weigeren. Welke bevoegdheid heeft het werkproces nog via de descriptor?
  1. Het behoudt leestoegang via de bestaande descriptor.
  2. Het verliest de descriptor bij de volgende schedulerwisseling.
  3. Het krijgt schrijftoegang omdat descriptoren toegangsmodi negeren.
  4. Het mag elk bestand in dezelfde directory via die bestandsdescriptor opnieuw openen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een VM gebruikt rechtstreekse apparaattoewijzing voor een kaart die DMA ondersteunt en door hardware versleuteld gastgeheugen. De beheerder wil livemigratie en wil apparaattoegang tot de juiste VM begrenzen. Wat moet nog gebeuren?
  1. Gebruik de IOMMU, maar migreer alleen de schijf en sla de toestand van het toegewezen apparaat over.
  2. Draag de apparaattoestand over, maar beperk de DMA alleen met gastpaginatabellen.
  3. Laat geheugenversleuteling de DMA-beperking vervangen en kopieer alleen de CPU-toestand.
  4. Begrens DMA met een IOMMU en verwerk de migratietoestand van het toegewezen apparaat.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een container heeft een nieuwe PID-naamruimte maar deelt de netwerknaamruimte van de host. Kan de PID-isolatie alleen de container een poort laten binden die op de host al bezet is?
  1. Nee; de poort blijft in de gedeelde netwerknaamruimte.
  2. Ja; elke PID-naamruimte heeft een onafhankelijke poortruimte.
  3. Ja; PID 1 krijgt automatisch een nieuwe netwerkstack.
  4. Nee; containers kunnen nooit netwerkpoorten binden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een aanvaller dringt een container binnen in de VM van klant A en gebruikt een fout om de gastkernel van die VM te beheersen. Andere klanten hebben afzonderlijke VM's op dezelfde fysieke host. Welke werklasten worden direct blootgesteld en wat is nog nodig om code op de host uit te voeren?
  1. Alleen de oorspronkelijke container wordt blootgesteld; zijn PID-naamruimte begrenst de beheerste gastkernel nog steeds.
  2. Andere containers in de VM van A worden blootgesteld; voor uitvoering op de host moet nog steeds de VM-grens worden doorbroken.
  3. De VM's van alle klanten worden direct blootgesteld; elke gastkernel beheerst de gedeelde fysieke host.
  4. Alleen containers met dezelfde UID worden blootgesteld; een beheerste gastkernel moet nog steeds elke UID respecteren.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

113 Kernbegrippen, elk met een definitie

A

afzonderlijk Linux-privilege
Een afzonderlijk Linux-privilege is een apart toe te wijzen deel van de bevoegdheden van root dat een klasse geprivilegieerde bewerkingen toestaat.
Het afzonderlijke Linux-privilege CAP_NET_BIND_SERVICE staat het binden van poorten met lage nummers toe zonder alle rootbevoegdheden te verlenen.
apparaatemulatie
Apparaatemulatie presenteert een softwaremodel van fysieke hardware zodat een gastbesturingssysteem een stuurprogramma voor dat apparaat kan gebruiken.
Apparaatemulatie kan een registerschrijfbewerking naar een netwerkkaart van het gastbesturingssysteem vertalen naar werk dat een hulpproces op de host uitvoert.
AppArmor-profiel
Een AppArmor-profiel beperkt een programma door toegestane paden en bewerkingen te specificeren, inclusief geselecteerde afzonderlijke Linux-privileges.
Een AppArmor-profiel kan een service toestaan zijn configuratie te lezen, maar toegang tot niet-gerelateerde bestanden in persoonlijke directory's weigeren.
ASLR
ASLR kiest de locaties van geheugengebieden willekeurig, zodat aanvallers adressen voor codehergebruik of het benaderen van gegevens niet betrouwbaar kunnen voorspellen.
Een informatielek kan het basisadres van één bibliotheek onthullen en ASLR voor de gadgets van die bibliotheek ondermijnen.
auditlogboek
Een auditlogboek legt beveiligingsrelevante gebeurtenissen vast zodat beheerders misbruik kunnen detecteren en reconstrueren wat er is gebeurd.
Een beschermd auditlogboek op afstand kan een registratie van een geprivilegieerd commando bewaren nadat een aanvaller lokale bestanden heeft gewist.
authenticatie
Authenticatie controleert of een entiteit die een identiteit claimt de identificatiegegevens of factoren beheerst die bij die identiteit horen.
Een geslaagde authenticatie laat de aanmeldservice de identificatiegegevens van het account aan een nieuwe shell koppelen.
authenticatiemiddel met een publieke sleutel
Een authenticatiemiddel met een publieke sleutel bewijst bezit van een privésleutel door een uitdaging te ondertekenen die een server met de publieke sleutel verifieert.
Een authenticatiemiddel met een publieke sleutel kan een aanmelding voltooien zonder zijn private ondertekeningssleutel naar de server te sturen.
autorisatie
Autorisatie bepaalt of een geauthenticeerd beveiligingssubject een bepaalde bewerking op een beschermde bron mag uitvoeren.
Bestandsautorisatie kan een aangemelde gebruiker toestemming weigeren om een rapport van een ander account te lezen.

B

ballooning
Ballooning gebruikt een gaststuurprogramma om pagina's te reserveren zodat de hypervisor met medewerking van het gastbesturingssysteem de bijbehorende machinepaginaframes kan terugnemen.
Ballooning laat het gastbesturingssysteem kiezen welke pagina's het opgeeft op basis van kennis die de hypervisor niet heeft.
Bell–LaPadula-model
Het Bell–LaPadula-model beschermt vertrouwelijkheid door lezen boven het niveau van een subject en schrijven eronder te verbieden.
Volgens het Bell–LaPadula-model mag een proces op niveau Geheim vertrouwelijke gegevens lezen, maar niet naar een vertrouwelijk bestand schrijven.
beperkte directe uitvoering
Beperkte directe uitvoering voert gewone instructies rechtstreeks op de processor uit, terwijl hardwarecontroles en gecontroleerde traps de besturing door de toezichthoudende laag behouden.
Beperkte directe uitvoering geeft een toepassing de rekensnelheid van rechtstreekse uitvoering zonder dat die de paginatabellen kan vervangen.
beschermingsring
Een beschermingsring is een x86-privilegeniveau; ring 0 heeft de meeste privileges en ring 3 de minste.
Linux plaatst toepassingscode normaal in beschermingsring 3 en zijn kernelcode in beschermingsring 0.
bestandsdescriptor
Een bestandsdescriptor is een procesgebonden index naar een geopende bron die door de kernel wordt beheerd, met vastgelegde toegang die bij het openen is verleend.
Een geërfde beschrijfbare bestandsdescriptor kan bruikbaar blijven nadat de rechtennotatie van het bestand nieuwe openingen voor schrijven niet meer toestaat.
besturingssocket van de containeruitvoeringsomgeving
Een besturingssocket van de containeruitvoeringsomgeving is een interface om een uitvoeringsomgeving te besturen waarvan de bevoegdheden geprivilegieerde bewerkingen op de hele host toegankelijk kunnen maken.
Toegang tot een besturingssocket van de containeruitvoeringsomgeving die eigendom is van root kan de bescherming ondermijnen die van een ongeprivilegieerde UID-koppeling wordt verwacht.
beveiligd opstarten
Beveiligd opstarten verifieert vertrouwde handtekeningen in de opstartketen en weigert componenten die niet aan de ingestelde vertrouwenscontroles voldoen.
Beveiligd opstarten kan een gewijzigde opstartlader weigeren voordat die lader de controle over de machine krijgt.
beveiligingssubject
Een beveiligingssubject is een entiteit, zoals een persoon of serviceaccount, waaraan rechten worden toegewezen en namens wie processen handelen.
Een back-upservice draait als afzonderlijk beveiligingssubject zodat de bestandsrechten onafhankelijk van die van een menselijke gebruiker kunnen worden beheerd.
binaire vertaling
Binaire vertaling herschrijft problematische gastkernelinstructies vóór uitvoering naar veilige reeksen en bewaart het resultaat in een cache.
Binaire vertaling kan een ongewijzigde gastkernel ondersteunen op een processor met gevoelige instructies die geen trap veroorzaken.
biometrisch sjabloon
Een biometrisch sjabloon bestaat uit opgeslagen kenmerkgegevens die zijn afgeleid van een lichamelijk kenmerk en worden gebruikt om identiteit op basis van overeenkomst vast te stellen.
Een vingerafdruksensor vergelijkt nieuwe kenmerken met een biometrisch sjabloon in plaats van identieke afbeeldingen te vereisen.
bruteforceaanval
Een bruteforceaanval probeert systematisch elke kandidaat in een gedefinieerde wachtwoordruimte totdat een overeenkomende verificatiewaarde wordt gevonden.
Een bruteforceaanval op acht kleine letters heeft een zoekruimte van 26 tot de achtste macht.
bufferoverloop
Een bufferoverloop is een schrijfbewerking voorbij de grenzen van een buffer die nabijgelegen gegevens kan beschadigen, waaronder een opgeslagen adres voor de besturingsstroom.
Een bufferoverloop op de stack kan een retouradres vervangen, ook al was de bedoelde bewerking alleen tekst kopiëren.

C

cgroup-controller
Een cgroup-controller meet of regelt één bronklasse voor groepen in de controlegroephiërarchie.
Een bovenliggende groep schakelt de cgroup-controller voor geheugen in voor zijn onderliggende groepen voordat hun geheugengrenzen worden geconfigureerd.
container
Een container bestaat uit één of meer processen op de hostkernel die zijn geïsoleerd met eigen weergaven, bronbeperkingen en privilegebeperkingen.
Een container kan bestanden van een andere Linux-distributie bevatten en toch op dezelfde kernel als de host draaien.
container zonder rootrechten op de host
Een container zonder rootrechten op de host draait met ongeprivilegieerde hostbevoegdheden en koppelt zijn interne rootidentiteit normaal via een gebruikersnaamruimte.
Een container zonder rootrechten op de host vermindert hostprivileges maar vertrouwt nog steeds op de hostkernel om onveilige bewerkingen te weigeren.
controlegroep
Een controlegroep ordent processen hiërarchisch voor meting en beheer van bronnen, met overgeërfde beperkingen van bovenliggende groepen.
Een controlegroep kan het CPU-gebruik van een batchtaak begrenzen zonder de procesnamen van de host ervoor te verbergen.
cpu.max
cpu.max is het cgroup-v2-bestand dat een CPU-uitvoeringsquotum en periode in microseconden of een onbeperkt quotum specificeert.
Een cpu.max-waarde van 75000 100000 staat per periode maximaal drie kwart van de tijd van één CPU toe.
cpu.weight
cpu.weight stelt het relatieve CPU-aandeel van een cgroup bij concurrentie in zonder een harde bovengrens op te leggen aan verder beschikbare tijd.
Een hogere cpu.weight bevoordeelt een actieve groep boven concurrerende groepen op hetzelfde niveau, maar kan het afzonderlijke quotum niet opheffen.

D

DACL
Een DACL is een geordende lijst bij een Windows-object met vermeldingen die rechten toestaan of weigeren en bepalen welke gevraagde rechten worden verleend.
Een DACL kan een gevraagde leesbewerking via een expliciete vermelding toestaan voordat de beoordeling een geërfde weigering bereikt.
delen van pagina's
Delen van pagina's voegt identieke pagina's samen tot één alleen-lezenkopie en maakt weer afzonderlijke kopieën wanneer een gastbesturingssysteem naar een pagina schrijft.
Pagina's delen tussen klanten kan overeenkomende gegevens onthullen via de tijd die nodig is om een beschrijfbare privékopie te maken.
directe geheugentoegang
Directe geheugentoegang laat een apparaat gegevens van of naar RAM overdragen zonder die toegangen via de MMU van de CPU te sturen.
Een netwerkapparaat dat directe geheugentoegang gebruikt, heeft een afzonderlijke grens nodig rond de RAM-adressen die het kan bereiken.
directory met setgid
Een directory met setgid zorgt dat nieuw aangemaakte bestanden de groep ervan erven, zodat een team gedeelde bestanden onder één groepsidentiteit kan houden.
Een projectdirectory met setgid zorgt dat nieuwe documenten aan de projectgroep worden toegewezen in plaats van aan de primaire groep van elke auteur.
discretionaire toegangscontrole
Discretionaire toegangscontrole laat de eigenaar van een object beslissen welke andere beveiligingssubjecten er toegang toe mogen hebben en met welke rechten.
Discretionaire toegangscontrole laat een bestandseigenaar leestoegang verlenen, ook via een programma dat als die eigenaar draait.
doorzoeken van een directory
Het doorzoeken van een directory is het opzoeken via een directory om een vermelding te bereiken; daarvoor is uitvoerrecht op die directory nodig.
Doorzoeken van een directory kan het openen van een bekende naam toestaan, ook wanneer het leesrecht niet toestaat alle namen op te vragen.

E

EFAULT
EFAULT is een Linux-fout die aangeeft dat een adres voor geheugentoegang door een systeemaanroep geen geldig toegestaan gebruikersadres is.
Een read()-aanroep met een bestemming in kernelgeheugen kan EFAULT retourneren in plaats van de kernel te overschrijven.
effectieve UID
De effectieve UID is de Unix-procesidentiteit die voor de meeste toegangscontroles wordt gebruikt en kan verschillen van de identiteit die het proces heeft gestart.
Een setuid-hulpprogramma voor wachtwoorden dat eigendom is van root heeft effectieve UID 0 en behoudt de werkelijke UID van de aanroeper.
exceptieniveau
Een exceptieniveau is een uitvoeringsprivilegeniveau van ARMv8-A, van toepassingen op EL0 tot beveiligde firmware op EL3.
De ARM-hypervisor draait op exceptieniveau EL2, terwijl de kernel van een gastbesturingssysteem normaal op EL1 draait.

F

foutacceptatiepercentage
Het foutacceptatiepercentage is het aandeel pogingen van onbevoegden dat een biometrisch systeem ten onrechte als bevoegd accepteert.
Eén geaccepteerde onbevoegde bij 5.000 pogingen geeft een foutacceptatiepercentage van 0,02%.
foutafwijzingspercentage
Het foutafwijzingspercentage is het aandeel pogingen van bevoegde gebruikers dat een biometrisch systeem ten onrechte weigert.
Een strengere overeenkomstsdrempel verhoogt het foutafwijzingspercentage wanneer meer scans van bevoegde gebruikers de grens niet halen.
fysiek gastadres
Een fysiek gastadres duidt geheugen aan in de fysieke weergave van het gastbesturingssysteem en moet naar een echt machineadres worden vertaald.
Een fysiek gastadres van nul kan in twee VM's op één host aan verschillende machinepaginaframes zijn gekoppeld.

G

gastbesturingssysteem
Een gastbesturingssysteem is een besturingssysteem dat binnen een virtuele machine draait met een hardwareweergave die door een hypervisor wordt geboden.
Het gastbesturingssysteem werkt zijn paginatabellen bij zonder directe controle te krijgen over elk machinepaginaframe op de host.
gebruikersmodus
Gebruikersmodus is het beperkte CPU-privilegeniveau waarin toepassingsinstructies worden uitgevoerd onder hardwarecontroles voor bescherming.
Een teksteditor die eigendom is van root voert zijn gewone instructies nog steeds uit in gebruikersmodus en vraagt bestandsbewerkingen aan de kernel.
gebruikersnaamruimte
Een gebruikersnaamruimte koppelt gebruikers- en groeps-ID's tussen interne en externe weergaven en begrenst privileges tot de eigen bronnen.
Een gebruikersnaamruimte kan container-UID 0 koppelen aan een ongeprivilegieerde host-UID in plaats van aan hostroot.
geheugenbeheereenheid
De geheugenbeheereenheid vertaalt virtuele CPU-adressen en controleert paginarechten voordat die geheugentoegang toestaat.
De geheugenbeheereenheid blokkeert een schrijfbewerking vanuit gebruikersmodus naar een pagina die in de paginatabel als alleen voor de supervisor toegankelijk is gemarkeerd.
geheugenoverboeking
Geheugenoverboeking zegt VM's samen meer geheugen toe dan de host bezit, in de verwachting dat hun actieve vraag niet tegelijk piekt.
Geheugenoverboeking kan tekortschieten in prestaties wanneer elk gastbesturingssysteem zijn volledige toewijzing gaat gebruiken.
geneste paginering
Geneste paginering laat hardware adressen vertalen van virtueel gastadres naar fysiek gastadres en van fysiek gastadres naar machineadres.
Geneste paginering staat wijzigingen van gastpaginatabellen toe zonder dat software elke wijziging hoeft te onderscheppen.
geprivilegieerde instructie
Een geprivilegieerde instructie voert alleen bij voldoende CPU-privileges een beschermde bewerking uit en veroorzaakt anders een trap.
Een poging van een toepassing om op x86 de geprivilegieerde instructie HLT uit te voeren veroorzaakt een beschermingsfout.
gevoelige instructie
Een gevoelige instructie verandert de machineconfiguratie of gedraagt zich anders afhankelijk van het privilegeniveau van de uitvoering.
Een gevoelige instructie die stilzwijgend van gedrag verandert, kan onderschepping bij klassiek onderscheppen en emuleren ondermijnen.
gVisor
gVisor plaatst een kernel in gebruikersruimte tussen containersysteemaanroepen en de hostkernel, waardoor de werklast minder direct aan de hostkernel wordt blootgesteld.
gVisor handelt een groot deel van het systeemaanroepoppervlak van een sandbox af voordat geselecteerde bewerkingen de echte hostkernel bereiken.

H

hypercall
Een hypercall is een expliciet verzoek van gastsoftware aan de hypervisor om namens het gastbesturingssysteem een bewerking uit te voeren.
Een hypercall kan de monitor vragen de toestand van de virtuele machine van een gastbesturingssysteem te wijzigen zonder te doen alsof het gastbesturingssysteem de host bezit.
hypervisor
Een hypervisor is de softwarelaag die VM's aanmaakt, hun bronnen toewijst en de controle over de fysieke machine behoudt.
De hypervisor slaat de CPU-toestand van één gastbesturingssysteem op voordat hij een ander gastbesturingssysteem op dezelfde fysieke processorkern inplant.

I

intrekking van bevoegdheidstokens
Intrekking van bevoegdheidstokens trekt eerder verleende toegang op basis van tokens in en kan vereisen dat gedelegeerde kopieën worden beheerst.
Intrekking van bevoegdheidstokens is moeilijk wanneer veel processen onafhankelijk bruikbare kopieën van een bevoegdheid voor een object bezitten.
IOMMU
Een IOMMU vertaalt apparaatadressen en dwingt koppelingen af die beperken tot welk geheugen elk apparaat met DMA toegang mag hebben.
De IOMMU voorkomt dat een rechtstreeks toegewezen netwerkapparaat buiten het aan zijn VM toegewezen geheugen schrijft.
isolatie van kernelpaginatabellen
Isolatie van kernelpaginatabellen verwijdert de meeste kernelkoppelingen tijdens de uitvoering van gebruikerscode om de blootstelling op door Meltdown getroffen processors te verminderen.
Isolatie van kernelpaginatabellen wisselt de actieve koppelingen wanneer de uitvoering de grens tussen gebruiker en kernel passeert.

K

Kata Containers
Kata Containers plaatst elke containersandbox in een lichtgewicht VM, zodat afzonderlijke sandboxen afzonderlijke gastkernels hebben.
Kata Containers kan meerdere containers uit één pod in een sandbox plaatsen die één beschermde gastkernel deelt.
kernelmodus
Kernelmodus is het CPU-privilegeniveau waarmee het besturingssysteem beschermde instructies kan uitvoeren en hardware kan beheren.
Een stuurprogramma dat in kernelmodus draait, kan machinetoestand wijzigen die een gewone toepassing niet rechtstreeks kan beheren.
kostenfactor voor wachtwoordhashing
Een kostenfactor voor wachtwoordhashing bepaalt de bewust vereiste hoeveelheid rekenwerk en soms geheugen om één wachtwoordverificatiewaarde te berekenen.
Een hogere kostenfactor voor wachtwoordhashing vertraagt zowel een legitieme aanmeldcontrole als elke gok van een aanvaller.

L

livemigratie
Livemigratie verplaatst een draaiende VM tussen hosts, meestal door geheugen te kopiëren vóór een korte laatste omschakeling van de uitvoering.
Een rechtstreeks toegewezen apparaat kan livemigratie bemoeilijken omdat de actieve hardwaretoestand ervan ook moet worden afgehandeld.

M

memory.high
memory.high is een geheugendrempel voor een cgroup die daarboven taken vertraagt die geheugen toewijzen en actieve terugwinning veroorzaakt.
Een groep kan memory.high overschrijden terwijl de druk om geheugen terug te winnen toeneemt, anders dan bij een eenvoudige vaste toewijzingsgrens.
memory.max
memory.max is een harde geheugengrens voor een cgroup die lokale beëindiging door de OOM-killer kan veroorzaken wanneer terugwinning niet aan de vraag kan voldoen.
Nadat terugwinning van cache en bruikbare wisselruimte zijn uitgeput, kan memory.max afdwingen dat een daarvoor in aanmerking komende taak in de groep wordt beëindigd.
micro-VM
Een micro-VM is een kleine virtuele machine met een minimaal apparaatmodel, ontworpen om lichtgewicht werklasten efficiënt te isoleren.
Een platform kan een niet-vertrouwde functie in een Firecracker-micro-VM plaatsen om die een afzonderlijke gastkernelgrens te geven.
momentopname
Een momentopname bewaart de toestand van een VM voor later herstel; een momentopname van een draaiende VM bevat naast de schijven ook de uitvoerings- en geheugentoestand.
Een volledige momentopname herstellen brengt een test-VM terug naar de opgeslagen CPU-, geheugen- en opslagtoestand.
multifactorauthenticatie
Multifactorauthenticatie vereist bewijzen van verschillende factortypen, zoals kennis plus bezit van een apparaat.
Een wachtwoord en een code uit een authenticatie-app bieden multifactorauthenticatie, anders dan twee kennisvragen.

N

naamruimte
Een naamruimte geeft processen een eigen instantie of weergave van één categorie normaal globale Linux-systeemtoestand.
Een naamruimte kan koppellijsten scheiden zonder een CPU-grens op te leggen aan de processen die die weergave gebruiken.
naamruimte voor bestandssysteemkoppelingen
Een naamruimte voor bestandssysteemkoppelingen scheidt de lijst met gekoppelde bestandssystemen van een procesgroep en ondersteunt zo een eigen zichtbare bestandsboom.
Een naamruimte voor bestandssysteemkoppelingen laat een uitvoeringsomgeving een containerroot samenstellen zonder de eigen koppellijst van de host te vervangen.
netwerknaamruimte
Een netwerknaamruimte biedt afzonderlijke interfaces, adressen, routes, poorten en andere toestand die bij een netwerkstack hoort.
Twee services in verschillende netwerknaamruimten kunnen allebei op poort 80 luisteren zonder poortconflict binnen een naamruimte.
no_new_privs
no_new_privs is een Linux-procesvlag die voorkomt dat uitvoering via setuid of verwante mechanismen nieuwe privileges verleent.
Als no_new_privs is ingesteld, kan een containerproces niet eenvoudig bevoegdheden krijgen door een uitvoerbaar setuid-bestand te starten.

O

objectgebonden bevoegdheidstoken
Een objectgebonden bevoegdheidstoken is een niet te vervalsen token dat een object en de bewerkingen aanwijst die de houder op dat object mag uitvoeren.
Een ouderproces kan een objectgebonden bevoegdheidstoken voor één invoerbestand doorgeven zonder het werkproces toegang tot de hele directory te geven.
octale rechtennotatie
Een octale rechtennotatie codeert Unix-rechtenklassen met lezen 4, schrijven 2 en uitvoeren 1, met eventueel speciale bits.
De octale rechtennotatie 640 geeft de eigenaar lees- en schrijfrecht, de groep leesrecht en geen toegang via de klasse voor anderen.
offlineaanval
Een offlineaanval test gokpogingen tegen gestolen verificatiegegevens op de hardware van de aanvaller zonder de aanmeldservice te raadplegen.
Een offlineaanval gaat op zijn eigen snelheid door, ook als het echte account na mislukte aanmeldingen is geblokkeerd.
onderscheppen en emuleren
Onderscheppen en emuleren onderschept beschermde bewerkingen van een gastbesturingssysteem met verlaagde privileges en past de effecten ervan toe op de toestand van de virtuele machine.
Onderscheppen en emuleren werkt de virtuele interruptvlag van een gastbesturingssysteem bij zonder dat het de interrupts van de host kan uitschakelen.
ontsnapping uit een virtuele machine
Een ontsnapping uit een virtuele machine doorbreekt de gastgrens via een fout in de hypervisor of een toegankelijk virtueel apparaat en bereikt hostbevoegdheden.
Een geëmuleerd apparaat met een fout kan een ontsnapping uit een virtuele machine mogelijk maken, ook al zijn de gewone paginakoppelingen van het gastbesturingssysteem gescheiden.
opstarten met integriteitsmetingen
Opstarten met integriteitsmetingen legt hashes van opstartcomponenten vast, vaak in een TPM, zodat een andere partij kan controleren wat is geladen.
Opstarten met integriteitsmetingen levert opstartmetingen voor attestatie zonder zelf het weigeringsmechanisme op basis van handtekeningen te zijn.
overgang naar gastuitvoering
Een overgang naar gastuitvoering herstelt de gastuitvoering onder hardwarevirtualisatie nadat de hypervisor de toestand ervan heeft geselecteerd en voorbereid.
Na het afhandelen van een apparaatmelding voert de hypervisor een overgang naar gastuitvoering uit om het betrokken gastbesturingssysteem te hervatten.
overgang van gastuitvoering naar de hypervisor
Een overgang van gastuitvoering naar de hypervisor is een door hardware bestuurde overdracht naar de hypervisor na een gebeurtenis die voor onderschepping is geconfigureerd.
Een overgang van gastuitvoering naar de hypervisor bij HLT van het gastbesturingssysteem laat de hypervisor stoppen met het inplannen van de wachtende vCPU en een andere werklast uitvoeren.

P

paginafout
Een paginafout is een exceptie door een mislukte controle van paginavertaling of toegangsrechten, die de kernel moet interpreteren.
Een paginafout bij een koppeling met kopiëren bij schrijven kan leiden tot een privékopie van de pagina en een geslaagde nieuwe poging van de instructie.
PAM
PAM is een Linux-authenticatieframework waarmee aanmeldservices geconfigureerde modules kunnen gebruiken voor controles van identificatiegegevens en bijbehorend beleid.
Een SSH-aanmeldservice kan PAM gebruiken om identificatiegegevens te controleren voordat de procesidentiteit van de gebruiker wordt ingesteld.
paravirtualisatie
Paravirtualisatie past een gastinterface aan om virtuele bewerkingen expliciet aan te vragen in plaats van volledig op onderschepping te vertrouwen.
CPU-paravirtualisatie past een gastkernel aan om hypercalls te doen voor bewerkingen die controle door de hypervisor vereisen.
passkey
Een passkey is een identificatiemiddel met een publieke sleutel voor sitegebonden authenticatie, opgeslagen op een apparaat of veilig gesynchroniseerd tussen apparaten.
Een gesynchroniseerde passkey ondersteunt aanmelding op een ander apparaat, maar maakt het platformaccount onderdeel van de bescherming van de identificatiegegevens.
PID-naamruimte
Een PID-naamruimte geeft processen een afzonderlijke nummerings- en zichtbaarheidshiërarchie met een eigen levenscyclus voor PID 1.
Een proces kan PID 1 zijn binnen een PID-naamruimte, terwijl de host hetzelfde proces met een ander nummer identificeert.
pids.max
pids.max is een taakgrens voor een cgroup die zowel processen als threads telt en aanmaak boven het toegestane totaal voorkomt.
Een service met meerdere threads kan pids.max bereiken, zelfs wanneer het aantal afzonderlijke processen klein lijkt.
POSIX-ACL-masker
Een POSIX-ACL-masker begrenst de effectieve rechten van vermeldingen voor genoemde gebruikers, genoemde groepen en de groep van de eigenaar.
Een POSIX-ACL-masker dat alleen lezen toestaat, maakt een lees-schrijfvermelding van een genoemde gebruiker effectief alleen-lezen.

R

rechtstreekse apparaattoewijzing
Rechtstreekse apparaattoewijzing wijst een fysiek apparaat of een functie daarvan direct toe aan een VM, waarbij een IOMMU de DMA-toegang beperkt.
Rechtstreekse apparaattoewijzing kan netwerkprestaties verbeteren en tegelijk delen en livemigratie moeilijker maken.
referentiemonitor
Een referentiemonitor is een beschermd mechanisme dat toegang controleert, niet kan worden omzeild en klein genoeg is om zorgvuldig te controleren.
De referentiemonitor controleert een verzoek om een geheugenkoppeling; daarna dwingt hardware de al verleende toegang in de paginatabel af.
retourgeoriënteerd programmeren
Retourgeoriënteerd programmeren bouwt door de aanvaller gekozen gedrag op door korte instructiereeksen aaneen te rijgen die al in uitvoerbaar geheugen staan.
Retourgeoriënteerd programmeren kan bibliotheekinstructies hergebruiken zonder geïnjecteerde bytes vanaf een gegevenspagina uit te voeren.
rolgebaseerde toegangscontrole
Rolgebaseerde toegangscontrole wijst rechten toe aan functierollen en geeft gebruikers die rechten via hun roltoewijzingen.
Rolgebaseerde toegangscontrole maakt het mogelijk bij een functiewijziging roltoewijzingen te vervangen zonder elke afzonderlijke bestandsregel te bewerken.

S

salt
Een salt is een willekeurige waarde per wachtwoord die bij de hash wordt opgeslagen om te voorkomen dat verificatiewerk voor gelijke wachtwoorden kan worden hergebruikt.
Verschillende salts zorgen dat twee accounts met hetzelfde wachtwoord verschillende opgeslagen wachtwoordhashes opleveren.
schaduwpaginatabel
Een schaduwpaginatabel koppelt virtuele gastadressen rechtstreeks aan machinepaginaframes en wordt door de hypervisor in software bijgehouden.
Een schaduwpaginatabel moet worden bijgewerkt wanneer het gastbesturingssysteem koppelingen wijzigt die de hardware daadwerkelijk zal gebruiken.
seccomp
Seccomp is een Linux-voorziening die de systeemaanroepen van een proces filtert en zo de beschikbare kerneldiensten beperkt.
Het seccomp-beleid van een browserweergaveproces kan aanroepen om programma's te starten blokkeren, ook nadat het weergaveproces is gecompromitteerd.
SELinux-domein
Een SELinux-domein is een proceslabel dat beleid op basis van typen gebruikt om te bepalen tot welke objecttypen het proces toegang mag hebben.
Een SELinux-domein voor een webserver kan het lezen van pagina's toestaan en tegelijk het lezen van bestandstypen in persoonlijke directory's weigeren.
setuid
Setuid is een mechanisme voor uitvoerbare bestanden dat een programma onder normale uitvoeringsregels start met de effectieve gebruikersidentiteit van de eigenaar.
Setuid laat het wachtwoordhulpprogramma een beschermd bestand met verificatiegegevens bijwerken, terwijl de code controleert welk account mag worden gewijzigd.
SMAP
SMAP is een x86-bescherming die gegevenstoegang vanuit supervisormodus tot gebruikerspagina's beperkt buiten expliciet toegestane kopieerbewerkingen.
SMAP vereist dat kernelcode voor kopiëren bewust de toegang tot gebruikersgeheugen toestaat die voor een gecontroleerde buffer nodig is.
SMEP
SMEP is een x86-bescherming die voorkomt dat code in supervisormodus instructies uitvoert op pagina's die als toegankelijk voor gebruikers zijn gemarkeerd.
SMEP blokkeert een beschadigde kernelterugkeer die naar door een aanvaller beheerde instructies op een gebruikerspagina springt.
stickybit
De stickybit beperkt verwijderen en hernoemen in een directory tot bestandseigenaren, de directoryeigenaar of geprivilegieerde processen.
De stickybit voorkomt dat een gewone gebruiker de vermelding van een andere gebruiker verwijdert in een gedeelde tijdelijke directory met rechtennotatie 1777.
systeemaanroep
Een systeemaanroep is een gecontroleerd verzoek van een gebruikersprogramma aan de kernel om een dienst die kernelbevoegdheid vereist.
De wrapperfunctie open() doet een systeemaanroep zodat de kernel de toegang kan controleren voordat hij een bestandsdescriptor retourneert.

T

timerinterrupt
Een timerinterrupt is een hardwaregebeurtenis die na een geprogrammeerd interval de CPU-besturing aan de kernel teruggeeft.
De timerinterrupt laat de scheduler een proces vervangen, zelfs wanneer dat proces nooit vrijwillig de CPU-beurt afstaat.
TOCTTOU-raceconditie
Een TOCTTOU-raceconditie ontstaat wanneer een gecontroleerd object of een gecontroleerde conditie vóór gebruik verandert, waardoor de eerdere beslissing niet meer van toepassing is.
Door een TOCTTOU-raceconditie kan een vervangen symbolische koppeling een geprivilegieerd hulpprogramma na de toegangscontrole omleiden.
toegangscontrolelijst
Een toegangscontrolelijst slaat de subjecten en rechten op die bij een object horen en komt overeen met één kolom van de toegangsmatrix.
De toegangscontrolelijst van een rapport kan één account schrijftoegang en een tweede account leestoegang geven.
toegangscontrolevermelding
Een toegangscontrolevermelding is een afzonderlijke Windows-ACL-regel die een SID en de toe te staan, te weigeren of te registreren rechten vermeldt.
Een toegangscontrolevermelding die schrijven voor een toepasselijke groep weigert, kan een verzoek blokkeren dat schrijftoegang bevat.
toegangsmatrix
Een toegangsmatrix geeft toegestane bewerkingen weer met één subject per rij, één object per kolom en rechten in elke cel.
Een toegangsmatrix kan tonen dat een back-upproces een rapport mag lezen maar geen recht heeft om een printer te gebruiken.
toegangstoken
Een toegangstoken is een Windows-object met identificatiegegevens dat gebruikers- en groeps-SID's en privileges bevat voor toegangscontroles.
UAC start een gewoon programma van een beheerder met een gefilterd toegangstoken vóór een eventuele goedgekeurde verhoging van privileges.
TOTP
Een TOTP is een kort geldige code die is afgeleid van een gedeeld geheim en een tijdstap en vaak wordt gebruikt om bezit van een authenticatiemiddel te bewijzen.
Een valse aanmeldpagina kan een TOTP doorgeven aan de echte service zolang de code nog geldig is.

U

UID-koppeling
Een UID-koppeling verbindt een bereik van gebruikers-ID's binnen een naamruimte met een bereik daarbuiten met twee beginpunten en een lengte.
Een UID-koppeling die begint bij intern 0 en host 100000 vertaalt intern 1000 naar host 101000.
uitvoerverbodsbit
Een uitvoerverbodsbit is een paginarecht dat uitvoering van instructies vanaf de pagina voorkomt, terwijl andere toegang afzonderlijk wordt geregeld.
Een stackpagina met een ingestelde uitvoerverbodsbit kan gegevens bevatten, maar veroorzaakt een fout als het programma die probeert uit te voeren.
umask
Een umask is een procesinstelling die geselecteerde toegangsrechtenbits wist uit de rechtennotatie die bij het aanmaken van een object wordt aangevraagd.
Met een umask van 027 levert een aanvraag van 666 voor een gewoon bestand rechtennotatie 640 op, geen uitvoerbaar bestand.

V

verplichte toegangscontrole
Verplichte toegangscontrole dwingt door de beheerder vastgesteld beleid af, onafhankelijk van de discretionaire keuzes van een objecteigenaar.
Verplichte toegangscontrole kan een webserver leestoegang tot een persoonlijke directory weigeren die de gewone bestandsrechten wel toestaan.
vertrouwde computerbasis
De vertrouwde computerbasis bestaat uit de hardware, firmware en software waarvan de beveiliging van het systeem voor een correcte werking afhankelijk is.
Een fout in een vertrouwd aanmeldhulpprogramma kan de vertrouwde computerbasis compromitteren, zelfs wanneer de kernel correct is.
vertrouwelijke gegevensverwerking
Vertrouwelijke gegevensverwerking gebruikt hardwarebescherming en attestatie om gastgeheugen af te schermen van een mogelijk niet-vertrouwde host.
Vertrouwelijke gegevensverwerking kan sleutels voor VM-geheugen ontoegankelijk houden voor de hypervisor terwijl hardware de starttoestand verifieert.
veth-paar
Een veth-paar is een verbonden paar virtuele netwerkinterfaces dat een containernetwerknaamruimte met de host kan verbinden.
Eén uiteinde van een veth-paar kan binnen een container zitten en het andere op een brug in de netwerkstack van de host.
virtio
Virtio is een paravirtuele apparaatinterface die aangepaste gaststuurprogramma's en gedeelde wachtrijen gebruikt om de overhead van apparaatafhandeling te verminderen.
Een virtio-stuurprogramma plaatst meerdere opslagverzoeken in een wachtrij voordat het de achterliggende component informeert, waardoor minder herhaalde overgangen nodig zijn.
virtuele CPU
Een virtuele CPU is een voor het gastbesturingssysteem zichtbare processor waarvan de hypervisor de uitvoeringstoestand op een fysieke processor inplant.
Een niet-actieve virtuele CPU kan op zijn virtuele interrupt wachten terwijl de fysieke processorkern een ander gastbesturingssysteem uitvoert.
virtuele machine
Een virtuele machine presenteert een volledige virtuele computer aan een gastbesturingssysteem terwijl een hypervisor de echte bronnen beheert.
Een virtuele machine kan een Windows-kernel draaien op compatibele hardware die door een host op basis van Linux wordt beheerd.

W

W^X
W^X is een geheugenbeleid dat verbiedt dat een pagina tegelijk beschrijfbaar en uitvoerbaar is.
Onder W^X schrijft een just-in-timecompiler eerst code en wijzigt hij de rechten voordat hij de code uitvoert.
wachtwoordhash
Een wachtwoordhash is een eenrichtingsverificatiewaarde die uit een opgegeven wachtwoord en opgeslagen parameters opnieuw wordt berekend om een aanmelding te controleren.
Een gestolen wachtwoordhash kan tegen gokpogingen worden getest zonder dat een wachtwoord via ontsleuteling wordt onthuld.
woordenboekaanval
Een woordenboekaanval probeert waarschijnlijke wachtwoorden, waaronder uitgelekte keuzes en voorspelbare varianten, vóór minder waarschijnlijke tekenreeksen.
Een woordenboekaanval kan “Winter2027!” vroeg vinden ondanks de combinatie van letters, cijfers en leestekens.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag