Атака TSA, приводящая ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… структур CPU AMD

Компания AMD раскрыла ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½ΠΎΠ²ΠΎΠΌ классС ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Π°Ρ‚Π°ΠΊ Π½Π° свои процСссоры β€” TSA (Transient Scheduler Attack). Атака позволяСт Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ изоляции CPU ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… контСкстах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра, ΠΈΠ»ΠΈ ΠΈΠ· гостСвой систСмы ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ гостСвой систСмС.

Уязвимости выявлСны Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ инструмСнтария, созданного исслСдоватСлями ΠΈΠ· Microsoft ΠΈ ШвСйцарской Π²Ρ‹ΡΡˆΠ΅ΠΉ тСхничСской ΡˆΠΊΠΎΠ»Ρ‹ Π¦ΡŽΡ€ΠΈΡ…Π° для стрСсс-тСстирования ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ изоляции ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π·ΠΎΠ½Π°ΠΌΠΈ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ доступа, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ядро, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ процСссы.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΈ основан Π½Π° зависимости Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструкций ΠΎΡ‚ состояния ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΊΡ€Π½Ρ‹Ρ… структур. Когда процСссор ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ быстрого Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ инструкции чтСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, полагая, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² кэшС L1), Π½ΠΎ Π½Π΅ удаётся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ состояниС Β«Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΒ» инструкции (false completion). ΠŸΡ€ΠΈ этом процСссор Π΅Ρ‰Ρ‘ Π΄ΠΎ опрСдСлСния этого состояния ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, зависящих ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния инструкции Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ· памяти.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° оказалась Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, ассоциированныС с Π½Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΡŽΡ‚ΡΡ процСссором Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π° опСрация Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ повторяСтся Π΅Ρ‰Ρ‘ Ρ€Π°Π·. ЗависимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ послС готовности ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ этом сброс ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° (pipeline flush) послС выполнСния инструкции, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ зафиксировано состояниС Β«Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΒ», Π½Π΅ производится, ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π² зависимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ мСняСт состояниС кэша ΠΈ TLB (Translation Lookaside Buffer), Ρ‚.Π΅. Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ восстановлСны ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСлСния состояния кэша. Но эти Π΄Π°Π½Π½Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° врСмя выполнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… инструкций. Анализ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ источник ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… структур, ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ послС спСкулятивного выполнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’ зависимости ΠΎΡ‚ источника извлСчСния остаточных Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π²Π΅ уязвимости:

  • CVE-2024-36350 (TSA-SQ β€” TSA Store Queue) β€” ΡƒΡ‚Π΅Ρ‡ΠΊΠ° ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи (Store Queue), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ инструкций записи Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ.
  • CVE-2024-36357 (TSA-L1 β€” TSA L1 Data Cache) β€” ΡƒΡ‚Π΅Ρ‡ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· кэш L1D.

Уязвимости ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² сСмСйствС процСссоров AMD (Fam19h) Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Zen 3 ΠΈ Zen 4. НапримСр, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° присутствуСт Π² сСриях CPU AMD Ryzen 5000/6000/7000/8000, AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena, AMD Instinct MI300A, AMD Ryzen Threadripper PRO 7000 WX, AMD EPYC Embedded 7003/8004/9004/97X4, AMD Ryzen Embedded 5000/7000/V3000.

НСобходимыС для блокирования уязвимости измСнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² состав Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒΡΠΊΠΎΠ³ΠΎ обновлСния ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π° ΠΈ PI-ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ (Platform Initialization), ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… OEM-производитСлям. ΠŸΠ°Ρ‚Ρ‡ΠΈ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимости ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² состав ядра Linux (для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΡŽΡ‰Π΅ΠΉ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, прСдусмотрСна опция ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ядра Β«tsa=offΒ»). Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ Xen. Для блокирования уязвимости трСбуСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра ΠΈΠ»ΠΈ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ