Π”Π²Π΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСдсказания ΠΊΠ°Π½Π°Π»ΠΎΠ² кэша Π² процСссорах AMD

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· Грацского тСхничСского унивСрситСта (Австрия), Ρ€Π°Π½Π΅Π΅ извСстная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Ρ‚Π°ΠΊ MDS, NetSpectre, Throwhammer ΠΈ ZombieLoad, ΠΏΡ€ΠΎΠ²Π΅Π»Π° исслСдованиС спСцифичных для процСссоров AMD Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π°Ρ‚Π°ΠΊ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° прСдсказания ΠΊΠ°Π½Π°Π»ΠΎΠ² кэша ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня процСссоров AMD. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для сниТСния эффСктивности Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ASLR, восстановлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² уязвимых рСализациях AES ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности Π°Ρ‚Π°ΠΊΠΈ Spectre.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ выявлСны Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° прСдсказания ΠΊΠ°Π½Π°Π»Π° (way predictor) Π² кэшС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня CPU (L1D), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для прСдсказания Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ кэша ΠΎΡ‚Ρ€Π°ΠΆΡ‘Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ адрСс памяти. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ Π² процСссорах AMD оптимизация основываСтся Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ μ-Ρ‚Π΅Π³ΠΎΠ² (μTag). μTag вычисляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ спСцифичной Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу. Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСдсказания ΠΊΠ°Π½Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ μTag для опрСдСлСния ΠΊΠ°Π½Π°Π»Π° кэша ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, μTag позволяСт процСссору ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ, Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ сущСствСнно сниТаСт ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ энСргии CPU.

Π”Π²Π΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСдсказания ΠΊΠ°Π½Π°Π»ΠΎΠ² кэша Π² процСссорах AMD

Π’ Ρ…ΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы прСдсказания ΠΊΠ°Π½Π°Π»Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… поколСниях процСссоров AMD, выпускаСмых с 2011 ΠΏΠΎ 2019 Π³ΠΎΠ΄, выявлСны Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π°Ρ‚Π°ΠΊ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ:

  • Collide+Probe — Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти для процСссов, выполняСмых Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ логичСском ядрС CPU. Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² использовании Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Ρ…ΡΡˆ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, примСняСмой для вычислСния μTag, для отслСТивания доступа ΠΊ памяти. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Flush+Reload ΠΈ Prime+Probe, примСняСмых Π½Π° процСссорах Intel, Collide+Probe Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· знания физичСских адрСсов.
  • Load+Reload — позволяСт ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ слСды доступа ΠΊ памяти Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ физичСском ядрС CPU. ΠœΠ΅Ρ‚ΠΎΠ΄ основываСтся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ячСйка физичСской памяти ΠΌΠΎΠΆΠ΅Ρ‚ находится Π² кэшС L1D Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π’.Π΅. доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ячСйкС памяти ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²Ρ‹Ρ‚Π΅ΡΠ½Π΅Π½ΠΈΡŽ ячСйки ΠΈΠ· кэша L1D, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ доступ ΠΊ памяти. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ° зависит ΠΎΡ‚ раздСляСмой памяти, ΠΎΠ½Π° Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сбросу Π»ΠΈΠ½ΠΈΠΉ кэша, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ провСдСния скрытых Π°Ρ‚Π°ΠΊ, Π½Π΅ Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· кэша послСднСго уровня.

На основС Ρ‚Π΅Ρ…Π½ΠΈΠΊ Collide+Probe ΠΈ Load+Reload исслСдоватСлями продСмонстрировано нСсколько сцСнариСв Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ:

  • Показана Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ скрытого косвСнного ΠΊΠ°Π½Π°Π»Π° связи ΠΌΠ΅ΠΆΠ΄Ρƒ двумя процСссами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° скорости Π΄ΠΎ 588 ΠΊB Π² сСкунду.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π² μTag ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ сокращСния энтропии для Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ASLR (Address Space Layout Randomization) ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ASLR Π² ядрС Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠΉ Linux-систСмС. Показана Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎ сниТСнию энтропии ASLR ΠΊΠ°ΠΊ ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ выполняСмого Π² sandbox-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ JavaScript-ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ΄Π°, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ гостСвом ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ.

    Π”Π²Π΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСдсказания ΠΊΠ°Π½Π°Π»ΠΎΠ² кэша Π² процСссорах AMD

  • На Π±Π°Π·Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Collide+Probe Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π°Ρ‚Π°ΠΊΠ° ΠΏΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· уязвимой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π° основС T-table) ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES.
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Collide+Probe Π² качСствС ΠΊΠ°Π½Π°Π»Π° для получСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ…ΠΎΠ΄Π΅ Π°Ρ‚Π°ΠΊΠΈ Spectre ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ядра, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся Π½Π° процСссорах AMD Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€
Bulldozer, Piledriver, Steamroller, Zen (Ryzen, Epic), Zen+ ΠΈ Zen2.
Компания AMD Π±Ρ‹Π»Π° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Π° ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ 23 августа 2019 Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ выпустила ΠΎΡ‚Ρ‡Ρ‘Ρ‚ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ уязвимости. По Π΄Π°Π½Π½Ρ‹ΠΌ исслСдоватСлСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ обновлСния ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· прСдоставлСниС MSR-Π±ΠΈΡ‚ΠΎΠ² для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ систСмы прСдсказания ΠΊΠ°Π½Π°Π»Π°, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ поступила компания Intel для управлСния ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ².

Π”Π²Π΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСдсказания ΠΊΠ°Π½Π°Π»ΠΎΠ² кэша Π² процСссорах AMD

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru