Gå til indhold

Control-flow Enforcement (CET)

ArkitekturreferenceFeex

Også kaldet CET

CET, Control-flow Enforcement Technology, tilføjer hardwaremekanismer til beskyttelse af kontrolflow, primært skyggestakke (shadow stacks) og sporing af indirekte forgreninger (indirect branch tracking). Hardwaresupport og aktiv beskyttelse i en bestemt proces er forskellige tilstande.

Hvad du behøver at vide

CET, Control-flow Enforcement Technology, tilføjer hardwaremekanismer til beskyttelse af kontrolflow, primært skyggestakke (shadow stacks) og sporing af indirekte forgreninger (indirect branch tracking). Hardwaresupport og aktiv beskyttelse i en bestemt proces er forskellige tilstande.

Sådan virker det

Skyggestakke vedligeholder beskyttet returadressetilstand, mens sporing af indirekte forgreninger begrænser destinationer for sporede indirekte forgreninger. De adresserer forskellige kontrolflowoverførsler og har separat enumerering og aktivering. Operativsystemet, indlæseren, applikationsbinæren og biblioteker deltager i at få et beskyttet eksekveringsmiljø til at fungere.

Hvor det er nyttigt

En passende bygget applikation kan køre med en OS-administreret skyggestak, så en uoverensstemmende returadresse udløser den definerede undtagelse i stedet for lydløst at omdirigere eksekveringen. Kompatibilitetspolitikken kan variere for ældre moduler og for beskyttelse i brugertilstand versus supervisortilstand.

Sådan kontrolleres understøttelse og aktivering

Kontrollér CPUID.07H.00H:ECX bit 7 for skyggestakfunktion og EDX bit 20 for sporing af indirekte forgreninger, og undersøg derefter styresystemets dokumenterede procesbeskyttelsesstatus. En tilgængelig CPU-bit alene kan ikke fastslå håndhævelse for et kørende program.

Kapacitet, aktivering og håndhævelse skal kontrolleres separat. En processor kan understøtte en beskyttelse, mens operativsystemet, applikationen eller den virtuelle maskines politik ikke aktiverer den. Et databaseunderstøttelsesfelt er ikke en attestering af et kørende system.

Hvad funktionen ikke fastslår

Et CET-felt beviser ikke, at begge delfunktioner er til stede eller aktiveret. CET gør ikke en binær fil pålidelig, forhindrer ikke enhver hukommelseskorruptionsfejl og erstatter ikke opdateringer. Global deaktivering af en beskyttelse er ikke en rutinemæssig rettelse af et applikationsnedbrud.

Kompatibilitet og ydeevne i praksis

Hold operativsystem, firmware og det berørte runtime ajour. Hvis en beskyttelse afslører et kompatibilitetsproblem, skal du bruge leverandørens diagnosticering og understøttede opdateringer først. Et bredt skift af beskyttelse kan påvirke urelaterede programmer og bør følge en eksplicit udrulnings- og genopretningspolitik.

En praktisk tjekliste til verifikation

  1. Registrer den nøjagtige processor- eller platformsmodel samt de involverede applikations-, OS- og runtime-versioner. Bevar formuleringen af den faktiske fejl eller det faktiske krav.
  2. Tjek producentreferencen for den nøjagtige model, og undersøg derefter den effektive kapacitet og aktiverede tilstand i det miljø, hvor programmet kører.
  3. Sammenlign ethvert krav for den valgte binære fil eller backend. En funktion med et lignende navn, et alias eller en bred teknologimærkat er ikke tilstrækkelig.
  4. Bekræft, at applikationen har valgt den tilsigtede implementering. Brug dens dokumenterede diagnosticering og et understøttet fallback, når kravene ikke er opfyldt.
  5. Foretag en enkelt understøttet ændring ad gangen, og gentag den samme arbejdsbelastning. Hold den oprindelige konfiguration og gendannelsessti tilgængelig.

Hvis funktionen er anført, men softwaren ikke kan bruge den

Start med den nøjagtige komponent, der fejler. En hardwaredatabase beskriver registreret kapacitet; operativsystemet eller hypervisoren kan udstille et andet effektivt miljø. En illegal-instruction-fejl kræver også undersøgelse af den faktiske fejlbehæftede instruktion og det binære build, fordi korruption eller en urelateret ikke-understøttet instruktion kan frembringe et lignende symptom.

Installer den applikations-, driver- eller runtime-version, der understøttes til den nøjagtige platform, og brug om nødvendigt leverandørens dokumenterede baseline eller fallback-build. En softwareopdatering kan ikke oprette en instruktion, som processoren mangler. Ændringer i firmware og sikkerhedspolitik bør følge systemproducentens procedure og en genopretningsplan frem for en generisk optimeringsopskrift.

Kilder og denne forklaringens omfang

Intel 64 and IA-32 Architectures Software Developer's Manual · Linux-kerne: Control-flow Enforcement Technology shadow stack

Disse referencer fastlægger arkitektonisk adfærd og softwarekrav. De verificerer ikke uafhængigt enhver funktionsværdi på en tilknyttet hardwaremodelside. For modelunderstøttelse skal du bruge den pågældende sides producentdokumentation og kontrollere den effektive systemkonfiguration. Denne artikel leverer ikke et benchmark, en certificering eller en uafhængig revisionsdato.

Kilder og verificering

Redaktionelt ejerskab: Feex. Ingen uafhængig revisionsdato er registreret. Sådan undersøger vi.

Var denne artikel nyttig?

Et ja eller nej er nok. Vælg en grund, hvis du vil, eller tilføj en kort bemærkning.

Var denne artikel nyttig?