Beroende av instruktionsexekveringstiden på data på ARM- och Intel-processorer

Eric Biggers, en av utvecklarna av Adiantum-chifferet och en underhållare av Linux-kärnan fscrypt-undersystemet, föreslog en uppsättning patchar för att blockera säkerhetsproblem som härrör från en funktion hos Intel-processorer som inte garanterar konstanta exekveringstider för olika bearbetade data. Problemet dyker upp i Intel-processorer som börjar med Ice Lake-familjen. Ett liknande problem observeras i ARM-processorer.

Förekomsten av ett beroende av exekveringstiden för instruktioner på data som behandlas i dessa instruktioner betraktas av författaren till patchar som en sårbarhet hos processorer, eftersom ett sådant beteende inte kan garantera säkerheten för kryptografiska operationer som utförs i systemet. Många implementeringar av kryptografiska algoritmer är utformade för att säkerställa att data inte påverkar exekveringstiden för instruktioner, och att bryta mot detta beteende kan leda till skapandet av sidokanalattacker som återställer data baserat på analys av dess behandlingstid.

Potentiellt kan runtime-databeroende också användas för att starta attacker för att fastställa kärndata från användarutrymmet. Enligt Eric Biggers tillhandahålls inte konstant exekveringstid som standard även för instruktioner som utför tilläggs- och XOR-operationer, såväl som för specialiserade AES-NI-instruktioner (information som inte bekräftas av tester, enligt andra data finns det en fördröjning på en cykel under vektormultiplikation och biträkning).

För att inaktivera detta beteende har Intel och ARM föreslagit nya flaggor: PSTATE-bit DIT (Data Oberoende Timing) för ARM-processorer och MSR-bit DOITM (Data Operand Independent Timing Mode) för Intel-processorer, vilket returnerar det gamla beteendet med konstant körningstid. Intel och ARM rekommenderar att man aktiverar skydd vid behov för kritisk kod, men i verkligheten kan kritisk beräkning ske var som helst i kärnan och användarutrymmet, så vi överväger att alltid aktivera DOITM- och DIT-lägen för hela kärnan.

För ARM-processorer har Linux 6.2-kärngrenen redan antagit patchar som ändrar beteendet för kärnan, men dessa patchar anses vara otillräckliga eftersom de bara täcker kärnkoden och inte ändrar beteendet för användarutrymmet. För Intel-processorer är införandet av skydd fortfarande på granskningsstadiet. Effekten av patchen på prestanda har ännu inte mätts, men enligt Intels dokumentation minskar aktivering av DOITM-läge prestanda (till exempel genom att inaktivera vissa optimeringar, såsom dataspecifik förladdning) och i framtida processormodeller kan prestandaminskningen öka .

Källa: opennet.ru

Lägg en kommentar