Времевата зависимост на изпълнението на инструкции от данни в CPU ARM и Intel

Ерик Бигърс (Eric Biggers), един от разработчиците на шифъра Adiantum и поддръжник на подсистемата на ядрото Linux fscrypt, предложи набор от пачове за решаване на проблеми със сигурността, произтичащи от особеностите на процесорите Intel, които не гарантират постоянно време на изпълнение на инструкциите за различни обрабатывани данни. Проблемът при Intel процесорите се проявява от семейството Ice Lake. Подобен проблем се наблюдава и при ARM процесорите.

Наличието на зависимостта на времето за изпълнение на инструкциите от данните, обработвани в тези инструкции, се счита от автора на пачовете за уязвимост в процесорите, тъй като такова поведение не може да гарантира безопасността на извършваните криптографски операции в системата. Много реализации на криптографски алгоритми се основават на предпоставката, че данните не влияят на времето за изпълнение на инструкциите и нарушаването на това поведение може да доведе до атаки чрез странични канали, възстановяващи данни на база анализа на времето за тяхната обработка.

Потенциално зависимостта на времето за изпълнение от данни също може да се използва за организиране на атаки за определяне на данни в ядрото от потребителското пространство. Според Ерик Бигърс, постоянното време на изпълнение по подразбиране не се осигурява дори за инструкции, извършващи операции на събиране и XOR, както и за специализирани инструкции AES-NI (информацията не е потвърдена от тестове, а според други данни, забавянето при умножение на вектори и броене на битове възниква за един цикъл).

За деактивиране на разглежданото поведение компаниите Intel и ARM предложиха нови флагове: PSTATE-бит DIT (Data Independent Timing) за CPU ARM и MSR-бит DOITM (Data Operand Independent Timing Mode) за CPU Intel, които възстановяват старото поведение с постоянно време на изпълнение. Компаниите Intel и ARM препоръчват включване на защита при необходимост за особено важен код, но на практика важни изчисления могат да се срещат в произволни участъци на ядрото и потребителското пространство, поради което се разглежда възможността за постоянно активиране на режимите DOITM и DIT за цялото ядро.

За процесорите ARM в ядрото на Linux 6.2 вече са приети пачове, които променят поведението на ядрото, но тези пачове се считат за недостатъчни, тъй като обхващат само кода на ядрото и не променят поведението за потребителското пространство. За процесорите Intel активирането на защитата е само в стадия на преглед. Не е извършвано измерване на влиянието на пача върху производителността, но според документацията на Intel активирането на режима DOITM намалява производителността (например, поради деактивиране на някои оптимизации, специфични за определени данни), а в бъдещите модели на процесорите намалението на производителността може да се засили.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster