Π Π°Π·ΠΊΡΠΈΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π½ΠΎΠ²Π° Π°ΡΠ°ΠΊΠ° ΡΡΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Intel β AEPIC Leak (CVE-2022-21233), ΠΊΠΎΡΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ Π°Π½ΠΊΠ»Π°Π²ΠΈ Intel SGX (Software Guard eXtensions). ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π·Π°ΡΡΠ³Π° 10, 11 ΠΈ 12 ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ CPU Intel (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΈ Ice Lake ΠΈ Alder Lake) ΠΈ Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½Π° Π½Π΅Π΄ΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅ APIC (Advanced Programmable Interrupt Controller) ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π°ΡΠ°ΠΊΠΈΡΠ΅ ΠΎΡ ΠΊΠ»Π°Ρ Spectre, ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π² AEPIC Leak ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π±Π΅Π· ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΏΡΠ΅Π· ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ β ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΠ΅Π· ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅, ΠΎΡΡΠ°Π·Π΅Π½ΠΈ Π² ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° MMIO (memory-mapped I/O). Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π°Π²Π°Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ΅ΡΠΎΠ²Π΅ΡΠ΅ Π½Π° Π²ΡΠΎΡΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅ ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π½Π° ΡΡΡΠΎΡΠΎ ΡΠ΄ΡΠΎ Π½Π° CPU.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ Π½Π° APIC MMIO, Ρ.Π΅. ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈ ΠΏΡΠ°Π²Π°, ΠΌΠ΅ΡΠΎΠ΄ΡΡ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ Π°ΡΠ°ΠΊΠ° ΡΡΠ΅ΡΡ SGX Π΅Π½ΠΊΠ»Π°Π²ΠΈ, Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ Π½ΡΠΌΠ° ΠΏΡΡΠΊ Π΄ΠΎΡΡΡΠΏ. ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈΡΠ΅ Π² SGX AES-NI ΠΈ RSA ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π½Π° Intel SGX ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠΈΡΠ»Π°. ΠΠΎΠ΄ΡΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π² GitHub.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Intel ΠΎΠ±ΡΠ²ΠΈ, ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Ρ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠΈΡΠ΅ ΠΈ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠ΅ΡΠΊΠΈ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° Π΅Π½ΠΊΠ»Π°Π²ΠΈΡΠ΅. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° SDK Π·Π° Intel SGX ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Ρ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Ρ
ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠΈ Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ xAPIC, ΡΠ΅ΠΆΠΈΠΌ x2APIC, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ΅ Π½Π° APIC Π²ΠΌΠ΅ΡΡΠΎ MMIO ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ MSR-ΡΠ΅Π³ΠΈΡΡΡΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
