Avhengighet av instruksjonsutførelsestid på data på ARM og Intel CPUer

Eric Biggers, en av utviklerne av Adiantum-chifferet og en vedlikeholder av Linux-kjernen fscrypt-undersystemet, foreslo et sett med patcher for å blokkere sikkerhetsproblemer som oppstår fra en funksjon i Intel-prosessorer som ikke garanterer konstante utførelsestider for forskjellige behandlede data. Problemet dukker opp i Intel-prosessorer som starter med Ice Lake-familien. Et lignende problem er observert i ARM-prosessorer.

Tilstedeværelsen av en avhengighet av utførelsestiden for instruksjoner på dataene som behandles i disse instruksjonene anses av forfatteren av oppdateringene som en sårbarhet i prosessorer, siden slik oppførsel ikke kan garantere sikkerheten til kryptografiske operasjoner utført i systemet. Mange implementeringer av kryptografiske algoritmer er designet for å sikre at data ikke påvirker utførelsestiden for instruksjoner, og brudd på denne atferden kan føre til opprettelse av sidekanalangrep som gjenoppretter data basert på analyse av behandlingstiden.

Potensielt kan kjøretidsdataavhengighet også brukes til å starte angrep for å bestemme kjernedata fra brukerområdet. I følge Eric Biggers er konstant utførelsestid ikke gitt som standard selv for instruksjoner som utfører tilleggs- og XOR-operasjoner, så vel som for spesialiserte AES-NI-instruksjoner (informasjon som ikke er bekreftet av tester, ifølge andre data er det en forsinkelse på en syklus under vektormultiplikasjon og bittelling).

For å deaktivere denne oppførselen har Intel og ARM foreslått nye flagg: PSTATE bit DIT (Data Independent Timing) for ARM CPUer og MSR bit DOITM (Data Operand Independent Timing Mode) for Intel CPUer, og returnerer den gamle oppførselen med konstant utførelsestid. Intel og ARM anbefaler å aktivere beskyttelse etter behov for kritisk kode, men i virkeligheten kan kritisk beregning forekomme hvor som helst i kjernen og brukerområdet, så vi vurderer å aktivere DOITM- og DIT-moduser for hele kjernen til enhver tid.

For ARM-prosessorer har Linux 6.2-kjernegrenen allerede tatt i bruk oppdateringer som endrer oppførselen for kjernen, men disse oppdateringene anses som utilstrekkelige siden de kun dekker kjernekoden og ikke endrer oppførselen for brukerområdet. For Intel-prosessorer er inkluderingen av beskyttelse foreløpig bare på gjennomgangsstadiet. Effekten av oppdateringen på ytelsen er ennå ikke målt, men i henhold til Intel-dokumentasjonen vil aktivering av DOITM-modus redusere ytelsen (for eksempel ved å deaktivere enkelte optimaliseringer, for eksempel dataspesifikk forhåndsinnlasting), og i fremtidige prosessormodeller kan ytelsesreduksjonen øke .

Kilde: opennet.ru

Legg til en kommentar