Afhankelijkheid van de uitvoeringstijd van instructies van gegevens op ARM- en Intel-CPU's

Eric Biggers, een van de ontwikkelaars van de Adiantum cipher en beheerder van het Linux-kernel fscrypt-subsysteem, stelde een reeks patches voor om beveiligingsproblemen te blokkeren die voortkomen uit een functie van Intel-processors die geen constante uitvoeringstijden garandeert voor verschillende verwerkte gegevens. Het probleem doet zich voor bij Intel-processors, te beginnen met de Ice Lake-familie. Een soortgelijk probleem wordt waargenomen bij ARM-processors.

De aanwezigheid van een afhankelijkheid van de uitvoeringstijd van instructies van de gegevens die in deze instructies worden verwerkt, wordt door de auteur van de patches beschouwd als een kwetsbaarheid in processors, aangezien dergelijk gedrag de veiligheid van cryptografische bewerkingen die in het systeem worden uitgevoerd niet kan garanderen. Veel implementaties van cryptografische algoritmen zijn ontworpen om ervoor te zorgen dat gegevens de uitvoeringstijd van instructies niet beïnvloeden, en het overtreden van dit gedrag kan leiden tot het creëren van zijkanaalaanvallen die gegevens herstellen op basis van analyse van de verwerkingstijd.

Mogelijk kan de afhankelijkheid van runtimegegevens ook worden gebruikt om aanvallen uit te voeren om kernelgegevens uit de gebruikersruimte te bepalen. Volgens Eric Biggers wordt er standaard geen constante uitvoeringstijd geboden, zelfs niet voor instructies die optel- en XOR-bewerkingen uitvoeren, en ook niet voor gespecialiseerde AES-NI-instructies (informatie die niet door tests wordt bevestigd, volgens andere gegevens is er een vertraging van één cyclus tijdens vectorvermenigvuldiging en bittelling).

Om dit gedrag uit te schakelen, hebben Intel en ARM nieuwe vlaggen voorgesteld: PSTATE bit DIT (Data Independent Timing) voor ARM CPU's en MSR bit DOITM (Data Operand Independent Timing Mode) voor Intel CPU's, waardoor het oude gedrag met constante uitvoeringstijd wordt geretourneerd. Intel en ARM raden aan om indien nodig bescherming in te schakelen voor kritieke code, maar in werkelijkheid kunnen kritische berekeningen overal in de kernel en de gebruikersruimte plaatsvinden. Daarom overwegen we om de DOITM- en DIT-modi te allen tijde in te schakelen voor de hele kernel.

Voor ARM-processors heeft de kerneltak van Linux 6.2 al patches aangenomen die het gedrag van de kernel veranderen, maar deze patches worden als onvoldoende beschouwd omdat ze alleen de kernelcode bestrijken en het gedrag van de gebruikersruimte niet veranderen. Voor Intel-processors bevindt de opname van bescherming zich momenteel nog maar in de beoordelingsfase. De impact van de patch op de prestaties is nog niet gemeten, maar volgens Intel-documentatie vermindert het inschakelen van de DOITM-modus de prestaties (bijvoorbeeld door bepaalde optimalisaties uit te schakelen, zoals gegevensspecifiek vooraf laden) en in toekomstige processormodellen kan de prestatievermindering toenemen .

Bron: opennet.ru

Voeg een reactie