Hoppa till innehåll

Control-flow Enforcement (CET)

ArkitekturreferensFeex

Kallas även CET

CET, Control-flow Enforcement Technology, lägger till hårdvarumekanismer för att skydda kontrollflödet, främst skuggstackar och spårning av indirekta förgreningar. Hårdvarustöd och aktivt skydd i en viss process är olika tillstånd.

Vad du behöver veta

CET, Control-flow Enforcement Technology, lägger till hårdvarumekanismer för att skydda kontrollflödet, främst skuggstackar och spårning av indirekta förgreningar. Hårdvarustöd och aktivt skydd i en viss process är olika tillstånd.

Hur det fungerar

Skuggstackar upprätthåller skyddat returadresstillstånd, medan spårning av indirekta förgreningar begränsar målen för spårade indirekta förgreningar. De hanterar olika kontrollflödesöverföringar och har separat enumerering och aktivering. Operativsystemet, laddaren, applikationsbinären och biblioteken deltar alla i att få en skyddad exekveringsmiljö att fungera.

Där den är användbar

En lämpligt byggd applikation kan köras med en OS-hanterad skuggstack så att en felmatchad returadress utlöser det definierade undantaget snarare än att tyst omdirigera exekveringen. Kompatibilitetspolicyn kan skilja sig för äldre moduler samt skydd i användarläge kontra övervakar须知läge.

Hur man kontrollerar stöd och aktivering

Kontrollera CPUID.07H.00H:ECX bit 7 för skuggstackskapacitet och EDX bit 20 för spårning av indirekta förgreningar, och inspektera sedan operativsystemets dokumenterade processkyddsstatus. En tillgänglig CPU-bit i sig kan inte fastställa upprätthållande för ett program som körs.

Kapacitet, aktivering och tillämpning måste kontrolleras separat. En processor kan stödja ett skydd medan operativsystemet, applikationen eller policyn för virtuella maskiner inte aktiverar det. Ett stödfält i en databas är inte en attestering av ett körande system.

Vad funktionen inte fastställer

Ett CET-fält bevisar inte att båda delfunktionerna är närvarande eller aktiverade. CET gör inte en binär pålitlig, förhindrar inte varje minneskorruptionsbugg och ersätter inte uppdateringar. Att inaktivera ett skydd globalt är inte en rutinmässig lösning för en applikationskrasch.

Kompatibilitet och prestanda i praktiken

Håll operativsystem, firmware och berörd runtime uppdaterade. Om ett skydd blottar ett kompatibilitetsproblem, använd tillverkarens diagnostik och uppdateringar som stöds först. En övergripande aktivering av skydd kan påverka orelaterade applikationer och bör följa en uttrycklig distributions- och återställningspolicy.

En praktisk checklista för verifiering

  1. Registrera den exakta processor- eller plattformsmodellen samt de applikations-, OS- och runtime-versioner som berörs. Behåll formuleringen av det faktiska felet eller kravet.
  2. Kontrollera tillverkarens referens för den exakta modellen och granska sedan den faktiska kapaciteten och det aktiverade tillståndet i miljön där programmet körs.
  3. Jämför varje krav för den valda binären eller renderingsmotorn. En snarlikt namngiven funktion, ett alias eller en bred teknikbeteckning räcker inte.
  4. Bekräfta att applikationen har valt den avsedda implementeringen. Använd dess dokumenterade diagnostik och en reservlösning som stöds när kraven inte uppfylls.
  5. Gör en ändring som stöds i taget och upprepa samma arbetsbelastning. Håll den ursprungliga konfigurationen och återställningsvägen tillgängliga.

Om funktionen är listad men programvaran inte kan använda den

Börja med den exakta komponenten som fallerar. En hårdvarudatabas beskriver registrerad kapacitet; operativsystemet eller hypervisorn kan exponera en annan faktisk miljö. Ett fel om otillåten instruktion kräver också undersökning av den faktiska felande instruktionen och binärbygget, eftersom korruption eller en orelaterad instruktion utan stöd kan ge ett liknande symptom.

Installera den version av applikationen, drivrutinen eller runtime-miljön som stöds för den exakta plattformen, och använd vid behov tillverkarens dokumenterade baslinje eller reservbygge. En programvaruuppdatering kan inte skapa en instruktion som processorn saknar. Ändringar i firmware och säkerhetspolicy bör följa systemtillverkarens procedur och en återställningsplan snarare än ett generiskt optimeringsrecept.

Källor och omfattning för denna förklaring

Intel 64 and IA-32 Architectures Software Developer's Manual · Linuxkärnan: Control-flow Enforcement Technology-skuggstack

Dessa referenser fastställer arkitektoniskt beteende och programvarukrav. De verifierar inte oberoende varje funktionsvärde på en länkad hårdvarumodellsida. För modellstöd, använd den sidans tillverkarbelägg och kontrollera den effektiva systemkonfigurationen. Denna artikel tillhandahåller inte ett prestandatest, en certifiering eller ett oberoende granskningsdatum.

Källor och verifiering

Redaktionellt ägarskap: Feex. Inget oberoende granskningsdatum har registrerats. Hur vi efterforskar.

Var denna artikel användbar?

Ett ja eller nej räcker. Välj en anledning om du vill, eller lägg till en kort anteckning.

Var denna artikel användbar?